Course Takeaways

  • test first, test during, test after, test, test, test
  • when designing algorithms, demand the weakest iterators (e.g. bidirectional vs. random access)
  • when designing containers, provide the strongest iterators (e.g. random access vs bidirectional)
  • build adapters on top of containers, iterators, and functions
  • always look for reuse and symmetry in your code
  • collaboration is essential to the quality of your code and to your well-being in producing it
  • refactor, refactor, refactor
  • make your code beautiful

How well do you think the course conveyed those takeaways?

Professor Downing does a good job of explaining all of these ideas and showing you how to apply them. Something that always stands out to me is how beautiful Downing makes his code. He always finds a way to reuse an insane amount of code and making his code even more readable than it previously was. This has inspired me to write cleaner and hygienic code not just for others, but also for myself so it can easily be parsed to understand what the code does.

Were there any other particular takeaways for you?

The use of the algorithms in the STL allows us to write very clean code where we hardly need to write our own for-loops.

How did you feel about two-stage quizzes and tests?

I felt that this was a very fair way to gauge the learning of students. I wish the solo part was a little longer because personally I always take the time to read the problem description to have a full understanding of what needs to be done. I don’t recommend that on the exams you just have to go-go-go.

The second portions of the exams are awesome. If I missed a case it gets explained to me by hearing many explanations given by peers.

How did you feel about cold calling?

I loved this. I think a lot of classes need to use something similar as many students don’t pay attention to courses with the online format.

How did you feel about office hours?

Downing is always kind and helps you through the issue that you’re having.

How did you feel about lab sessions?

I didn’t even get the chance to make it to one since I worked on Wednesdays.

Give me your suggestions for improving the course.

I think that it would be nice to have a couple of lectures that explain more about the tools used in the class or having supplemental videos with the setup and how the tools work.


I had Downing for CS371g and CS371p. If you have a chance to take CS371g during the summer you should. The projects are awesome and you will learn so much about C++. Thank you, Professor Downing.