Posts

Showing posts from July, 2025

Next Iteration: Completing User Stories with React

This week we covered large-scale software testing. We went over higher fidelity, longer execution time, and increased cost. We also explored the differences between large tests and unit tests. In this week’s assignment, we built out the React frontend for our registrar and gradebook services and we completed the user stories from Assignment 2. We implemented pages for students, instructors, and admin users using reusable React components. We ensured students were able to view schedules, enroll in courses, see assignments, and check transcripts. Instructors could manage assignments, enter grades, and finalize course scores. Admin can now also manage users and course sections. We followed a GitHub-based workflow with pull requests and code reviews to  track progress for each task in this iteration.

Implementing REST Controllers with Service Oriented Architechture

This week, we focused on building the backend for our project application using service-oriented architecture (SOA). I haven’t done anything like this before, but it was neat to learn how services work together in SOA. Our lecture walked us through the implementation of controller classes. These are responsible for handling HTTP requests and interacting with the service layer. We structured our REST endpoints using Spring Boot annotations like @RestController , @GetMapping , @PostMapping , and @PutMapping . This helped us understand how controllers serve as the interface between clients and businesses. We used tools like Postman to manually test REST endpoints and verify the correctness of our backend code. We also wrote JUnit tests for our controller classes using mocking frameworks like Mockito. Understanding how to structure these tests is essential for ensuring the reliability and maintainability of our backend code. Our reading focused on the code review process. The code review...

Automated Testing and Collaboration on Git

  This week we covered automated testing and explored the tools and techniques used to implement it. In our lab, we learned about the different levels of testing, like unit tests, integration tests, and end-to-end tests. We also discussed the benefits of testing. Tests reduce debugging time and make for a better design. That helps alleviate the stress of working on larger code bases and helps increase confidence when making changes. In our automated tests, we made sure each test was able to set up its environment, invoke the code under test, and verify the results automatically. We also explored Git for source code management. Git provides advantages like version tracking and easy collaboration with team members. It also gives us the ability to work on multiple branches without affecting the main codebase. Git merge allows teams to integrate changes from different contributors efficiently. However, Git merge may not solve all our problems. Even if the code merges without errors...

Real-Word Applications of React and Comparison

 This week I deepened my understanding of React through both the quiz and the hands-on development we did on Lab 3. We learned key concepts like immutability of props and the importance of unique keys in lists. In our lab, I was able to apply the ideas learned by building a Settings option that handled password changes and account deletion. This helped improve my debugging skills and my understanding of forms and asynchronous API interactions. I resolved a lot of real-world react errors and that taught me the importance of using these messages to resolve the issues. In previous courses we used Express to build web applications. This approach simplified the backend, but every user interaction required a full-page reload and limited the dynamic behavior of the UI. On the other hand, React offers a more interactive and responsive experience through its components and client-side rendering. It seems like React has a larger learning curve and requires more setup. However, React is mor...

Lessons in Maintainable Code and Backend Systems

This week, we were introduced to the differences between programming and software engineering. There was emphasis on the importance of time, scale, and trade-offs. Programming focuses on writing code, while software engineering is about maintaining and evolving code over time in a sustainable way. I learned that software systems with a long lifespan require practices that account for changing dependencies and collaboration across large teams. Hyrum’s Law seems to have stood out to me. This law shows how users depend on even unintended behaviors of software. The chapter also showed how clean, maintainable code is more important than clever shortcuts, especially for code that’s expected to last for years. This week we looked at the Spring framework and developed a REST API that allows customers to register, log in, create orders, and view their order history. In the first Lab, we focused on setting up the basic project structure and used Spring Boot. We created entity classes, reposito...