CS 373 Spring 2021 Final Blog: Chanakya Remani
Long-term takeaways:
- 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 these takeaways?
I think this class did a really good job conveying these takeaways. I learned a lot about the different intricacies of Python as well as the importance of doing things that may seem like a waste of time like unit testing and refactoring. Professor Downing taught the class really well and I am very glad to have taken this class.
Were there any other particular takeaways for you?
Personally, I enjoyed the randomized groups as it allowed me to meet new people and be able to work with different people, similar to how the real world works. I learned how to ask questions, be dependable, and overall a good teammate and friend for my group members. While it seemed daunting at first when Professor Downing announced this the first day of classes, going through this experience this semester was worth it.
How did you feel about cold calling?
To be honest, I am going to say that I don’t mind it but if you were to ask me this question right after I get cold-called, I’d probably give you a different answer. I think it’s good because it forces you to pay attention in class and be attentive but at the same time, my heart would be racing and the fear of messing up in front of the whole class would be daunting anytime I felt like I was about to get cold-called.
How did you feel about office hours?
Office hours were very helpful! I primarily went to get clarifications on project specifications more than anything but the TAs were very nice and receptive to any questions we had.
How did you feel about lab sessions?
I didn’t go as often to these, but I viewed them in the same regard as office hours so I’d say the same thing as above.
What required tool did you not know and now find very useful?
I find Docker very useful, especially when you want to work on a project that has different tool versions than what is on your computer. I did not know about Docker beforehand but now, I do!
What’s the most useful Web dev tool that your group used that was not required?
Material UI datatables without a doubt. These table components had filtering and sorting ingratiated within it so it was very easy to set up filtering and sorting for our model pages that used tables.
How did you feel about your group having to self-teach many, many technologies?
It was pretty daunting at first but knowing that a lot of people in the class felt the same way alleviated my stress a little bit because we were able to help one another on these things. Looking at previous semester’s repos helped as well. It’s also definitely a good skill to have, being able to learn things on the spot but ultimately, I’ll be able to use what I learned in this class towards building applications of my own in the future.
Give me your suggestions for improving the course
I really enjoyed this course and the way Professor Downing taught it but here are some suggestions I have:
- Having less ambiguities on the rubric: for example, for phase 3, we had to implement a Google-like search but there were contradicting things said about whether numeric attributes needed to be searchable, whether all attributes needed to be searchable, etc. From my standpoint, this caused some stress near the end of the phase deadlines.
- Going over JavaScript code/testing: I noticed that Professor Downing would post JavaScript code equivalents for the Python stuff we learned about in class but it would be nice to have him switch it up a bit every now and then, just so that we are exposed to different things in class instead of strictly just Python.
- A lot of people probably already said stuff about crash courses or better resources for getting started on projects so I won’t explain anything more about that.
- Having people submit their own code for Hackerrank exercises: I really enjoy the group aspect of being able to complete Hackerrank exercises but sometimes, communication and typing could be a bit difficult to convey over Zoom so it would be nice if there was an option for people to work in groups on the exercises but individually be responsible for submitting code (it may be tough for TAs to go through everything but personally, that would’ve been nice).
- Anonymity on Piazza: This is probably my biggest suggestion; I can probably speak on behalf on a lot of people in terms of being discouraged from posting on Piazza merely because there is no anonymity option and I wouldn’t want to run the risk of asking something dumb and being exposed in front of the whole class (I feel like cold-calling already does that to everyone 😂) Nevertheless, I think this would be a good thing to have because it could potentially improve engagement and collaboration on Piazza.
Nevertheless, I would highly recommend everyone to take this class and thanks to Professor Downing for teaching this amazing class!