CS373 Spring 2021 Final Entry: Yuhan Zheng

Yuhan Zheng
4 min readMay 9, 2021

Long-term takeaways from this class:

  • 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

How well do you think the course conveyed those takeaways?

I think the course conveyed those takeaways really well. The examples given in lectures helped me to understand new concepts and tools presented, and the HackerRank exercises gave us opportunities to use them in practice. Overall, this course clearly explained and demonstrated a lot of good coding habitats and strategies. Although we did not have the chance to apply all of them in our project, I believe that it is just as important to be exposed to them and keep them in mind for future use.

Were there any other particular takeaways for you?

I learned a lot about how to work effectively with a team in this class. Since people in our team were in different time zones, we all had to make accommodations in our schedules to make sure that we could schedule meetings when everyone was available and awake. Also, it was crucial for each one of us to frequently report our progress on Teams and be responsive to any new messages posted. That really helped us take each other accountable since we could not meet in person.

How did you feel about cold calling?

I’ve taken a class with Professor Downing before, so I was used to his cold calling during lectures. I think it is a great way to keep everyone focused on the materials being presented and stay engaged, which is hard to do when lectures are given online. Professor Downing also made it more like a conversation instead of you being called to answer questions, so it was not that intimidating.

How did you feel about office hours?

Office hours were helpful when I have general questions about class logistics and projects. Both Professor Downing and the TAs were really open to questions and would patiently answer all of them.

How did you feel about lab sessions?

Lab sessions really felt like extended office hours. When I had questions about a specific bug that I got stuck on or more information about how to use a tool that was required for the project, I would go to lab sessions since those questions usually took longer to answer.

What required tool did you not know and now find very useful?

Postman is a tool that I never heard of till this semester. Originally, I thought it was used to build an API and was really confused on how that would work. However, after I figured out that it was more of a tool for API documentation and testing, the features it provides make a lot more sense. It ends up being really useful to flush out our API design and testing its functionalities.

What’s the most useful Web dev tool that your group used that was not required?

pgAdmin is a great database management tool if you are using PostgreSQL. It allows you to create, populate and manage your database via a well-designed GUI. Using this tool saved us a lot of time in phase2 of the project since we did not have to write scripts or learn SQL to build our database.

How did you feel about your group having to self-teach many, many technologies?

It was a stressful but rewarding process, especially in phase2 where we had to learn a lot to use tools to get both the front end and the back end of the website working. We had the most trouble learning flask and selenium since none of us had any experience working with them before. The TAs were an invaluable resource when we ran into weird bugs and needed some general pointers on how to proceed at a particular stage.

Give me your suggestions for improving the course.

My biggest suggestion would be to post more tutorials on tools required for the projects, preferably the ones that people have used and found useful in the previous semesters. Although it is also good practice for us to find this information on our own, it can be stressful given the limited amount of time assigned to each phase of the project and for people who have no experience with web development.

--

--