Associate Professor, Purdue University

Introduction to computing in industrial engineering. Reinforcement of scientific programming skills on typical IE tasks, together with introduction to simulation and related computer tools.

Some previous Syllabi: F2014, S2015, F2015, S2016, F2016This course is about algorithms that are inspired by naturally occurring phenomena and applying them to optimization, design and learning problems. The focus is on the process of abstracting algorithms from the observed phenomenon, their outcome analysis and comparison as well as their "science".

Syllabus: F2016An introduction to techniques for modeling random processes used in operations research. Markov chains, continuous time Markov processes, Markovian queues, reliability and inventory models.

Syllabus: S2014I have also taught the following courses while at The University of Toronto. Course materials are posted on a secured website, but the syllabus for each course is below.

Algorithm analysis: worst-case, average-case, and amortized complexity. Expected worst-case complexity, randomized quicksort and selection. Standard abstract data types, such as graphs, dictionaries, priority queues, and disjoint sets. A variety of data structures for implementing these abstract data types, such as balanced search trees, hashing, heaps, and disjoint forests. Design and comparison of data structures. Introduction to lower bounds.

Syllabus: Sum2013Design and analysis of algorithms and data structures that are essential to engineers in every aspect of the computer hardware and software industry. Review of background material (recurrences, asymptotics, summations, trees and graphs). Sorting, search trees and balanced search trees, amortized analysis, hash functions, dynamic programming, greedy algorithms, basic graph algorithms, minimum spanning trees, shortest paths, introduction to NP Completeness.

Syllabus: W2013Brief introduction to NP-completeness: polynomial time reductions, examples of various NP-complete problems, selfreducibility. Standard algorithm design techniques: greedy strategies, dynamic programming, network flows, linear programming, randomization, approximation algorithms, and others (if time permits). Students will be expected to use appropriate algorithm design principles and to show adequate skills at reasoning about the correctness and complexity of algorithms.

Syllabus: F2012Systems of linear equations, matrix algebra, determinants. Vector geometry in R2 and R3. Complex numbers. Rn: subspaces, linear independence, bases, dimension, column spaces, null spaces, rank and dimension formula. Orthogonality, orthonormal sets, Gram-Schmidt orthogonalization process, least square approximation. Linear transformations from Rn to Rm. The determinant, classical adjoint, Cramer's rule. Eigenvalues, eigenvectors, eigenspaces, diagonalization. Function spaces and applications to a system of linear differential equations. The real and complex number fields.

Syllabus: S2012