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 thoroughly conveyed all those takeaways. The quizzes and exercises help a lot for us to actually practise those concepts. Some projects like projects 3 and 4 ensured that we truly understand many of those topics and can use them in practical ways.
Were there any other particular takeaways for you?
One of the most useful things I learned from this class is the C++ language itself since I never used C++ before. Getting familiar with C++ and being able to use many generic concepts to achieve better codes will greatly help me in a long term. Also, the workflow of the projects is also something I valued. I found it very smooth and practical. I have no doubt that in the future I will continue following this workflow in many situations.
How did you feel about cold calling?
Cold calling is not bad at all. It helps me concentrate more on the class topics and generally helps me understand the concepts better since many questions from other students during the cold calling are often something I’m not familiar with as well. Cold calling really helps to keep my attention during the class, especially in a 2-hour online class session.
How did you feel about grading?
Overall all I think the new grading system is not bad. It encourages us to do well in all aspects of the class. On the other hand, it punishes more for constantly failing in one single category. I think there are several issues with this system in our class. Firstly, earning an E in a project doesn’t really help anything besides feeling good. I worked pretty hard to make sure my code works well for the project and usually in other classes my efforts would weigh more in the grade than in this class. Secondly, the rubric for a project is not very clear when it comes to the grade of M and R. I hope this can be more clear in the future. Thirdly, I think the virtual tokens system can be improved a little. Having to keep it all till the end for a grade upgrade feels like some gambling system in some ways.
How did you feel about office hours?
Office hours are great. Both professor Downing and TA Amogh help me a lot during their office hours. And honestly online sessions make it a lot easier compared to the old-time.
How did you feel about the support from Amogh?
Amogh did an incredible job and I really wish all my TAs can be as good as Amogh. His office hours were great for helping projects and even some advanced topics about C++. He also provides us with lots of insights after projects which solves many of my confusions about the project. Definitely the best TA I encountered during my time at UT.
What required tool did you not know and now find very useful?
The most useful thing I found in this class is the Google test. It greatly helps me in all the projects and I found it easy to use and good to use in most situations. After writing so many tests for sal those projects, I now feel confident to use Google tests for my future projects or even works.
Give me your suggestions for improving the course.
Since it’s a summer course, many issues I found were related to how tight the schedule is. Outside of that, one of the few things I can think of is to make some quizzes a lot bit easier. I feel like most quizzes at the end of the semester are really hard and sometimes even professor Downing made mistakes in those quizzes.