CS 371P Spring 2021: Final Entry

Joseph Muffoletto
3 min readMay 9, 2021

If you’re reading this and you’re just starting this class, I can assure you that it will be a great semester. Dr. Downing is an excellent professor, and you will learn so much by just being in lecture.

How well do you think the course conveyed those takeaways?

Excellently. It was very clear what and we were learning and why we were learning it. While some of the concepts were more difficult for me to understand, (see lvalues and rvalues), a simple look over the easily accessible class notes helped out.

Were there any other particular takeaways for you?

Make sure you understand your design pattern before you begin writing code. Know how your objects will be communicating before you write their interactions, or you will end up with spaghetti code.

How did you feel about cold calling?

At first, it made me fear this class. It's a bit nerve-wracking to have to speak in front of the whole class (it's similar to a coding interview, but this time in front of your peers). And yet, Dr. Downing makes you feel quite comfortable. At any point, you can just say you don’t know, and Dr. Downing will really try to help you understand. In total, I’d say it was great at keeping me engaged, and I would definitely do it again.

How did you feel about office hours?

They were great! I encourage everyone to take advantage of them. Dr. Downing is so incredibly friendly, so please please please go to them. Any question you have, he will answer. Many times I had extracurricular difficulties or curiosities, and Dr. Downing was always willing to help out.

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

I have used Makefiles in the past, but I had never had to write complicated make rules for my own projects. It was definitely daunting at first, but because we are eased into it (the first project has a makefile provided), it allows for a smooth transition. It's such a powerful build tool, and it's incredibly fun to tinker with (had some great conversations with some classmates about make rules).

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?

Of the ones I read, I would say that they give great insights into better object-oriented design patterns. It's really all about making your code easier to change in the future. As such, much of these articles talk about minimizing responsibility per class. Basically, modularize your code in a way that each part of it exists as its own abstracted black-box.

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

It was such a funny paper to read, especially when they mentioned that getters and setters are literally just public variables. Throughout our coding career, we’ve been taught this poor design, so it was nice to have that concept rooted out. Basically, it's pretty rare that any design would need a getter or a setter, so avoid them if at all possible. If you ever end up them (ex: getter return type from int to float), you then have to change every single piece of code that utilizes that getter.

Give me your suggestions for improving the course.

I think the Docker lecture could’ve been a bit more clear. Since I didn’t quite understand that lecture, I ended up using the lab machines instead (which are great in their own right).

I think some of the papers are a bit difficult to understand, especially since they reference programs and paradigms from the early 2000s. Maybe there is some newer OOP material that could replace these? Also, I think there should be a paper or two that explains the history of OOP and why it exists over other programming paradigms.

Lastly, I think that more time could’ve been spent on design patterns. While it was great learning about the specifics of C++, I think it would be useful to explore more high-level design strategies.

All in all, it was an excellent course. Thank you for the great semester, Dr. Downing!

--

--