Posts

CST 489 - Week 4

 Hey everyone, Since I have chosen to take part in the Certificate Track of the capstone project, I have faced some challenges during this week's assignments. This week, I spent time developing my certificate track capstone proposal, which helped me clarify my learning goals and better understand how each certification connects to my long-term career plans. Writing the proposal forced me to think beyond just completing courses and instead focus on the skills, artifacts, and outcomes I want to gain from each certificate. I also spent a significant amount of time trying to figure out how to enroll in the AWS Cloud Practitioner course. Navigating AWS’s training site was more complicated than I expected, and it took some trial and error to understand the different learning paths and options available. Although it was a bit frustrating, the experience helped me become more comfortable with AWS’s ecosystem and reminded me that problem-solving and persistence are essential parts of learni...

CST 438 - Week 8

 Hey everyone,      One of the most valuable things I learned in this course is the importance of testing and test-driven development. Through unit testing with tools like JUnit and Mockito, I learned how to verify that methods are called correctly and how mocks can isolate components during testing. Writing Selenium tests for React components also showed me how automated testing can catch issues that might not be obvious during manual testing. These concepts helped me understand why testing is critical for building reliable and maintainable software.      Another major takeaway from the course was learning how to build interactive user interfaces using React. Creating components that display data in tables, manage state with hooks like useState , and respond to user actions such as adding or removing items helped me understand how modern front-end applications work. This hands-on experience made concepts like state management, event handling, and com...

CST 438 - Week 6

 Hey everyone, This week in class, we explored two very different ways of approaching software development: the Agile method and the more traditional Plan-and-Document (Waterfall) method. I’ve heard these terms before, but actually comparing them side-by-side—and thinking about how they play out in real projects—helped everything click. Starting Point: How the Two Mindsets Differ One of the biggest differences I noticed is the mindset behind each approach. Waterfall assumes that we can plan almost everything in advance. It feels like writing a detailed roadmap before even starting the engine. Agile, on the other hand, seems to accept that surprises will happen. Instead of a fixed map, Agile works more like a GPS rerouting along the way. Planning: One Big Plan vs. Many Small Plans In Waterfall, planning happens early and intensely . Before any coding starts, you produce big documents—requirements, design diagrams, timelines. It’s clean and structured, but also kind of intimidati...

CST 438 - Week 6

 Hey everyone,      This week gave me a chance to dive into several different aspects of software development, from planning to testing to cloud concepts. During the Iteration 3 planning meeting, I gained a clearer understanding of how teams break down work and set realistic goals for a sprint. Watching the system testing video helped me see how the focus shifts from individual components to verifying that the entire system works as a whole. I also spent time reading about React component reuse, which reinforced the value of building modular, reusable pieces that make applications easier to maintain and scale.      I continued deepening my technical skills through Assignment 4 on system testing, where I applied what I learned to create meaningful end-to-end test scenarios. The SAG 25 reading on Compute as a Service expanded my understanding of cloud computing models, especially how virtual machines and containers provide scalable and flexible compute ...

CST 438 - Week 5

 Hey everyone, This week, I spent most of my time working on the React frontend for Iteration 2. I used the feedback from Assignment 2 to improve my components, clean up my code, and make the interface work more smoothly. As I worked through Assignment 3, I started feeling more confident using React and understanding how data and components connect to each other. We also had our Iteration 2 Planning Meeting, which helped me outline what needed to be done for this part of the project. Breaking the work into smaller tasks made the next steps feel more manageable. It showed me how planning ahead can make the development process easier and more organized. Alongside the coding work, I learned about larger tests by reading Chapter 14 from SAG. I learned the differences between unit tests, integration tests, and system-level tests, and why larger tests are important for finding bugs that happen when different parts of the system interact. Taking the quiz helped me review and remember the ...

CST 438 - Week 4

 Hey everyone,      While reading Software Engineering at Google , the most interesting and impactful idea I encountered is the concept that software engineering is fundamentally about managing complexity over time , not just writing code that works today. Google frames software engineering as the discipline of building software that continues to be understandable, maintainable, and scalable as systems, teams, and lifespans grow. This long-term perspective reframed how I think about engineering work.      What stood out most is Google’s idea of “time as the primary scaling factor.” Google’s codebases are expected to outlive individual engineers, teams, and even products. Because of this, Google optimizes for practices that reduce long-term friction—such as code readability, consistency, and maintainability—sometimes even at the expense of short-term productivity. The emphasis on making code easy for someone else to understand years later was striking...

CST438 - Week 3

 Hey everyone, This week’s lessons focused on two essential aspects of software engineering — testing and version control with Git . Through the readings, videos, and labs, I learned how both areas are crucial for building reliable software and working effectively in a team. The testing materials emphasized the importance of having a strong suite of automated tests to ensure that code works as expected and can be changed safely over time. The Git labs and videos helped me understand how developers collaborate on code, manage changes, and prevent conflicts in shared projects. From the testing labs and readings, I learned that testing isn’t just something done at the end of development; it’s an ongoing process that supports every stage of building software. The concept of the testing pyramid stood out — most tests should be unit tests (around 80%), followed by integration tests (15%) and a small number of end-to-end tests (5%). I also learned that small tests are limited to a singl...