The long term takeaways from this class are:
- 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 I think the course conveyed those takeaways?
I think the course did a solid job conveying those takeaways. The emphasis on testing throughout the development process, from before coding to after implementation, is crucial in ensuring code quality. Similarly, highlighting the importance of choosing appropriate iterators and containers aligns with best practices in object-oriented design. Encouraging reuse, symmetry, and collaboration further reinforces good programming habits. These concepts were integrated into the curriculum well and were reinforced in practice, both in projects and excercies.
Were there any other particular takeaways for me?
One particular takeaway for me would be the emphasis on building adapters on top of containers and iterators. This approach not only promotes code reuse but also fosters a deeper understanding of how different components can be composed to achieve desired functionality.
What required tool did I not know and now find very useful?
A required tool did I not know and now find very useful is Postman. Postman simplifies the process of designing, building, testing, and documenting APIs. It provides a user-friendly interface for creating and organizing API requests, making it easy for developers to interact with their APIs during the development process. With Postman, developers can send requests, inspect responses, and debug issues in a structured and efficient manner. The app made it much easier to build, debug, and test our API.
What's the most helpful Web dev tool our group used that was not required?
The most helpful Web dev tool we used was the web inspector, as it is crucial for web development. The inspector offers developers powerful tools to analyze, debug, and optimize their websites. It also helped us test for responsiveness, an important aspect of the project.
How did you feel about our group having to self-teach many technologies?
Having to self-teach many technologies was a challenging but also rewarding experience. Self-teaching is a valuable approach in the field of technology, where new tools, languages, and frameworks are constantly emerging. While it was daunting to navigate through a sea of information and resources on our own, self-teaching helped foster independence, resourcefulness, and adaptability, which are all crucial skills in the world of software engineering.
In the end, how much did I learn relative to other UT CS classes?
This class provided a comprehensive understanding of software engineering principles, testing methodologies, and practical coding skills. As a result, I learned an equal amount relative to other UT CS classes, in terms of educational value.
Pick at least 5 of the following that I felt passionate about, tell and write about whether I loved or hated them, and give any suggestions for improving them.
- specifications grading
- cold calling
- TA help sessions and office hours
- TA mentoring on Slack
- Ed Discussion
- daily quizzes on Canvas
- quizzes sometimes being repeated to give you a second chance
- pair programming on exercises on HackerRank
- weekly blog entries
- weekly papers on Perusall
- rubrics on GitLab issues
- civic engagement requirement on project
- having a customer and developer role
- user stories
- CATME team formation
- CATME peer reviews
- Postman
- unit testing
- acceptance testing
- UML
- PechaKucha on YouTube
Feedback on Course Aspects
- Rubrics on GitLab issues: I really liked the rubrics on GitLab issues, as that made it easy to track the completion of the project and make sure neccessary components for the submission were completed.
- Daily Quizzes: I did not enjoy the daily quizzes at all. They felt overwhelming, and sometimes not having a depth of understanding in the quiz's topic caused me significant difficulty. I think you should consider reducing the frequency of quizzes or incorporating them into class activities to make them less burdensome.
- Pair Programming: I really enjoyed pair programming on the exercises, as they were a great way to learn from each other. Pair programming encourages collaboration, problem-solving, and knowledge sharing among students.
- Specifications grading: I liked the specifications grading, which provided clarity and structure to assessments, ensuring that students understand what is expected of them.
- ED Discussion: I really liked using ED Discussion, as Ed Discussion can facilitate peer-to-peer learning and collaboration, allowing me to ask questions and get insights outside of class.