The first part of this class has been an interesting journey. The last programming course I took was during my first semester here at UNC. Since then, I have dabbled in some programming but nothing too complex. My previous knowledge helped me tremendously in this class. Although the programming languages are different (my COMP 110 class was in JavaScript), the concepts are the same. Through this class, I’ve learned that for a concept to really stick, I need a lot of time and practice. One of the frustrating things that I’ve always found about programming is transferring my thoughts to code. A lot of this comes from my general confidence in writing code. I hope to continue improving upon writing python without having to look at examples all the time.
Something that I’ve enjoyed is the creative nature of the Turtle exercises. With these exercises I have been able to use the knowledge that I gain in class in addition to my own ideas to create pretty neat programs. For example, in the logical turtle exercise I was able to use simple if/else statements to make something that took in user input and customize the output for each user. Although the concept of if/else statements are simple, I was able to use it in a way that if a person with little or no knowledge of python were to use it, they would be intrigued by it.
One of the things that I’ve learned up to this point is that sometimes the ideas that I have are not currently in my capacity as a programmer. With a couple of the turtle exercises, I have had to rethink my original plans to fit my knowledge of python. For example, in my Clicky turtle program I had originally wanted to create something similar to the Mole in the Hole game where the user had to click on the turtles before they disappeared. I ended up making something different because I was unsure on how to do certain things with my original idea. Here is what I did:
Now, going back to my original idea of the mole in the hole game, or turtle in the hole game, I would need to assign stamps to random x and y coordinates and then put a timer on those stamps. The part that I struggled with initially was how the program would know if the user clicked on stamp or not. I think I could have done this by possibly creating if statements. So, if clicky x and y coordinates were within a range of 5 to the x and y of the random turtle stamps then they would receive a point/win. Hopefully this is a program that I can come back to later and have a completed plan to execute my original idea.
When doing the assigned exercises, I have tried to keep in mind the problem solving attitudes that we talked about in class. The one that I use most often is being self-aware. Taking a step back from problems that I am stuck on has proven to be useful. Most of the time it’s the simple things that I overlook that end up creating errors within the program. A problem solving attitude that I struggled with in the beginning of the class was my determination. Being uncertain on how to do something is an insecurity that comes when learning a new language. I feel like I have improved upon this aspect of myself because I have learned to write out all the goals that I need to accomplish and go through them one by one until the task is completed.
Something new that was introduced to me in this class was the partner collaboration. In my previous programming class, there were over a hundred students and it was taught lecture style. There was little room to collaborate with others. Being able to collaborate with others has been beneficial. Collaborating and pair programming have given me some practice with what it’ll be like in the real world. Through these types of exercises, I have been able to learn from others and get their view on how to solve certain problems. This is useful because I can use some of the techniques that I learn from others to tackle future problems that I may encounter. For instance, in my first pair programming experience, I was able to work with Jay. Jay had more coding experience than me and handled the questions without hesitation. He went for it with confidence and tried to complete the task. The ability to tackle problems without hesitation is something that I hope to retain. Here is an exercise that we worked on together. In this exercise, we had to take the words from a file, create a list, and add any new words. Finally we had to put that list in alphabetical order. When doing this exercise, we got it so each word was printed on a new line. This was not the exact format that we needed our final output to be. In this case, we did extra work by making it so that each word was on a new line. We eventually got it so that it printed all the words in one block.
With all that being said, I think that this first half of the class has taught me to take everything step by step and be confident in my abilities. With continuous practice and effort put into the exercises, I can become a great programmer. In the second half of the semester, I hope to continue learning more python and become an efficient programmer. One of my goals is to code more off the cuff instead of looking at example code. Something that I am looking forward to are the projects that are coming up in the next few weeks.