Skip to main content

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.
Recent posts

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.

CST370: Exploring Efficient Data Structures This Week

 This week I focused on understanding different data structures that improve search efficiency, including AVL trees, 2-3 trees, heaps, and hashing. I learned how AVL trees maintain balance using balance factors and rotations, and how to identify when rotations like left, right, or double rotations are needed after insertion. For 2-3 trees, I studied how nodes can store one or two keys and how promotions work to keep the tree balanced with all leaves at the same level. I also learned about heaps and how they are implemented as complete binary trees. I practiced operations such as inserting elements, deleting the maximum, and building a heap using both top-down and bottom-up approaches. Understanding how heaps are represented using arrays helped me see how parent and child relationships are calculated using indices. I explored heap sort and how it repeatedly removes the maximum element to produce a sorted sequence with O(n log n) time complexity. For hashing, I learned how hash fun...