CS373 Blog: Final Entry

Truman Byrd
3 min readMay 10, 2021

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.

--

--