As a freshman college student who had no prior programming experience before college, learning a programming language was a tough challenge for me.
As a noob placed in a computer science class mixed with experienced and non-experienced programmers, I mimicked my class’ overall programming style: typing code, checking errors through compiling the program, and revising the code until the program works.
Essentially, I was mindlessly programming.
That method of programming led me to confusion and frustration. Not only was I heavily dependent on the compiler to identify errors, but I could neither trace my own code nor understand code written by other programmers. Looking at long lines of multicolored code on computer screens became a sore to my eyes. Countless hours were spent debugging and, unintentionally, creating new bugs.
Looking at long lines of multicolored code on computer screens became a sore to my eyes. Countless hours were spent debugging and, unintentionally, creating new bugs. Old concepts were occasionally forgotten, and new concepts became increasingly difficult to understand.
I would attend lectures in hopes of grasping a better understanding of what I learned from the readings and getting hints on how to tackle the upcoming programming assignments. The professor not only summarized the assigned readings, but he ignored questions and comments that “can be answered by the textbook.”
Because our class’ textbook (zyBooks) is designed for students to complete interactive activities while compiling their programs within the textbook, I relied on the textbook’s built-in compiler just like how I relied on the compiler in my Cloud 9 workspace.
When I finally flunked the exam, I was handicapped at a grade lower than my overall class grade and my seat for the succeeding computer science course was dropped.
On the brightside, I was able to reflect on how I have been studying for computer science during the break that followed exam week. As soon as I realized that the A’s that I have been receiving on programming assignments were not reflective of how efficiently I can write code, I began to wonder to myself: “How can I train myself to become a human compiler?”
Since the exams for computer science were taken on paper and without the help of a compiler, I decided to revisit all of the previous chapters I read and recomplete all of my programming assignments on paper. Also, as I was doing those things, I made it a goal for myself to create successful programs within at most ten tries.
By the time the new quarter began, I was able to train my brain to predict the result of my programs. Determining the type of errors produced by my programs and writing the simplest codes to solve complex problems became a breeze to me.
I saved all of my written programming notes in a binder so that I can see my thought process as I was trying to meet the program specifications, review mistakes I need to avoid, and write comments for each line of code.
Along with those written notes are all the programs I saved in my Cloud 9 workspace. For every program that I created on paper first, I would type them out in Cloud 9, compile them, add comments to lines that had errors that I failed to see, and duplicate a copy of those programs so that I can compare my revisions to the original code.
As my winter quarter is coming to a close, I hope I can prepare myself for the final exam. I remember that the final exam is a lot more challenging than the midterm exam, since it requires students to actually write code instead of selecting an answer from multiple choices.