This course taught me algorithms. A whole ton of algorithms.
The beginning of the course had a very similar taste to CS 240. There was discussion of runtimes and proofs involving these concepts. After this, CS 341 diverged to covering more details on general algorithms whereas CS 240 talked more about data structures.
The main topics discussed in this course were divide and conquer, greedy, dynamic, graphs and NP-completeness.
My favourite unit was the dynamic algorithm unit. Something about twisting the problem approach to save time in calculating overlapping subproblems to greatly reduce runtime gave it all a touch of magic.
In general, this course made me more aware about the approach I take to solve a programming problem and what actions I should take to save time and resources.