CS 373 Fall 2020: Final Entry

Pranav Akinepalli
6 min readDec 7, 2020

Hey everyone! It’s been a little over 3 months since my first blog post and a lot has happened since then. This is my last blog post for CS 373 where I will be giving my final thoughts on the class. Hope y’all enjoy the read!

To start off with, Professor Downing has shared with us a list of long-term takeaways that he hopes we get from the class. Here they are below:

  • 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

How well do you think the course conveyed those takeaways?

I feel like the course conveyed those takeaways extremely well. Throughout lectures as well as being consistent with the grading rubrics, I can point to most of these principles being present. They even showed up in the papers we read. All in all, I can say that the entire course encompassed these principles and sought to really make sure we understood the benefits of following them and internalized them for the future.

Were there any other particular takeaways for you?

I think what I really took away from this course was the immense importance of refactoring our code and making it look beautiful. Until now, I would say that I had always prioritized functionality much more over how nice code looks and figured that those kinds of details for to be done later down the line. However, the best practice is to keep that goal in mind from day 1 and to really make sure that you are always writing code that will require minimal refactoring in the future. Of course, it always happens that we will find better implementations and ways to organize our code later on but putting in the effort to make it look nice from the beginning itself will go a long way on its own.

How did you feel about two-stage quizzes and tests?

I found it really refreshing and I’ve never encountered this type of format before in my schooling experience. It’s really cool to have a first attempt individually and then a second attempt as a group. In a way, it provides many learning opportunities and encourages team members to support other team members. Furthermore, working on the second stage had the effect of giving a second chance to learn from the mistakes of the first attempt. Furthermore, introducing the collaborative aspect over the previous attempt allows for a diversification of perspectives and you can really learn from the ways other people think.

How did you feel about cold calling?

I actually really enjoyed the cold calling. I think, given the nature of a virtual learning environment, it was already way less intimidating from the get-go. Furthermore, everyone has their camera off except for the person being cold-called so no one has to worry about being judged for their answers or getting weird faces from people. I think a lot of people have that worry when they hear cold calling so it was nice to see that those issues were inherently addressed. It also increased my attention in class tenfold (which is incredibly more important in an online class). I found myself much more engaged in class and found the cold calling a great way to learn more about my other classmates.

How did you feel about office hours?

I only attended a few office hours here and there throughout the semester but I found them to be really helpful when I did go. The TAs were always present and ready to answer any questions I had whether it was about the class or the projects. Even better was, since this class was so open-ended in terms of the projects, the fact that even if a TA didn’t know the answer to a particular question, they would really take the time to either help the student figure it out or even bring in the help of the other TAs. If anyone needed help, office hours were definitely the place to go.

How did you feel about lab sessions?

I never actually ended up going to any of the lab sessions but they sounded really helpful from what I heard. I never had to specifically review any content we covered in the class with the TAs so I never got the need to actually go to the lab sessions. However, I’m sure they were another very helpful resource for students who were stuck on lecture content and needed some help in specific areas covered in class.

Give your suggestions for improving the course.

No course is perfect and there were a few things that came up along the way of taking this course that I wish were done a little bit better. The first thing I want to point out is that the quizzes sometimes took way too much time out of lecture (20 out of 50 mins worst case). It would’ve been better if there was a faster way to review them so we could just jump into that day’s lecture content. Another thing I noticed was that some of the papers we were assigned were really old. It made me question whether some of the aspects mentioned in the paper were even still relevant (written in 1990s) given how much technology has changed since then. Another big thing I would say is that it would’ve been nice to have gotten just a little more time on each of the project phases. We found ourselves getting crunched on time towards the end (even though we paced ourselves) and just a day or two would’ve made the process much easier and less stressful. If anything, it would be nice to have the concept of slip/late days implemented for those scenarios when something comes up and a group isn’t able to finish on time (happened to us on Phase 2). Losing 20 points for each day submitted late is way too harsh in my opinion. There were also times when the project/test instructions were a little vague and there was kind of a fear where we would lose points if we didn’t come up with what the graders were specifically looking for. If those intentions were a bit clearer (even on the project rubric), it would be nice. Another thing I was considering was how the projects would have been if we didn’t have the ethical requirement for the ideas. I feel like because of that limitation, a lot of teams fell back on more standard ideas like politics or environmental related ideas (which are still great don’t get me wrong). It would just have been really cool to see what groups would have come up with if there were no real hard requirements on the project ideas. Finally, sometimes the content we learned in class felt too specific to really be that applicable in the real world. There were times I felt that we were learning a little too much about Python’s intricacies than focusing more on the bigger picture. It would’ve been cooler to have all of the content we learned to be really helpful tips and practices that are pretty applicable to our future academic and industry careers. However, that’s literally all I can think of to improve this class given I racked my head for a while to come up with these and if these were implemented, I think this class would actually be perfect.

Overall, CS 373 was an extremely enjoyable class and I’m glad I had the opportunity to take it. I’ve learned so much that I can’t wait to apply in my future! For all of you reading who haven’t taken the class yet, I would have to say that out of all of the CS Upper Division classes at UT Austin, this is a must-take before you graduate!

--

--