- 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?
These takeaways were definitely a focal point of the course and were conveyed clearly and extensively. During the python portion of the course, the optimal design of algorithms and containers was explained well and now I know which situations call for which capabilities. Additionally, the java refactoring portion made me look at program design differently and taught me how to deal with symmetry within my code.
Were there any other particular takeaways for you?
The biggest takeaway is that the best way to learn is through experience. While I do wish that the class covered some of the tools we were using for web development, having to google and learn these tools and frameworks from scratch allowed me to reach my own understanding of them.
How did you feel about two-stage quizzes and tests?
When I didn’t understand something in the first stage, the second collaborative stage allowed me to ask my group questions and definitely was a worthwhile learning experience.
How did you feel about cold calling?
I think cold calling is great and really suits itself to an online environment. It helps me stay focused during class and hearing Professor Downing walk through a problem with another student is a great way to learn. Plus, getting a question wrong is no big deal as Downing doesn't call you out for it, but uses it as a moment to clear up any misconceptions.
How did you feel about office hours/lab sessions?
I didn't utilize these enough and definitely should have asked more questions when I got stuck during a project.
Give me your suggestions for improving the course.
The course is great and I got a lot out of the python, SQL, and java sections. That being said I would suggest dedicating a class or two at the beginning of each project phase to give a basic rundown/explanation of the tools we would be using.
To future students
This class is a must-take if you plan to work in software. The experience you get with backend, frontend, and deployment is invaluable and gives you a good idea of how things work in the industry. It’s not a walk in the park by any means and you should prepare to dedicate a good amount of time for each project phase, but by the end, you will be much better equipped for your career.