Software Design (7/8/25)

During Week 1, I worked on Lab 00 and Lab 01, which introduced foundational tools and concepts like Git, GitHub Classroom, IntelliJ, unit testing, and Java interfaces. Lab 00 was a setup-focused assignment that ensured our development environments were properly configured. This included learning to use Git commands like git clone, git add, git commit, and git push, which I used to manage my code and collaborate through GitHub. Getting comfortable with these commands was a bit tricky at first, especially resolving issues when pushing changes, but the repetition helped solidify the workflow. Now, I feel more confident using Git as a version control tool, and I know it’ll be essential in future team-based projects.

Lab 01 was more involved and had me implement Java classes such as Shape, Rectangle, and Triangle, along with a ShapeFactory and ShapeReader. I also had to write unit tests using JUnit. Writing unit tests was an eye-opener because it forced me to think critically about how to break my code into testable units. I realized the importance of testing not only happy-path cases but also edge cases. The feedback from the test runner was really helpful in debugging and confirming that my logic was solid.

Although we haven’t formally covered interfaces in lecture yet, implementing the Shape interface helped me start to build a mental model. I understand that interfaces define contracts—specific methods a class must implement—which promotes code consistency and flexibility. It was challenging to grasp the full power of interfaces at first, but I can already see how they help with scalability and organization in object-oriented design.

Overall, Week 1 was challenging but rewarding. The practice with Git and testing is already reshaping how I think about code quality and collaboration. Going forward, I plan to integrate testing earlier into my workflow and deepen my understanding of object-oriented principles like interfaces and inheritance. These foundations will undoubtedly support my success in later labs and in professional software development.

Leave a Comment

Your email address will not be published. Required fields are marked *