How well do you think the course conveyed the main takeaways?
Testing: The testing requirements for the project and covering unit testing in the lecture at the beginning of the course reinforced the need for testing very well.
Algorithm design: Not really sure where this was taught, so I don’t think this was conveyed well enough.
Container design: We covered iterable in Python a lot, probably too much, so this was conveyed very well.
Decorators: These were touched on and I don’t think I would use them much but it was good to learn them.
Being lazy: Generators and the yield function in Python were covered extensively, so I understand this topic well at this point.
Reuse and symmetry, refactoring, and making code beautiful: We covered this a bit at the end of the class but I think it could have been covered more.
Collaboration: We learned this very well during the course of the project. I definitely have a lot of takeaways relating to collaboration and teamwork.
Were there any other particular takeaways for you?
For me, I learned a lot of skills regarding working in a team and managing a larger scale project. This was the first time I worked on a group project where there was a significant amount of leeway so I felt like it helped me learn a lot about teamwork and time management.
How did you feel about cold calling?
Cold calling gave me a lot of anxiety at times but it did keep me listening and engaged. It was scary when I was called but I never felt attacked for not knowing the right answer. Downing is very understanding and helps you through questions he asks if you don’t know the answer at first.
How did you feel about specifications grading?
Specifications grading in my opinion made it much easier to get a good grade in the class however I feel like it encourages people to do the bare minimum to the detriment of learning. In regards to blogs, papers, exercises, and quizzes, specification grading made these assignments very simple as there were not many ways the grade could go. Also, the virtual tokens aspect helped take the stress from getting a bad grade on an assignment. With regards to the project, however, I dislike this grading scheme because it discourages going above and beyond and makes people just want to do the bare minimum requirements.
How did you feel about help sessions and office hours?
I never went to help sessions or office hours so I have no idea about how helpful they would be. I feel like with how this class is designed with the project, it’s best to try to solve problems by yourself, using online documentation before going to office hours.
How did you feel about the support from the TAs?
The TA for my group was very helpful in answering our questions and giving us guidance on how to implement certain features. They were also very helpful in providing online resources for learning various tools for the project.
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?
I really enjoyed learning the papers about SOLID design, however, they were pretty outdated. This was the most software engineering we learned in the course. I really wish we talked about these principles more in class. They make me think a lot about how I write code and how I can write better code using these principles. They also made me question the principles themselves, about whether they are still important, and heavily used principles, today in 2022.
You should have read two papers that advised minimizing getters and setters. What insights have they given you?
These papers made me think more about what object-oriented programming is and made me want to learn more about it. I thought it was interesting how hated getters and setters are in this paradigm. I also thought about how this sentiment is today since so many frameworks basically encourage getters and setters.
What required tool did you not know and now find very useful?
Before this class, I was familiar with web development and I knew Angular, however, I had not learned React. After this class, I like React a lot and I think I will use it going forward for any future web development projects I have.
What’s the most helpful Web dev tool that your group used that was not required?
Using the MUI component library was very helpful for creating the look and feel of our website. Their components are material design, which makes them beautiful, but they are also very powerful, which helped us create our powerful filtering and sorting capabilities.
How did you feel about your group having to self-teach many, many technologies?
While I understand that this is an important skill to learn, in the context of a class I did find it frustrating that we had to learn so much on our own. While I’m happy with our project, I think it would have been so much better if we were taught best practices and coding techniques in terms of these frameworks, like Flask and React. I felt like I was making it up as I went sometimes and I think our code could be a lot better in some areas, but I don’t know the best way to make it better.
In the end, how much did you learn relative to other UT CS classes?
In terms of theoretical knowledge, I learned a lot less in this class than in others. We barely talked about refactoring and general software engineering principles, which I found very disappointing. However, I did learn a lot of practical skills, probably more than I have in any other CS class, because of the website project and all the tools we had to learn to make it. I already knew things like Flask, RESTful APIs, and general web development, however, I did not know React or SQL.
How can the course improve?
I think this class would be more useful if it covered more software engineering principles. For example, reading about SOLID design in the papers was interesting, but we never talked about it in class, which made it easy to forget or not understand. Spending so much time talking about Python I believe is a waste of time because this class should be more about software engineering principles and not an intro to programming course. We barely learned about agile and never really learned about project management, requirements engineering, etc. The project was cool and helpful in getting a general understanding of what software engineering is like, but with having to learn so much on my own, I didn’t feel like I was getting my money's worth out of this class.