The Secret to Efficient Programming Is Incremental Programming on Paper

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.

Backlit_keyboard.jpg

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.

newbie-coder-tips-code-confusion

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?”

iStock_000006091946XSmall.jpg

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.

Working

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.

 

Capture
(Midterm exam results, fall quarter 2015): Because I was a student who was first placed into a computer class full of experienced programmers, it was no surprise to anyone that the majority of the class received an A on the midterm exam. Somehow, I managed to get a C on that exam.

 

f
(Midterm exam results, winter quarter 2016): Now that I am retaking the same computer science class but with more inexperienced programmers, it is obvious to see how difficult programming is for starters by the grades students received on their midterm exam. I am happy to say that I received an A on that exam.

 

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.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s