CS373 Blog: Final Entry
Long term takeaways for this course:
- 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
- refactor, refactor, refactor
- make your code beautiful
My response:
- How well do you think the course conveyed those takeaways?
Overall, I think that this course did a great job at teaching the above takeaways. The in person lectures covered a lot of the basic design principles, while the errors and struggles in the lab lead to the majority of the other principles.
- Were there any other particular takeaways for you?
I think the course also encourages people to improve their communication and teamwork skills, since a lot of the grade comes from a collaborative project.
- How did you feel about cold calling?
Cold calling is a great way to encourage participation and keep people attentive and on edge. That being said, it really was not stressful, and the professor does a great job of guiding you through whatever example you’re working on.
- How did you feel about office hours/lab sessions?
While I didn’t actually attend these sessions during my time in the course, I know many of my friends and groupmates did and found them to be a valuable experience.
- What required tool did you not know and now find very useful?
I think that Docker was a really useful tool that allowed my group and I to test various features of the website without having to deploy them or SSH in first. I also think that the continuous integration offered by GitLab’s pipeline is great, and allowed us to catch bugs early on.
- What’s the most useful Web dev tool that your group used that was not required?
While not strictly a web dev tool, VSCode’s liveshare is a great tool for collaboration. I also thought that the search and filtering abilities offered by Algolia are great for getting search up and running quickly for your website.
- How did you feel about your group having to self-teach many, many technologies?
I thought it was an interesting experience, but there were times where we definitely would have appreciated some guidance. This course is a lot people’s first experience with web development, and the amount of tools required to launch and maintain a website can make that phase of the project very daunting. I think that it can naturally lead to the students who already knew these technologies doing most of the work, which isn’t ideal.
- Give me your suggestions for improving the course.
I think that the projects could benefit from having a bit more of a focus in the class itself, although I understand why the separation exists. I also think that some of the material at the end of the course could be expanded on a bit, especially focusing on refactoring and SQL. I understand its not a DB course, but I felt that the SQL focused mostly on writing queries and didn’t dive too deep into writing high performance queries.