CS373 Fall 2020 Final Entry: Michael Liu

  • 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

I think that this course conveyed these takeaways to all of us very well, whether we were new to the world of software engineering or seasoned veterans — everyone learned something. From the very beginning of the course, Professor Downing stressed these core points and continued to do so throughout the semester in a very informative and absorbable manner.

One takeaway in particular that I will always remember are the guidelines to refactoring. When writing code for a large scale project, it is very often too easy to let the code get messy which is natural. But now, I have the tools and knowledge to go back and refactor the inefficient or difficult to comprehend code into a much better form thereby improving my abilities as a software engineer.

I really enjoyed this ‘abnormal’ format of taking quizzes and tests. I believe that it’s a best-of-both-worlds situation. Firstly, as an instructor you are able to test your students’ knowledge on the material but then afterwards, they are able to learn from their classmates and collaborate as is in the real world to solve the problems again.

To be honest, I am not really a fan of the cold calling. I understand that it’s a valid form of maintaining engagement and taking attendance but it feels a bit forced to me. However, I have no real alternative solution to propose other than “engage the class” so I can’t really say much here.

Fortunately or unfortunately, depending on how you view it, my team and I as an individual did not have to attend office hours or lab sessions so I don’t really have much experience to speak about in these regards.

One suggestion I have for improving the current course is to add more detail to the test questions. Often times, I would have to ask 3–4 clarifying questions before I was able to fully grasp what a question wanted me to do/solve and even then, sometimes I would have to go back and make changes after the instructors made an announcement regarding a question.

This class is a hugely valuable resource if you’re interested in improving yourself as a software engineer. Not only do you learn many intricacies of various languages such as Python, Java, and SQL, you also learn many core concepts of computer science that transcend any particular language but rather apply to good software engineering practices in general such as how to refactor code. I really enjoyed this course and learned a lot and I believe that if you take it, you will too!




Love podcasts or audiobooks? Learn on the go with our new app.

Why Design Patterns?|1

8 thoughts after building an Umbraco 8 website on Umbraco Cloud

Hello, World!

Get Object Hierarchy From Unity Scene

Pretzel Weekly Update #13 — The “Stations” Edition

Life is a journey of twists and turns, peaks and valleys, mountains to climb and oceans to explore.

Web Data Scraping in Python with Regex and BeautifulSoup

ACF: Automated Code Formation ( Engineering Excellence)

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Michael Liu

Michael Liu

More from Medium

The /proc filesystem…

Basil the Ayurvedic wonder herb — Issue #7

Your Comfort Zone Is Costing You Way Too Much: Step Out Of It And Seize Your Dreams