Week8 CST438

List the 5 most important things that you learned in the course, and why you chose them. Were there topics would you like to see added or deleted from this course?

This semester contained a lot of important material that I would deem helpful in the future of my career but if I were to just pick the five of most important things I had learned in this course they would be the two models of the software development lifecycle which are Agile and Plan & Document also known as Waterfall model, creating tests such as those in our assignment project with Selenium and junit, message queuing for micro-services with RabbitMQ, our development with React and Spring Boot REST API, and lastly deploying on AWS.

1. SDLC (Agile and Waterfall)

The reason I chose the software development life cycle models as something that was important to me this semester is due to being exposed to different approaches to how software can be created especially at an industry level. Like how the Software Engineering at Google book had mentioned the difference between programming as a short-term focus on immediate results and software engineering pertaining to time, scaling, and trade-offs over a life span of a project. This made me realize that I’ve never actually experienced a full development life cycle at a professional level. Before this course, I mostly just wrote code, and if it worked, I deployed it without thinking about long‑term maintenance or future changes.

Now I'm looking at a different methodology that involves planning, designing, analyzing, reviewing, and deploying in a proper structured way. The SDLC models enhance this understanding by showing how real software engineering requires intentional processes, not just the code itself. Additionally it was interesting to see the practicality of Agile at work using the GitHub Project Iterations Development Template. Being able to see the actual tracking of issues and initiating pull requests for each iteration was a significant learning experience from this course and it allowed me to understand how to work better in a group environment. As for the Plan & Document it made me think much more about how to plan before actually designing and coding. Creating the SRS document with the UML use case diagram and descriptive Use Cases helped map out the specifications of what to expect from the project. There is much more I could discuss, but these were the main points that stood out to me.

2. Testing with Selenium and Unit Tests

The reason I chose testing with Selenium and unit tests as an important topic this semester is because I realized how essential reviewing and validating code is within the software development lifecycle. Being able to understand the differences in testing also helped me think more about how my code will get better. Unit tests demonstrated that isolated checks can catch the smaller scope of logical error and on the other hand Selenium system tests can check the full end-to-end testing to ensure the entirety of the application behaves correctly from a user's perspective.

3. RabbitMQ Messaging

I chose this because of how it demonstrates how Service-Oriented Architecture keeps systems decoupled by letting services communicate through messages instead of accessing each other's databases. It's a great demonstration of loose coupling which allows each service to be independent and allows the system to stay organized and scalable.

4. React & Springboot REST API

I chose this as an important learning experience because before I had only known how to build web pages using Express and ejs, and consuming an existing API. Now I've learned how to create my own REST API with Spring Boot and connect it to a React front end. I had learned from this course that React renders everything on the client side instead of how Express and EJS does it through the server to generate the full HTML pages. I think seeing this provided me an understanding of decoupled architecture at work and why React is widely utilized for UI intensive apps.

5. Deploying on AWS

Lastly, I chose AWS deployment because it demonstrated a way to run software in the cloud with replaceable “cattle” instances rather than hand maintained servers. This subject of the course enhanced my understanding of VMs, containers, and serverless functions. It also introduced me to the idea of infrastructure as a service which is the idea of having cloud providers supply computing resources in order to scale or recover without relying on a single physical machine.


Finally I would like to just discuss what I would like added in the course or removed from the course. I honestly believe that everything we had learned was important to the overall learning experience and knowledge required for a CS major. I believe that maybe adding some discussion boards would be nice to discuss subject matters like what SDLC model would you choose, or how AI is shaping software engineering. Additionally, I would like to explore the design oriented aspect of Plan & Document like putting into practice the UML class diagram similarly to how we did with the SRS. I would say everything this semester was important and I would not remove anything. Adding more to a fast paced 8 week course would be tough but I would expand more on the different types of cloud computing used in the industry today.

Comments

Popular Posts