CS371p Fall 2021: Jeffrey Moulckers: Final Entry

Jeffrey Moulckers
CS371p Fall 2021: Jeffrey Moulckers
3 min readDec 5, 2021

This blog entry will cover the past semester in Object Oriented Programming with Professor Downing.

How well do you think the course conveyed those takeaways?

The course was built around principles of solid design, and each unit and project heavily focused on these takeaways. Oftentimes we were forced to put these principles into our own implementation, which helped to see these concepts appear as a part of the solution to more complex problems.

Were there any other particular takeaways for you?

I have found that this course encouraged me to stay on top of multiple areas of work, which has given me the opportunity to rethink how I complete assignments and stay on top of material. I think these practices will translate effectively into a work environment when I will come across parallel workloads again.

How did you feel about cold calling?

I felt cold calling was a bit stressful at times, but effective in keeping students responsible for their knowledge in the course. At some points, it made the projects easier when students asked clarifying questions to lead others in the right direction, so I saw an overall positive effect from cold calling.

How did you feel about specifications grading?

This was the main pitfall of this course. The grading structure left me overly stressed about smaller parts of the course like quizzes, papers, and blogs, and took weight away from more important projects. I felt this to be a bit backwards, especially since most of my knowledge in a course comes from the implementation in projects.

How did you feel about help sessions and office hours?

Help sessions and office hours seemed to go smoothly and were well-placed to fit most students’ schedules. My experience didn’t include too much time at these sessions, but I know they helped many students figure out things that were blocking them.

How did you feel about the support from the TAs?

I appreciated how flexible the TAs were with accommodating situations that led to missed deadlines or issues with the workload. Any request was looked into enough to understand the situation, rather than simply dismissing it.

What required tool did you not know and now find very useful?

I found makefiles to be extremely useful both within this project and other personal projects. Although I knew they existed and how they worked, I had never actually used them in any personal projects. Now I feel confident enough to use them wherever repetitive or nuanced work can be replaced, especially in C++ projects.

You should have read five papers that describe SOLID design: Single responsibility, Open-closed principle, Liskov substitution, Interface segregation, Dependency inversion. What insights have they given you?

These principles covered in the various papers in the class helped me understand how my current design tendencies could be changed, and the potential negative effects that would come with not doing so. It is easy to fall into the design principles covered in introductory courses, but it is far more important to be open to changes for the sake of sustainability of code and adaptability for future changes.

You should have read two papers that advised minimizing getters and setters. What insights have they given you?

These two papers were quite interesting, especially in the way they contradicted teachings from many intro courses. I appreciated the depth of examples that displayed how one could work around the absence of getters and setters, even on the front end. These were especially important in the final project, so we had the opportunity to try these concepts out in real life.

Suggestions on improving the course?

I felt that this class may have a bit too much organization for the sake of organization, which somehow gets in the way of learning the intended material. I found myself more focused on meeting deadlines than retaining anything important, and the grading structure issues I had mentioned above added in to create a less than optimal experience.

--

--