Teaching

Courses

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

Course Descriptions

(CIS 315) Intermediate Algorithms

This course focuses on graph algorithms, algorithm design patterns, and complexity analysis. 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 entropy, time complexity, reductions, and NP-completeness. The course involves designing, implementing, and analyzing algorithms.

(CIS 410/510) Selected Topics on Optimization

This course examines some fundamental theories of 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 a theoretical course with intensive mathematics, and requires knowledge of differential calculus, linear algebra, and probabilities.

(CIS 445/545) Modeling and Simulation

This course provides both practical and theoretical experiences on system modeling and simulation, with emphasis on 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.