CS373 Spring 2023: Amro Kerkiz: Final Entry

Amro Kerkiz
5 min readApr 25, 2023

--

These are the intended long-term takeaways from Glenn Downing’s SWE Class:

  • 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 (e.g., 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

How well do you think the course conveyed those takeaways?

When it comes to these course takeaways the course definitely conveyed them through lectures, quizzes, exercises, and most importantly the readings which gave the essential dos and don’ts when it comes to programming.

Were there any other particular takeaways for you?

One of the most important takeaways from this class for me involves communication regarding your group projects. Being introduced to new technologies and having to plan out website functionalities and design, communication becomes crucial in how to implement parts of the frontend, and backend and connect them together, all while teaching ourselves new technologies.

How did you feel about cold calling?

I enjoyed the cold-calling part of the lectures. At first, I was a little nervous when it came to cold calling but it feels like a genuine conversation between you and the professor, making sure you understand the lecture topic, and it has really helped with lecture understanding.

How did you feel about specifications grading?

I was not the biggest fan of the specification grading. Although it can be really helpful in seeing where you are at in terms of a letter grade and what you need to do, it became a lot stressful especially near the end of the semester, when I had to show up to class every single day in order to make sure I passed all quizzes. Having a good amount being used up early in the semester due to circumstances out of my control only caused more anxiety and stress when it came to my grade in this class, and having your grade really dependent on one column, quizzes in this case, is not a good indicator of all the work and effort you may have put into this class.

How did you feel about help sessions and office hours?

Although the help sessions and office hours were useful for our group to keep pace in having something to present to our TA every week, updating them on what we have accomplished, when it comes to the actual sessions themselves they didn't seem too helpful, not having much to add on to our project, especially when there are different implementations for a website it is hard for them to really help with specifics.

How did you feel about the support from the TAs?

When it comes to the TAs, although there wasn't too much help for the actual project, they were still really helpful when it came to general questions, asking them what we need to improve for our projects, as well as being able to take a look at our exercises and providing great detail about them.

You should have read five papers that describe SOLID design: Single Responsibility, Open-Closed Principle, Liskov Substitution, Interface Segregation, and Dependency Inversion. What insights have they given you?

These papers have taught me a lot about object-oriented design, giving you a greater insight into why certain practices are done. I attempted to include as many of these principles as possible while writing code for our own project.

You should have read two papers that advised minimizing getters and setters. What insights have they given you?

I found these particular papers to be very interesting. Being taught to create getters and setters in high school cs classes, goes against what we learned but it makes sense after reading the paper. It is very important to minimize the work as well as methods the user has access to that could potentially break the program or could be sources for errors as code changes.

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

Having worked on backend, I did not know about flask or sqlalchemy beforehand, as well as the unit tests module. These became really helpful when we used app routing, as well as serving API requests and being able to push and pull data from our database intuitively with sqlalchemy. Finally, the unittests really helped by not having to have multiple try and except statements and instead being able to run tests specified without worrying about it breaking.

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

Vscode’s liveshare feature was especially helpful when working as a group. By all of us being able to change files as well as see where other people are in the repository, it became really helpful and helped us understand the code other people were writing, and overall were able to get work done much quicker.

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

Having worked on backend, it was not too bad having to learn new technologies such as Flask and getting API data pulled and serving it tour our frontend. When it comes to frontend technology, however, it seems the general consensus is that having to learn react, without too many resources from the class seemed impossible, causing our frontend team to spend a lot of time, particularly in the first phase in just learning the tech and having to make 14 different pages immediately after getting little exposure to it.

In the end, how much did you learn relative to other UT CS classes?

Relative to a lot of my other CS classes, I was able to learn a great amount when it came to this class. I learned a lot when it came to python from in class lectures, as well as how to serve API requests, being able to pull API data, as well as maintaining a database. I wish I was able to learn more about the frontend however but it seemed impossible at times trying to help the frontend without having any experience with web development, having to put in hours just to get the very basics of react/html/css/javascript.

--

--