Teaching

Courses

  • C(I)S 212 Computer Science III (Java): Spring 2017, Fall 2017, Spring 2018
  • C(I)S 315 Intermediate Algorithms: Winter 2020, Winter 2021, Winter 2022, Winter 2023, Spring 2023, Winter 2024, Spring 2024
  • C(I)S 410/510 Cloud Computing and Optimization: Winter 2017, Winter 2018
  • C(I)S 410/510 Selected Topics on Optimization: Fall 2018, Fall 2019, Fall 2020
  • C(I)S 445/545 Modeling and Simulation: Spring 2019, Spring 2020, Spring 2021
  • C(I)S 607 Seminar on Edge Computing: Winter 2018, Spring 2019, Spring 2020, Spring 2021, Spring 2022, Winter 2023, Fall 2023
  • C(I)S 621 Algorithms and Complexity: Winter 2019, Fall 2021, Fall 2023

Descriptions

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.