CS371p Spring 2021 Final Entry: Yichen Zhang

Yichen Zhang
2 min readMay 8, 2021

How well do you think the course conveyed those takeaways?

I think the course did a great job conveying all those takeaways through lectures, weekly papers, in-class exercises, and projects. Dr. Downing makes every point he was trying to make very clear and logical.

Were there any other particular takeaways for you?

Iterators fall into different categories, allowing functions that use those iterators to have limited controls over the container, which increases the safety and cleanness of code. Adapters on top of base containers become really useful in terms of algorithms. They empower us to write up efficient algorithms based on the type of problems we are trying to solve. Refactoring is the most important thing that this class conveyed. Especially when we are talking about OOD, we really need to think about what responsibilities each class should be assigned to make our code more maintainable, and less error-prone.

How did you feel about cold calling?

I’m fine with cold calling. It definitely kept me focused on the lectures. The setting is not that scary and Dr. Downing is super friendly and tolerant to any mistakes we make.

How did you feel about office hours?

I think office hours are helpful any time you have any questions or concerns. In office hours, Dr. Downing discussed our particular implementation and pointed out all improvements we could make.

How did you feel about lab sessions?

They are helpful as well.

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

I think I’m already familiar with all the tools introduced in this class before taking it.

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?

I think the main takeaway from those articles is that you want to separate responsibilities and have each class/interface handle one of them and sometimes you need to do dependency inversion to make the code more manageable.

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

Try everything you can to eliminate getters and setters. You almost never want to expose implementation details to the users unless you have to.

Give me your suggestions for improving the course.

I can’t think of any suggestions. This is one of the best CS courses I’ve ever taken.

--

--