CS 315 Intermediate Algorithms
This course focuses on graph algorithms, algorithm design patterns, and complexity classes. The first part of the course is on graph representation, graph search, topological sort, minimum spanning trees, shortest paths, and network flows. The second part includes recursion, dynamic programming, divide-and-conquer, and greedy algorithms. The third part talks about time complexity, reductions, and NP-completeness. The course involves designing, implementing, and analyzing algorithms.
CS 410/510 Selected Topics on Optimization
This course examines some fundamental knowledge about optimization. The course starts with a review of prerequisite mathematics, proceeds with the convex optimization theory such as convexity, duality, and optimality conditions, and further expands to distributed, primal-dual, and approximate optimization algorithms. It also covers online convex optimization and competitive analysis. This is an intensively theoretical course which requires prior knowledge of calculus, linear algebra, and probabilities.
CS 445/545 Modeling and Simulation
This course provides both practical and theoretical experiences on modeling and simulating queueing systems and networks. On the practical side, the course introduces concepts, principles, and empirical guidelines for designing, implementing, and debugging discrete-event simulations, and analyzing the simulation inputs and results. On the theoretical side, it focuses on statistics, queueing theory, and Markov chains. The course involves programming simulations and solving math problems.