Skip to main content

Posts

CST438: Hands-On System Testing and Cloud Technologies

This week, I worked on both system testing and understanding cloud and distributed system concepts. One of the main things I learned was how to build Selenium system tests that simulate real user behavior. I created tests in which an instructor enters final grades and in which instructor-created assignments appear in a student’s view. While doing this, I learned how important it is to have all parts of the system running, including the frontend, backend, and external services like the gradebook. I also improved my debugging skills by fixing issues with Selenium, such as incorrect XPath selectors, missing UI elements, and unnecessary alert handling. I also learned how to properly manage my code using Git and GitHub. I created branches, committed my changes, pushed them to GitHub, and opened pull requests for review. This helped me understand a more realistic development workflow and how collaboration works in a team environment. In addition to coding, I reviewed several key concepts i...
Recent posts

CST438: Sprint Planning & Team Collaboration Reflection

 This week, I learned the importance of clear communication and teamwork during sprint planning. Our team successfully reviewed feedback, confirmed that all tasks and user stories for Iteration 2 are well understood, and ensured that responsibilities are evenly distributed through the GitHub project board. I also learned how regular check-ins, early scheduling, and consistent updates can help keep everyone aligned and prevent delays as we move forward with the project.

CST438: The Importance of Code Reviews at Google

 The most interesting thing I learned from Software Engineering at Google is how important code reviews are for both code quality and team collaboration. I used to think code reviews were mainly for finding bugs, but I learned that they also focus on readability, maintainability, and sharing knowledge across the team . I also found it interesting that Google keeps reviews small and frequent , which makes them more effective and less overwhelming. Another important idea is that different roles in a review (like the code owner and readability approver) each focus on different aspects of the code. Overall, this showed me that writing good code is not just about making it work, but also making sure others can understand and maintain it in the future.

CST438: Using Git for Source Code Management

 Git is very helpful for managing source code. It saves all changes, so we can see history and go back if something is wrong. It also helps many developers work together using branches. Each person can work on their own part without breaking the main code. GitHub also makes it easy to share code and review changes. However, Git merge cannot solve everything. Even if there is no conflict, the code can still have errors. For example, two developers may change different lines, but the final code may not work together. Git cannot understand logic, so developers still need to test and check the code after merging. Communication between developers is still important. 

CST438: React Learning Reflection and Insights

 This week I learned the basics of React, including what a component is and how it works. A React component is a function that returns UI elements. I also learned about hooks like useState for managing state and useEffect for running code when the page loads, such as fetching data. One important thing I learned is that using useEffect((_ => {}, []) runs only once when the component first renders. In my opinion, React has many strengths. It makes it easier to build interactive user interfaces using reusable components. It also helps organize code better and makes updates efficient because of its state management. However, React also has some weaknesses. It can be confusing at first, especially with hooks and state updates. There are also many concepts to learn, and sometimes it feels complex for small projects. Overall, React is powerful but has a learning curve, especially for beginners like me.

CST438: Understanding Software Engineering Beyond Coding

Before taking this course, I expected Software Engineering to focus mostly on coding and learning how to connect multiple software systems while applying algorithms through programming. I also hoped to learn about different tools and software that could be useful for future projects and my career as a developer. After completing week 1, my opinion changed a little. I realized that Software Engineering is not only about writing code, but also about designing systems that are maintainable and sustainable over time. The course also focuses on planning, testing strategies, version control, and collaboration in larger teams. It helped me understand that building software involves many engineering decisions, trade-offs, and long-term thinking, not just programming. x

CST370: Preparing for the Final: Algorithms in Practice

This week, I learned how several algorithms solve optimization and graph problems, including dynamic programming for the coin-collecting and coin-row problems, Floyd and Warshall algorithms for shortest paths and transitive closure, and Prim’s algorithm for minimum spanning trees. I practiced tracing tables step by step and understanding how intermediate states evolve, which helped me better connect the concepts across topics like sorting and greedy methods. I also started reviewing for the final exam by going through the review materials and key topics such as algorithm analysis, sorting, graph algorithms, and problem-solving strategies to reinforce my understanding and identify areas that need more practice. Additionally, I watched a video review  of Dijkstra’s algorithm  (https://www.youtube.com/watch?v=Gd92jSu_cZk) , which helped reinforce how to trace the algorithm step by step and understand how shortest paths are computed in practice.