Part 1: Looking Back
Looking back, I think the course conveyed its main ideas pretty well, especially because the concepts kept coming back in different ways instead of only being taught once. Testing, design patterns, abstraction, inheritance, polymorphism, and class design all felt more abstract at first, but they started to make more sense once we applied them to projects like Darwin and Life. Some parts did feel overwhelming because there were so many details and requirements at once, but that also made the course feel closer to real programming work.
One lesson I will carry forward is the importance of writing code that other people can understand, test, and build on. Unit testing and acceptance testing surprised me the most. At first, they felt like extra work, but later they became useful because they made it easier to catch mistakes and feel confident about changes.
One tool or technique that I found really useful was the use of testing in smaller scale projects. I had mostly thought of testing as something for larger projects before, but using it for Darwin and Life made it easier to check edge cases and avoid breaking earlier functionality. It also made the development process feel more organized and efficient, which was a nice experience.
Compared to my other CS classes at UT, I think I grew more in practical object-oriented programming skills than in theory. This course made me more comfortable designing classes, separating responsibilities, reading specifications carefully, and thinking about how different objects interact in a program. That kind of growth feels valuable because it connects more directly to real-world software work.
Part 2: Your Experiences
14 collaborative exercises on Ed Lessons with 2 drops
What worked well?
They helped reinforce weekly concepts through practice and collaboration.
What could be improved?
Some exercises could be shorter and less repetitive.
40 collaborative quizzes on Canvas with 5 drops
What worked well?
They kept us consistently engaged with the material.
What could be improved?
There could be fewer quizzes overall.
9 problems on Kattis with 1 drop
What worked well?
The immediate feedback made debugging and learning easier.
What could be improved?
Some problems could connect more clearly to the course projects.
Continuous Integration
What worked well? It helped catch errors early and made testing new features and improvements smoother.
What could be improved? The setup and error messages could be explained more clearly.
Cold Calling
What worked well?
It encouraged participation and made class more active.
What could be improved?
It would help to have a little more time to think before answering.
Part 3: Closing Thoughts
Overall, this course was challenging, but it taught me a lot about what good OOP looks like. Even when parts of it felt overwhelming, the mix of concepts, testing, tools, and projects helped me build habits that I know I will carry forward.