Criterion D

Solution Presentation – INDIVIDUAL

Present your completed and fully functional program as a screencast to show all features of the solution.

Screencast Requirements:

  1. 5-7 minutes
  2. Brief project Introduction
  3. Did you complete the code, did you make changes?
  4. Any extra add-ons/extensions added?
  5. Mention resources used.
  6. Each spec’s test plan is performed on the screencast. **important**

Evaluation and Possible Improvements/Possible Extensions to the solution (300-500 words) – INDIVIDUAL

First, make conclusions that identify strengths and weaknesses of the solution and explain how well have you met the challenge.

After an objective evaluation of your solution, you should have identified weaknesses in the solution. If you were to approach this problem again what changes you would make in either your process, research, approach, or code? These weaknesses provide opportunities for further development and allow you to consider how you would refine your solution further.

You can record the improvements in several ways:

  • written text – paragraphs or tables
  • diagrams and charts
  • annotated photographs/screenshots of the prototype
  • sketches

Impact of programming and positive education on learning (300-500 words) – INDIVIDUAL

  1. Reflect on how learning of Python has helped you meet the challenge. 
  2. Reflect on your own effort and initiative in meeting this challenge.
  3. What could improve this project?
  4. Giving specific examples (minimum five), explain how positive education traits embedded in the classroom impacted your learning and interactions.

Here is a couple of examples of positive education traits and their corresponding reflections:

Example 1

Self management

Since this is an individual project and takes a few weeks to complete with holidays in between, I have to make sure I am following my plan and not procrastinate until the last minute. This will affect my attitude and work quality. Therefore I have to be self-reliant and diligent, finish most of the work when I have time in order to relieve stress towards the deadline.

Taking initiative/ love of learning

As using the graphics library is a new topic for me, I have learnt to take initiative when I encounter problems, whether it is doing independent research or reaching out to teachers or peers. This decreases the amount of wasted time and make sure I am on the right track.

Resilience and perseverance

I have faced different types of challenges along the way, from small bugs to logical errors, I have learnt to cope with it appropriately and learn from my mistakes. For example making sure that I don’t have any careless spelling mistakes or running the logic in my head twice before coding, Moreover, I have learnt to not feel discouraged when I am stuck at a problem, if so, I would take a break before coding again. The break can relief any pressure and probably come up with the solution afterwards.

Critical thinking

While writing the algorithm or coding, I have learnt to break the problem into smaller parts and think like the computer, step by step. This can prevent myself from making logical errors and allowing me to tackle the problem efficiently. I have learnt to use the methods effectively to shorten the code, or discover new techniques that can help.

Creativity

While thinking of extensions, I became more creative in terms of how to think outside the box to make my game more unique. I started off researching on existing products as inspiration, then added my own ideas. For example the obstacle that I added and asking players for their names. Coding is not only logic based, but also requires creativity since it challenges me to solve the problem in a different way and create unique products.

Example 2

  1. Growth mindset – 

Example: When I was trying to get my snake to move after an arrow key is pressed, I kept encountering problems. At one point, my snake was moving diagonally and in weird shapes! I was frustrated but tried to stay optimistic and adopt the growth mindset. I told myself that although I wasn’t able to figure this out right now, I would soon be able to with just a little more hard work. I reminded myself that I was able to complete the previous Java project, even though I faced many failures then. This mindset helped me motivate myself to persevere and helped me gain more self-confidence.

  1. Self-reliance – 

This trait helped me learn to rely on myself and gain more confidence in my coding skills. Usually, I was able to find a solution to problems on my own, which felt very rewarding!

Example 1: 

In the beginning, my pink canvas wasn’t being displayed after running the code. Instead of immediately asking a peer to help, I persevered on my own and continued researching GCanvases to see what my method was missing. Eventually, I figured out by myself that using the getGCanvas() function works.

Example 2:

When setting the ball to a random position on the canvas, I was initially stuck as I hadn’t never generated a random integer before and the methods I found on two websites to do this step were not working for me. However, instead of asking others for help, I decided to keep trying and kept researching. The third website I found mentioned the Math.random() function, which eventually worked for me! 

  1. Failure as part of the learning process – 

I encountered many “small failures” during this project. However, this trait helped me view them as learning opportunities and motivated me to persevere and overcome them!

Example 1: One small failure was that when trying to get the snake to move, the program wasn’t detecting the arrow keys. However, I remained optimistic and soon realized that it was because I hadn’t manually started my timer! I viewed this obstacle as a learning opportunity, as it taught me about timers, how they work and their importance in an animated game!

Example 2: Another small failure was that my intersectsWithSnake method would always detect that the snake was intersecting with itself and immediately end the game right when it started. However, I saw this problem as another learning opportunity and persevered. Solving this problem taught me the difference between using getBounds and getX/getY when checking if the snake intersected with itself.