My Favorite Class, CS 3110

A photo of a Cornell Engineering student, holding a flower arrangementEntering college, I had this expectation that my engineering classes would be a textbook heavy, stress inducing lifestyle that I just had to get accustomed to in order to succeed. This is what all my high school teachers told me — this is how their college experiences turned out, and thus my own experience had to mirror exactly. Yet, I quickly realized that almost all of the classes I have taken have proved this intuition wrong, eradicating the idea that textbooks are the only way to learn material and that professors are out to get us with unending problem sets and exams.

Which leads me into my favorite class of all time: Data Structures and Functional Programming (CS 3110), a course with a title that sounds profoundly boring but with content and teaching staff that really changed me as a programmer and engineer. What made this course special was the attention to detail to make every lecture, assignment and interaction as practical as possible, knowing that the end goal isn’t to read textbooks faster but to make highly interesting, relevant code that we all are proud of. While I could go on and on about the technical aspects that make this course so interesting, it was the fact that everyone on the course staff, especially the professor, deeply cared about the student’s well being and wanted us to succeed both in this class and in life. All classes have these resources, but for a difficult course like this one, we had office hours for around 12 hours a day, 6 days a week, each one staffed with individuals who exclusively wanted to help everyone get better. Even the professor, knowing that this course could come across as stressful, tried nonstop to improve his lectures and assignments so we would feel accomplished when we finished an assignment, rather than burnt out.

I learned in this class a new language with a funny name (OCaml), new ways to code, new ways to think, and new ways to work with people around me. I always thought the technical aspects of my courses were the ones that would transfer most directly to the real world, but in reality, it is the other, often overlooked skills that this course indirectly focuses. My ability to organize how I think before organizing how I code, and my ability to work in groups for complicated projects made me a better programmer and a better person. I love that everyone on the class starts at the same footing (who knows OCaml, who has even heard of OCaml?), and by the end we are all better programmers and better people.

—Navin, computer science