Last Entry
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
How well do you think the course conveyed those takeaways?⌗
I think we touched on all of those quite a bit over the semester. The course not only explains what each of those was but why we did them. I do still feel that many of the tests we wrote were purely for the sake of having tests rather than to help maintain the code we were writing. Also while likely out of scope, it would have been nice to see these demonstrated in multiple languages rather than just Python/Java.
Were there any other particular takeaways for you?⌗
The formalness of refactoring patterns was new to me. Although feeling somewhat java-y, being able to describe an abstraction as an e.g. abstract factory pattern is pretty cool and I think will help me communicate OOP design in future projects.
How did you feel about two-stage quizzes and tests?⌗
Both two-stage quizzes and tests are amazing and I wish more classes adapted them. Collaboration with other students immediately after a challenging assignment is an incredibly helpful learning tool. I do think having quizzes in the first few minutes of class is tricky when you have an unstable internet connection (personally took a couple of zeros because of this), but the lowest quiz drop policy makes this less of an issue.
How did you feel about cold calling?⌗
Still not a fan. I like to be able to just listen to a lecture without having to randomly scramble to unmute and answer questions. Maybe “warm calling” maybe something to look into?
How did you feel about office hours?⌗
N/A
How did you feel about lab sessions?⌗
N/A
Give me your suggestions for improving the course.⌗
- Teach with a little overlap with the project to help groups doing web dev for the first time
- Be way more clear and upfront with project specifications (“We are almost done with A” “Actually the TA just said B” “But it said A yesterday” “¯\(ツ)/¯” happened way too often)
- Have practical project specifications that mimic actual SWE standards. A 100-line limit on files is ridiculous.
- Teach Python hash sets accurately (no linked lists here)
- Focus on how to derive the properties of a language rather than the short-term memorization of Python nuances. Sure knowing how Python built-ins work is important, but spending multiple weeks picking at every method and edge case in lecture seems like a waste of lecture-time to me.
To future students⌗
An implicit skill found in this course is learning to learn as the onus is on you to figure out many key parts of this class (React, Flask, etc). Don’t be afraid to Google how to do things…that’s literally the only way to do it.