Posts

Computer Science BS Journal (CST370) : Week 6

 This week in CST370, we focused on advanced data structures designed to improve efficiency. We started with AVL Trees , which are self-balancing binary search trees. I learned how rotations help maintain balance after insertions and deletions, ensuring operations like search, insert, and delete stay at  O ( log ⁡ n ) O(\log n) O ( log n ) . Next, we studied 2-3 Trees , another balanced search tree structure. Unlike binary trees, nodes can store one or two keys, which helps keep the tree perfectly balanced. This guarantees efficient operations and deepened my understanding of how balancing improves performance. We then covered Heaps and Heapsort . A heap is a complete binary tree that satisfies the heap property (max-heap or min-heap). I learned how heaps are useful for priority queues and how Heapsort uses the heap structure to sort elements in O ( n log ⁡ n ) O(n \log n) O ( n log n ) time without needing extra space like merge sort. Finally, we explored Hashing , which ...

Computer Science BS Journal (CST370) : Week 5

 This week in CST370, we explored several new algorithm design techniques and data structure concepts. We started with quick sort , a divide and conquer sorting algorithm that selects a pivot and partitions elements into smaller and larger groups. I learned how its average time complexity of  O ( n log ⁡ n ) O(n \log n) O ( n log n ) makes it very efficient in practice, even though poor pivot choices can slow it down. We also studied binary tree traversal and height . Traversals like preorder, inorder, and postorder help process tree nodes in different orders depending on the problem. Understanding tree height showed how it affects performance, since deeper trees can increase search and traversal time. Next, we discussed decrease and conquer , which solves problems by reducing them into smaller instances of the same problem. This strategy feels more incremental than divide and conquer and is useful for algorithms like insertion sort or binary search. Finally, we learned ab...

Computer Science BS Journal (CST370) : Week 4

 This week in CST370, we focused on merge sort and completed our midterm, which reviewed many of the algorithm concepts we’ve covered so far. Learning merge sort helped me better understand the divide and conquer strategy. The algorithm works by splitting a list into smaller halves, recursively sorting each half, and then merging them back together in order. I found it interesting how breaking a problem into smaller pieces can lead to a much more efficient solution, with a time complexity of  O ( n log ⁡ n ) O(n \log n) O ( n log n ) , compared to simpler sorting methods. We also took the midterm, which tested topics like asymptotic notation, brute force methods, recursion, and graph search algorithms such as BFS and DFS. Reviewing these concepts helped reinforce how different techniques are suited for different problems and how important it is to analyze efficiency before choosing an approach. Overall, this week strengthened my understanding of sorting algorithms and gave ...

Computer Science BS Journal (CST370) : Week 3

 This week in CST370 focused on foundational algorithm design strategies and search techniques. We started with brute force string matching and exhaustive search , which involve checking all possible matches or solutions to find a correct answer. Although these approaches are often inefficient, they are simple to understand and serve as a good starting point for problem solving. We then learned about the depth-first search (DFS) algorithm , which explores a structure by going as deep as possible before backtracking. DFS is useful for tasks like path finding and exploring all possible configurations, especially when memory usage needs to be minimized. Next, we studied the breadth-first search (BFS) algorithm , which explores all nodes at one level before moving deeper. BFS is especially effective for finding the shortest path in unweighted graphs, though it typically requires more memory than DFS. Finally, we were introduced to divide and conquer algorithm design , a strategy tha...

Computer Science BS Journal (CST370) : Week 2

       This week in CST370 we focused on understanding how to analyze and reason about algorithm efficiency. We began with asymptotic notations , which provide a way to describe an algorithm’s performance as input size grows. Notations like Big-O help us focus on long-term behavior rather than exact runtimes, making it easier to compare algorithms. We then explored the analysis of nonrecursive algorithms , where we evaluate loops and statements to determine time complexity. This reinforced how simple code structures can still have significant performance impacts depending on how often operations are repeated. Next, we studied the analysis of recursive algorithms , which introduced recurrence relations. Learning how to break a problem into smaller subproblems and analyze how recursive calls contribute to overall complexity helped clarify how recursion affects performance. Finally, we covered brute force algorithm design , which emphasizes solving problems by exhaustiv...

Computer Science BS Journal (CST370) : Week 1

      This journal entry marks the first week completion of my CST370 class. I'm going to be honest, this looks like it will be a tough one. This week we covered a variety of topics in the lectures ranging from and introduction to algorithms, some pseudocode examples, important problem types (sorting and searching, graphs), fundamental data structures, algorithm analysis frameworks, and some puzzle problems. It was a lot to cover in a week one but I believe that it was all necessary for us to learn/review ASAP. I really liked learning about the weighted coin puzzle. It was a basic puzzle but it teaches you how you can narrow down a fake among a group of things, that logic can be applied to many different scenarios.       After learning about the coin puzzle I immediately thought of a similar puzzle with light bulbs and switches where you trying and find out which switch turns on the light in another room(3 switches 1 light bulb). Where you try to find ...

Computer Science BS Journal (CST334) : Week 8

 This was the final week for CST334. I just finished my final exam a little while ago and I can't tell you how happy I was that the time we were given to finish the final was two hours rather than one. My midterm suffered because I could not finish my exam in time, I had to "YOLO" a few questions for partial credit and ended up misreading two questions and putting answers not even related to those questions haha.  CST334 has been an amazing class. My biggest takeaways from CST334 had to of been Address Spaces, Files and Directories, and File Systems(Access and Data). These were honestly some of the things that were easier for me to understand so I feel like I learned the most from these topics. I think the biggest challenge for me in this class was learning to convert hex to decimal and vice versa. I know that seems ridiculous but only at the very end of the class did I get the hang of it and realize how simple it was. Another challenge for me was trying to remember all o...