CS373 Fall 2020: Final Entry

Ivan Romero
3 min readDec 6, 2020
  • 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

So:

How well do you think the course conveyed those takeaways?

I think the course conveyed these concepts very well. Downing’s examples are very thorough, and if not you are always free to ask questions. The practice hacker ranks are what helped me the most. I think there should be more of those for all the important concepts in class. It might be wonky since you can’t really test some of the concepts but it should be worth the shot.

Were there any other particular takaways for you?

Knowing how to work in a group was an important takeaway. Dealing with people you have never met before and being thrust immediately into work is something I think I will always have to deal with. I am glad that this group everyone was kind and it was not awkward working with them. I can only hope future groups and colleagues are as good as them.

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

They are good. It really softened the blows to my grades when I did not know how to do something. Sometimes I would zone out in class but my group members were always there to help me. In my opinion, it eases some of the stress of exams.

How did you feel about cold calling?

Personally, I like cold calling since it actually forces me to pay attention and not leave my computer. I have definitely done that in my other classes but because of cold calling, I live in perpetual fear. I think it is good to be forced to focus, especially for someone like me who struggles to focus.

How did you feel about office hours and lab sessions?

For the ones I went to, I think they were good. It was on par with other good courses I would say.

Give me your suggestions for improving the course.

I would say more hacker ranks. Some of the concepts are hard to grasp if you do not actually do it. Python is an expressive language but the syntax to achieve that expressiveness can be obscure or confusing. It was also really jarring when I started the class and I found lectures had nothing to do with the project. It was almost like I was in two classes. If it were not for the lecture intro reminding us about the projects, I would not have even thought they were the same class. Even just a few minutes going over some tools that can be used to achieve things in the project with some pros and cons would be immensely helpful. The programming world is huge and it would be nice to have some things narrowed down.

To future students:

Take this course. It is one of the most sought after for a reason. The project environment you work in is a valuable experience. Some of the python tricks are neat too but by far the most important thing you will learn is tools for software development. The workload is what you make it. You can cruise by with an ok looking website that fills all the requirements or you can make something truly amazing to impress recruiters.

--

--