As every computer science major knows, data structures is a very integral class in their curriculum. As a result, data structures can be considered the first major test if one wants to label themselves as a proficient programmer or computer scientist.
This semester, we would be working in C++, which was a considerable step up from Java. In preparation for the programming portions of the class, I took to Project Euler, a programming problem solving site that allowed me to hone my Java and object oriented programming skills.
Despite my prep, however, the first machine problem proved to be a patch of tricky footing for everyone. We were all faced with the novel task of writing our own Makefile and slogging through the syntax of C++ on our lonesome. Anticipating a long assignment, my friends and I convened together in an attempt to make some headway on learning our new second language. Within half an hour, we all found ourself walking into a brick wall editing our own Makefile.
We reached a crossroads of sorts, deciding that it would be unproductive to simply throw more time at the problem at hand. I voted to continue working on our machine problem at Siebel Center, where we could rely on the help of our course staff. My friends decided to stay back in hopes of slogging through and making some purchase on this tricky problem.
Riding the bus into the receding Urbana sun, I got off and ascended the few steps into the computer science building. I sat down at one of the basement’s resident EWS machines and began to work. Next to me was one of my classmates who was working on the same problem. We sat together and refined our individual Makefiles in hopes of allowing our program to fully compile. When I thought I was absolutely stuck, I reached out to the current TA, who walked me through the idea of Makefiles and also scanned my code for bugs. After a quick review, I compiled my code again: ./mp1 . The console showed no warnings, and using the terminal diff commands confirmed that my code was correct.
Just to be sure, I ran my final source code against the staff’s test suite, Monad. Five green “passed” markers greeted me, and I heaved a great sigh of relief. After nearly three hours of frustrating debugging and refining, I had solved my first true Machine Problem. I silently reminded myself that the programming problems would only get harder from here on out, but resolved to reviewing my current code for any other errors.
My programming neighbor wasn’t having the same luck, however. As he tried to understand the concept of flipping the PNG 180 degrees, the TA would constantly shoot him down, berating him with a sharp “为什么你不懂这个? 这是很容易。” (Why don’t you understand this? It’s really easy.) After the TA moved on to help another student in the office hours queue, I slid my chair over and began to walk my classmate through the steps that I had taken not so long ago.
“So I see that you’ve placed the target files on your desktop. Here, let’s put them into a new directory. Type in ‘mkdir cs225’ into the terminal, right over here, and press Enter…”