Course Review of CS 161 (Computer Science 1)

Published on: 2024-06-24

CS Course Review CS161 C++

Written by Kyle Nicholson

learning

programming

beginner

C++

My first ever university-level programming course was CS 161 - Computer Science 1, taught in the C++ programming language. CS 161 is one of the first courses you’d take as a freshman computer science student. It is essentially an introduction to programming that emphasizes fundamental programming concepts like variables, data types, data structures, and basic algorithms. This course is offered at different schools in several different programming languages, including Java, Python, C#, and my ultimate choice of C++.

C++ may seem like an odd choice for a beginner-level programming course, especially when compared with Python, which is much more approachable for someone who is brand new to programming. I decided on C++ because I was already self-teaching Python and had a basic understanding of most of the core concepts of programming. I was cautioned by several people that C++ was complicated and out of date. However, I ignored the warnings because I was curious about C++ and I knew that taking the course in an unfamiliar language would push the limits of my understanding.

This post will be a short reflection on my experience taking CS 161 taught at Lane Community College in Eugene Oregon.

Course Summary

This course combined in-person and virtual enrollment - with some students being onsite at the college and some being remote. Each week covered a separate module that focused on a different concept through readings from a textbook and lectures recorded by the professor. There were assignments and short (open note) quizzes every week.

The assignments included a ‘debugging’ exercise which presented code with some errors the student needed to fix. Each student was also assigned to grade two other students’ debugging based on a rubric provided by the professor. Finally, there was a lab assignment each week, which was essentially a coding problem or instructions to build a specific program to accomplish a task that applied the concepts from the readings and lecture.

Early labs simply involved getting the Integrated Development Environment (IDE) set up correctly and writing simple input/output programs. The labs became progressively more complex as new concepts were introduced, with projects such as D&D character generator, a CLI-based treasure-hunting game, and an implementation of simple data structures and algorithms like linked lists and binary search.

There were two exams for the course: A midterm and a final exam. Both exams involved a combination of multiple-choice, true-false, short-answer questions, and longer debugging and coding problems. The final exam was not cumulative, and neither exam was proctored.

What I Liked

What I Didn’t Like

Overall Assessment

I enjoyed taking CS161 at Lane Community College overall. I learned a new low-level programming language to a basic level of proficiency. I became much more acquainted with the object-oriented paradigm. I learned how to implement basic data structures and algorithms. It was also eye-opening and useful to see the similarities and differences between C++ and Python. I think I became a better programmer because of this course.

I did not think the course was very challenging, but I mostly attribute that to my prior knowledge. I can’t imagine taking this class as someone with no previous programming experience: In 10 weeks, you are going from cout<< (print) statements to functions, objects, classes, inheritance, data structures and algorithms. C++ is not a beginner-friendly language, and even some of the most basic concepts can be hard to get your head around given the complex syntax.

If you are brand new to programming, my advice would be to avoid the C++ version of this course and instead choose Python or maybe C# depending on what’s available. I would only recommend the C++ version if you have some experience with another language, are curious about C++ and want to dive a bit deeper into a low-level language.

My Final Grade: A