CS373 Spring 2021 Final Entry: Tim Nguyen

Tim Nguyen
4 min readMay 8, 2021

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

1. How well do you think the course conveyed those takeaways?

Professor Downing does a great job explaining these concepts in class and really emphasizes them so that we write efficient and readable code. I think this class definitely focuses on skills that make strong software engineers.

2. Were there any other particular takeaways for you?

I think the biggest takeaway for me was testing. Doing unit tests using unittest and Selenium helped me understand those testing frameworks better. Learning how the GitLab pipeline worked and setting up the tests to run kind of blew my mind to see the code being tested every time we pushed to the repo. I definitely feel more confident with testing and I plan to bring this knowledge as a full time software engineer.

3. How did you feel about cold calling?

Cold calling is not that bad, to be honest. Professor Downing just wants to make sure everyone has a chance to be engaged in the class and understands the concepts. If you’re feeling confused, Professor Downing doesn’t ridicule you, but he does his best to clarify anything that’s unclear and makes sure you come out of the discussion learning something. It’s fun being in the spotlight and I try to make the class laugh when I get called with little jokes if I can.

4. How did you feel about office hours?

Office hours were helpful to go to because the TAs understand the process of web development and give great recommendations on how to do certain tasks for the backend or frontend.

5. How did you feel about lab sessions?

Lab sessions were definitely helpful, especially when there’s a bunch of people needing help. Having more TAs present to help debug issues such as AWS, Docker, and whatnot allows for higher throughput of students’ issues getting resolved.

6. What required tool did you not know and now find very useful?

I want to say that all the testing frameworks are going to help me when I go into the tech industry such as Selenium and unittest, but I think the biggest advantage for me was learning more about AWS. It was a little difficult at first to figure out how all the infrastructure is set up for backend and frontend, but it became easier to use and understand as I familiarized myself with AWS more. I made the decision to separate our backend and frontend instead of having them together, which worked out quite nicely for us.

7. What’s the most useful Web dev tool that your group used that was not required?

Besides Algolia for site-wide search making my group’s lives so much easier, I think Discord was honestly the most useful tool for my team. I understood Microsoft Teams was there for us so that the TAs could help us and we used Microsoft Teams when we needed clarifications and help, but Discord was much more interactive for us. We responded quickly when issues arose and when we were able to work. Of course, it would have been more beneficial if the Professor Downing and the TAs were able to overlook our progress and make sure everything was going alright, but I think my team and I did a great job and we got to know each other better this way.

8. How did you feel about your group having to self-teach many, many technologies?

Honestly, we learned out a whole lot from each other. I did not know a lot of Python in the beginning of this class, but my group members helped me out with it. Now, I think Python is a easy to use programming language that I almost prefer more than Java in a sense. I helped my team using TypeScript, especially with all the type errors. In general, my team and I learned a lot from each other and learned new tools together such as Postman, AWS, Docker, and the testing frameworks.

9. Give me your suggestions for improving the course.

My biggest suggestion is definitely having a more clear and concise rubric. Piazza posts versus what the website says became confusing, and it made Phase I and II a huge mess. I mentioned having used Discord instead of Microsoft Teams. I don’t think students should be limited from using other communication tools such as Slack or Discord. They can choose whether they want to fully use Microsoft Teams for communication or use it when they need help. I think it’s a bit difficult for TAs to monitor every team’s chat, so it’d be nice for them to respond to specific questions instead.

If there is one recommendation I would highly recommend, I would want to attend recorded sessions for each phase. In those sessions, TAs go over that phase in detail, such as how to set up the repo with a React app in Phase I, how to create the infrastructure in AWS or Google Cloud Platform in Phase II, and so on. I think this would be really beneficial for students.

Last Remarks

Overall, I really enjoyed this class and the friends I made in my group. It’s sad we didn’t get to work with each other in person, but I think this class was a good experience for all of us to learn so many new tools and develop our software engineering skills.

Thanks for reading and here’s our website if you want to check it out!

https://www.culturedfoodies.me/

--

--