- test first, test during, test after, test, test, test
- when designing algorithms, demand the weakest capabilities (e.g. iterable vs. indexable)
- when designing containers, provide the strongest capabilities (e.g. indexable vs iterable)
- build decorators on top of containers, iterators, and functions
- utilize the benefits of being lazy (i.e. yield)
- 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
How well do you think the course conveyed those takeaways?
After taking CS373, I’ve gained a deeper knowledge of the Python language and have developed better habits during the software development process. The course did a great job conveying the takeaways above with thorough in-class examples, Hackerrank exercises, as well as the semester-long website project.
Were there any other particular takeaways for you?
One major takeaway I got from the website project was the importance of a GitLab pipeline for continuous integration and making sure that the pipeline is fixed as soon as possible. This is important so that new features are not further complicating previous errors. Frequent commits to the pipeline is a good practice to make sure everyone can pull each other's edits regularly and not have to worry about huge merges.
How did you feel about two-stage quizzes and tests?
I have not taken a class with tests given first individually followed by collaboratively, but I enjoyed this setup and it really highlighted the benefits of pair-programming with other students. I found that almost always we were able to get everything correct and passing during the collaborative stage.
How did you feel about cold calling?
I think it’s a good way to keep the class engaged and did not find it be stressful as the code is walked through step by step with hints if you’re unsure. I think overall it’s an effective strategy especially now with all lectures given virtually.
How did you feel about office hours?
Office hours are good to attend if you're hitting a wall on one of the projects or if you want some guidance on what to focus on before a test.
How did you feel about lab sessions?
Lab sessions are also a good place to go to for some further details on the class content.
Give me your suggestions for improving the course.
I found the course to be well organized and applicable to a software development career. I would suggest maybe providing some more Hackerranks to practice the in-class content, but overall I found the course to be very well taught and structured.
Refactor, refactor, refactor, and making code beautiful
I thought it was good that the last phase of the project was focused almost entirely on refactoring the code. This is an important part of the development process that is easy to overlook if your implementation is working, however, it is crucial to make your code clean and beautiful not only to ease adding further features but also for others to understand what you have written.