Posts

CST438 Learning Journal 4

I think the most interesting thing I learned from Chapter 9 of Software Engineering at Google is that code reviews are not just about finding bugs—they are an essential way of sharing knowledge and maintaining long-term code quality. Before reading this chapter, I thought code reviews were mainly a final step before merging changes. However, I now understand that they are also a learning opportunity for both the author and the reviewer. One point that stood out to me was Google's emphasis on making code reviews small and manageable. Smaller changes are easier to understand, receive feedback on more quickly, and reduce the chance of introducing errors. This approach encourages continuous improvement rather than waiting until a large feature is completed. I also found it interesting that reviewers are expected to focus on the overall quality, readability, and maintainability of the code instead of only checking whether it works. Another valuable lesson was the importance of creating ...

CST438 Learning Journal 3

  Describe what are the good points about using Git for source code management.  What are possible problems that Git merge does not solve when merging code from different developers?    Git is a useful source code management tool because it helps developers keep track of changes made to a project over time. Each commit creates a record of changes, which makes it easier to understand how the code has developed and to return to an earlier version if a new change causes problems. Git also supports branching, allowing developers to work on new features, bug fixes, or experiments without immediately changing the main version of the project. This is especially helpful when several developers are working on the same project because each person can work independently and later merge their changes together. Git also makes collaboration easier through shared repositories, and the commit history can help with code reviews by showing exactly what was changed and why. Since Git i...

CST438 Learning Journal 2

During this React lab, I gained a much better understanding of how React applications are structured and how the different pieces work together. One of the biggest concepts I learned was that React is built around components , which are reusable pieces of the user interface. Breaking an application into components like Login, Register, Order, and Settings made the project much easier to organize and understand. I also learned how state works using the { useState }  hook. Instead of manually updating the page, React automatically re-renders components whenever the state changes. The { useEffect } hook was another important concept because it allowed me to load data from the backend when a component first renders, such as displaying a customer's order history. Another valuable lesson was learning how React communicates with a Spring Boot backend using the fetch() API. I used GET, POST, PUT, and DELETE requests to retrieve, create, update, and delete customer and order information...

CST438 Learning Journal 1

Before starting this Software Engineering course, I expected it to focus primarily on programming techniques and learning how to write better code. I assumed most of the class would be about using different programming languages, design patterns, and frameworks to build applications. I also expected to spend time learning debugging techniques and improving coding efficiency. While I knew teamwork might be discussed, I did not realize how much emphasis software engineering places on the overall process of developing and maintaining software. After completing the first week, my perspective has changed. I now understand that software engineering is much broader than just programming. Writing code is only one part of creating successful software. The course introduced concepts like maintainability, sustainability, testing strategies, version control, and the importance of making design decisions that support long-term development. These topics highlighted that software often lives for man...

CST383 Learning Log #7

  This week focused on classification models, particularly logistic regression and k-nearest neighbors (kNN), as well as evaluating model performance. One of the most useful concepts I learned was how logistic regression uses the sigmoid function to convert a linear combination of predictors into a probability between 0 and 1. Before this week, I understood classification at a high level, but I did not fully understand how a model could estimate the probability that an observation belongs to a particular class. I also learned more about confusion matrices and the metrics derived from them, including accuracy, precision, recall, and false positives. Working through examples helped me see that accuracy alone does not always tell the full story, especially when one type of error is more important than another. Understanding recall was particularly helpful because it measures how well a model identifies actual positive cases. Another important topic was the comparison between logistic ...

CST383 Learning Log #6

     This week in class focused on several important machine learning concepts, including linear regression, classification, train/test splits, model evaluation, and hyperparameter tuning. One of the biggest takeaways for me was understanding the difference between training a model and evaluating how well it generalizes to new data. Before this week, I tended to focus on how well a model fit the training data, but I now understand that test performance is a much better indicator of how useful a model will be in practice. I also learned more about the role of hyperparameters and how they differ from model parameters. The discussion of GridSearchCV helped me understand how machine learning practitioners systematically search for better hyperparameter values rather than choosing them arbitrarily. I found it interesting that the best hyperparameters can vary significantly depending on the dataset being used. One concept that I’m still working to fully understand is the tradeo...

CST383 Learning Log #5

  This week focused on data exploration, preprocessing, and building a K-Nearest Neighbors (KNN) classification model. One of the most interesting topics was learning how important it is to understand and clean data before training a model. The diabetes dataset looked clean at first because there were no missing values, but after exploring the data more closely, we discovered that many predictor variables contained zeros that were likely acting as missing values. This showed me that data quality problems are not always obvious and that domain knowledge is important when analyzing datasets. I also learned how visualization can reveal patterns that are difficult to see in summary statistics alone. Histograms, boxplots, scatterplots, and pair plots helped identify outliers and suspicious values. The process of removing problematic rows and then standardizing the data before applying KNN made it clear that preprocessing can have a major impact on model performance. One concept I am sti...