Tuesday, January 27, 2026

CST370: Week 3 (Week 54)

 This week we covered breadth first search, depth first search, brute force and exhaustive algorithms, and divide and conquer. I was curious about real world applications of BFS and DFS and learned that BFS is useful for GPS/mapping algorithms for finding the nearest instance of some destination. For example, finding the nearest gas station or restaurant. Since it walks outward from the start location, it guarantees an optimal solution. I learned that some forms of DFS are useful for dependency mapping for software trees like the Linux kernel. They also have clever ways of parallelizing operations. Bitbake builds the Linux kernel but it does it in multiple threads without stumbling and minimizing the time that any module has to wait for another module to build. I.e. it uses the build machine's resources efficiently.

I feel like brute force algorithms may be the way most of us initially approach a problem since it's so direct. That said, I think that divide and conquer algorithms are really interesting. I'm thinking that complex problems where d&c can be applied, they can really benefit from modern computer systems where multi-threading and multiprocessing are commonplace. I look forward to exploring merge sort next week.

Tuesday, January 20, 2026

CST370: Week 2 (Week 53)

 This week we covered O(n) and Θ(n) notation for analyzing and comparing algorithms. We looked at recursive, non-recursive, and brute force algorithms. It is interesting to look at the speed (time complexity) of some algorithms like recursive tree traversal versus their iterative counterparts. Some time ago I auto generated a numeric file to use as an experiment. I watched the stack grow in the debugger over the course of the traversal/print program execution and it was a good way of seeing why recursion is avoided in memory constrained applications. This section was excellent in that it's a good way of helping us establish useful metrics for algorithms especially in cases where the comparison isn't intuitive or obvious.

Tuesday, January 13, 2026

CST370: Week 1 (Week 52)

 This  week we eased into the material by reviewing fundamental data structures like (queues, stacks, linked lists). We also reviewed trees, graphs, and weighted/unweighted maps which I think will be a foundation for what's to come in this class. We had puzzles to solve as exercises which I feel is a good way of sharpening the skills that help us break down problems algorithmically. HW0 and HW1 were relatively straight forward and remind me of programming problems that I used to use as practice when preparing for interviews. I think that in the future a lot of these types of problems will be solved by AI but I think it's incredibly valuable for us, especially as computer scientists to have a strong foundation in solving these problems by hand.

CST370: Week 7 (Week 58)

 This week we covered non-comparison sorting, dynamic programming, Warshall's algorithm, Floyd's algorithm, Greedy Technique, and Pr...