I hope that the following are long-term takeaways from this class:
- 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 and iterators
- do not use new and delete, use allocators instead
- 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?
I think overall the course conveyed those takeaways pretty well. There was a good mix of things that were learned within the class as well as things that were learned through experience when coding the projects. I will say more takeaways were emphasized than others such as the testing aspect versus looking for symmetry in code.
- Were there any other particular takaways for you?
I learned to always work on one thing at a time as working on multiple things at a time leads to too many variables when debugging. When constantly testing, if you run into an error you most likely know the source of the error when focusing on the one thing (most likely it is the thing you are working on).
- How did you feel about cold calling?
Although I initially thought I would dread cold calling in this class, I actually enjoyed it. For one, I really dug the one-on-one aspect that most of us might have been used to in high school that you barely receive in other big CS courses. Even when I did not know what was going on in the class, Professor Downing was often patient and helpful in order to help me clarify the things he was talking about. I think a lot of students would benefit if cold calling was in their class as it gives them a chance to ask questions upfront instead of having to wait until office hours to clear up questions.
- How did you feel about grading?
Grading in this class was definitely a different experience and it had its pros and cons. On the positive side, I did like the virtual token system which was very versatile in the way it could be utilized. It could extend deadlines on projects as well as raise grades on quizzes and exercises which was a plus. On the negative side of things, I did not like how one assignment had enough weight to drop a grade by a letter. Although it adds importance to completing the assignments, I think that a more lenient approach to determining grades.
- How did you feel about office hours?
I did not get to attend many office hours this semester as most of the slots occurred concurrently with another class that I was taking during the summer. However, the office hours that I did attend (usually extended office hours before project deadlines) were extremely helpful and often critical to completing projects.
- How did you feel about support from Amogh?
Amogh was absolutely wonderful this semester as a TA and probably one of the best TAs I’ve had in a class. The amount of guidance he would provide on exercises as well as the help he gave during office hours I am grateful. My only critique would be on certain assignments like projects or blogs, for example, there was a lack of feedback so I did not really know where I could improve on the next run. Other than that, props.
- What required tool did you not know and now find very useful?
Unit tests were something I did know existed but I had never used them before in code. Getting a chance to use them for the first time, I saw their value very early. It is a tool that was extremely useful when testing code and I liked the fact that it often provided which tests it passed and failed so I can review what went wrong.
- Give me your suggestions for improving the course.
In order to improve the course, I would suggest giving us a more detailed notes page perhaps in order to review for quizzes. On days where I was just not in it, the following quiz days would often be tough because I could not follow along with the notes most times. Also, I think that the grading system could be messed around a bit in order to give more lenience to some assignments.