CS373 Spring 2022: Varun Nayak: Final Entry

Varun D Nayak
4 min readMay 9, 2022

Blog #15

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 (e.g., 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?

The lectures and Professor Downing’s enthusiasm and style of teaching conveyed these takeaways effecively. Moreover, exercises and quizzes were effective in testing our understanding and the grading and rate of the quizzes solidfied our understanding of the project .

Were there any other particular takeaways for you?

I think finally building a hosted website using the most modern tools available and using important industy services was the biggest takeaway. Learning to interact as a team, using version control, having daily meetings and assigning roles with an action plan were all major takeaways.

How did you feel about cold calling?

I liked cold calling a lot because I felt it kept me engaged. I did feel awkward if I had stepped away for a cold call but Professor Downing was very understanding of the fact that it happens and called on me next rotation. It is also great to have people help out in the chat when struggling.

How did you feel about specifications grading?

I feel like it is good but should not be gamified to the extent it is. I feel that token requests should be processed at the end of the semester allowing for more flexible usage. Using a token is definitely equivalent to gambling in the sense that there is a deadline and pressure to decide whether a token should be used within that deadline or salvaged for a letter grade bump.

How did you feel about help sessions and office hours?

I think they were useful but I feel like having a discord for the class enabled us to not go to help sessions when questions would often be instantaneously answered in the chat by classmates or the teaching staff themselves. I do feel like they would be useful for pressing issues where finding a solution was difficult

How did you feel about the support from the TAs?

I feel like the TAs were useful for providing support and making sure we were on the right track. Obviously these projects are very DIY and the TAs are not used to the nuances of each different implementation. However, for issues that have a common theme the TAs were able to offer excellent advice.

You should have read five papers that describe SOLID design: Single Responsibility, Open-Closed Principle, Liskov Substitution, Interface Segregation, and Dependency Inversion. What insights have they given you?

The biggest takeaway I had was to right clean code and to follow principles that result in good reusable implementations. I feel like in order to practice this I must have my code reviewed by people who are aware of and follow these principles and strategies. I also think that having these abilities makes one valuable in the workplace.

You should have read two papers that advised minimizing getters and setters. What insights have they given you?

I had read these papers in Downing’s object oriented programming so I am reminded of the fact that using them should be avoided since it is not a principled design approach.

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

I learned a lot about React-Bootstrap and how to add cards, dividers and make a webpage look nice with modern tools.

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

I am not aware of any tools that we used that were not required.

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

I think that it was great because the deadlines and requirements of the projects served as external motivators to learn these skills. I feel like if I wanted to learn these skills myself boredom and laziness would affect how well I could learn.

In the end, how much did you learn relative to other UT CS classes?

Overall, I feel like this and CS314 are probably the most useful classes I have ever taken. 314 prepares us for interviews and this course acquaints us with working in a team and the necessary tools required to have a product.

Give me your suggestions for improving the course, but apologies in advance; specifications grading will remain.

I think the course can be restructured so that there is not such a huge disconnect between lectures. Since specification grading will remain, it should not be gamified to the extent it has been with tokens. I know Professor Downing teaches OOP, generic programming and SWE and there is a lot of overlap. Maybe, there should be more lectures, exercises and quizzes covering topics related to actual tools in SWE.

--

--