CS373: Final Entry

Mahaa Noorani
4 min readDec 5, 2020

Key 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
  1. ) How well do you think the course conveyed those takeaways?

I think the takeaways were conveyed very very well. These concepts were mentioned in lecture multiple times. It was also explained why things should be done in these ways, which I think is very important to understand. The projects reenforced some of these takeaways.

2.) Were there any other particular takaways for you?

This class really stresses collaboration, which will be important in the industry. IDB is not a project that can be done alone — every group member was important for getting things done on time. In addition to the projects, there were collaborative portions to the daily quizzes and the exams. It is really important to be able to work well with others, and to deal with conflict effectivley.

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

I liked the 2 stage quizzes and tests. Sometimes for the quizzes, the collaboration felt a little uneccesary, but other times it was super valuable in building my understanding of the concepts (and a pretty good way to earn more quiz points!). On the tests, I really appreciated the opportunity to raise my exam average by working with my group to get more points than I might have earned on the individual portion.

3.) How did you feel about cold calling?

I loved cold calling! It can be a little scary sometimes, but in todays zoom world it was absolutely necessary. I did a much better job paying attention in this class than any of my others because the cold calling encouraged me to listen actively. Due to the cold calling, concepts in this class are explained in a more conversational way than in other classes, and personally I think I respond very well to this style of learning.

4.) How did you feel about office hours?

Office hours can be very helpful to get another explanation of a concept covered in class that you might not have understood the first time. It can save a lot of time as opposed to staring at the class notes and hoping they make sense after enough staring.

5.) How did you feel about lab sessions?

I actually never went to these, but really wish I had. A lot of the time, the project specifications were unclear and my group lost lots of points on things that we could have caught by more communication with the graders and TAs, and help hours would have been perfect for this. I found it hard to manage my schedule in a way to make time for these, but I believe it would have been worth my time. (The extra credit points wouldn’t have hurt either!)

6.) Give me your suggestions for improving the course.

I think this course was very valuable, but the project requirements made it pretty difficult to know what was expected. Looking at the assignment on the website, the specifications are clearly not comprehensive. There were a lot of small things that we didn’t realize we needed to do until the last second (i.e functional vs class components, adding a favicon). I also would have liked to work on something other than frontend, but as the only team member with experience in React it fell to me for every phase — there was simply no other way for my group to get the projects done on time than for us to stick with working on what we knew best. I think less strict grading requirements and more encouragement to swap roles would have been beneficial. That way, people could learn about backend, frontend, deployment, etc without having to worry so much about the overall grade.

To Future Students

This is one of the most valuable classes that I think the CS department has to offer because of the variety of tools you are exposed to, and because of how much it encourages you to go learn things on your own. That being said, it’s important to have a good team, nail down a solid idea from the beginning, and do your best to stay organized, divide up tasks, and hold everyone accountable. Each phase should be started as early as possible, and be pretty much done a few days before the deadline in order to fix any last minute problems that pop up. This class is challenging due to the amount of work required, but everything asked of you is doable and pretty painless (with a lot of googling of course). Attend help hours, and get clarification on everything that you are not 100% sure about. Also, do every extra credit opportunity even if you think you won’t need to, because they are all pretty easy and the test might throw you a curveball — it is always nice to have some leg room to make mistakes.

--

--

Mahaa Noorani

Computer Science Student at the University of Texas at Austin