Posts

CST 438 - Week 8 Learning Journal - Course Overview

  Throughout this course, I learned that software engineering involves much more than just writing code. It also requires planning, testing, teamwork, documentation, and thinking about how software will be maintained and improved over time. The five most important things I learned were working with REST APIs, developing a frontend with React, system testing, using Git in a team environment, and deploying an application to AWS. 1. REST APIs and Backend Development One of the most important things I learned was how REST APIs allow the frontend and backend of an application to communicate. Before this course, I understood the general idea of a backend, but working with REST APIs helped me better understand how an application is divided into different components. I learned how HTTP requests such as GET, POST, PUT, and DELETE can be used to retrieve and modify data. 2. React and Frontend Development Another important skill I learned was developing a frontend using React. React showed me...

CST 438 - Week 7 Learning Journal Agile Process vs Waterfall Process

One thing I learned is that Agile process and Waterfall process take very different approaches to developing software. In a Waterfall process, the project is divided into defined phases such as requirements, design, implementation, testing, deployment, and maintenance. A large amount of planning and documentation is completed before moving on to later phases. For example, an SRS is used to document the requirements before the system is designed and implemented. Agile takes a more iterative approach. Instead of trying to define the entire system at the beginning, the team develops the software in smaller increments or iterations. Requirements can be represented as user stories and prioritized in a backlog. During each iteration, the team selects work, implements it, tests it, and produces a working increment of the software. This makes it easier to respond when requirements or priorities change. I think one of the biggest differences is how the two processes handle change. With Waterfal...

CST 438 - Week 6 Learning Journal - Importance of this Week's Concepts

This week, I learned how to use Selenium for automated testing as part of our group project. Selenium allows developers to automate interactions with web applications, making it easier to test features without having to perform every step manually. I learned how Selenium scripts can simulate user actions such as clicking buttons, filling out forms, and verifying that web pages behave as expected. Working with Selenium also showed me how automated testing improves software quality by catching bugs early and making regression testing faster and more reliable. This chapter introduced the concept of cloud computing and how computing resources such as servers, storage, and networking can be delivered as on-demand services over the internet. I learned about the benefits of cloud-based services, including scalability, flexibility, cost efficiency, and the ability to quickly deploy applications without managing physical hardware. The chapter also explained how organizations use cloud ...

Software Engineering - CST 438 - Week 5 - Learning Concepts

This week I learned about the purpose and importance of larger tests in software engineering. Unlike unit tests, larger tests run in environments that are closer to production, which makes them more realistic but also more expensive and slower to execute. I also learned about the challenges of large testing, such as configuring test environments, managing realistic test data, and maintaining test ownership. Finally, I learned that different types of larger tests, including canary testing and A/B testing, help validate software behavior under real-world conditions before changes are fully released.

CST 438 - Week 4 - "Software Engineering at Google"

One of the most interesting things I learned from " Software Engineering at Google"  was how much emphasis Google places on the code review process. Before reading this chapter, I thought code reviews were mainly about finding bugs or checking if the code worked correctly. However, I learned that a good code review is much more than that. Reviewers also consider whether the code is easy to understand, maintain, and extend in the future. This changed the way I think about writing code because it showed me that software development is a team effort, not just an individual task. I was also surprised to learn about the different roles involved in a code review, such as the peer engineer, codebase owner, and language readability approver. Each person has a different responsibility, which helps ensure that the code meets technical standards, follows project conventions, and remains readable for future developers. I had never realized how structured the review process could be in a ...

CST 438 - Week 3 - Git

Git is a powerful source code management system because it allows developers to track changes, collaborate efficiently, and maintain a complete history of a project. By using branches, multiple developers can work on different features or bug fixes at the same time without affecting the main codebase. Git also makes it easy to revert to previous versions if mistakes are made, compare changes between versions, and keep a reliable backup of the project's history. These features improve teamwork, reduce the risk of losing work, and make software development more organized and efficient. Although Git's merge feature helps combine code from different developers, it cannot solve every problem. Git can detect and resolve many text-based conflicts, but it cannot determine whether the combined code works correctly or meets the intended requirements. Logical conflicts, such as two developers implementing incompatible features or introducing bugs that only appear during testing, still req...

CST 438 - Week 2 Learning Journal - Introduction to React

This week I learned the basics of React and how it is used to build user interfaces for web applications. One of the biggest concepts I learned is that React is component-based, which means you can break a website into smaller, reusable pieces called components. I also learned about JSX, which allows you to write HTML-like code inside JavaScript, making it easier to build and organize the user interface. We also explored how components can display dynamic data using props and how React updates the page efficiently when data changes. In my opinion, one of React's biggest strengths is that it makes it easier to build large and interactive web applications by reusing components instead of rewriting the same code. This can save time and make projects easier to maintain. Another strength is its fast performance because React only updates the parts of the page that change instead of reloading the entire page. One weakness of React is that it has a learning curve, especially for beginners...