I am not teaching on a regular schedule. Courses listed below are representative of my interests and have come about due to special circumstances. Feel free to contact me if you are interested in a master class project course that may lead to a published article or to a MS/PhD thesis. For examples of articles and theses projects, look under the Publications header above.
For an example of an article which is a follow-up of the CSC499 class listed below, click here. For examples of two posters that summarize the two completed projects in this course, click here and here.
CSC499 (Special Topics for Honors Undergraduate Students, Spring 2015)
Stochastic Combinatorial Optimization as Combinatorial Puzzles: Exploratory Solver Prototyping
This is a project-oriented class for students with strong background in calculus, discrete mathematics, statistics, data structures, and programming in Python or alternative scripting languages. Similar to students of music who are expected to sight-read and interpret a musical score, students in this class are expected to read an existing prototype code and create a new combinatorial solver in an alternate programming language. The prototype code is briefly introduced in class and by the end of the semester, student pairs will demonstrate the functional equivalence of the two stochastic solver prototypes. Moreover, a series of rigorous asymptotic performance experiments on problem instances of increasing size is expected to demonstrate, with statistical significance, the runtime performance differences between the two solvers.
CSC591 (Special Topics for Graduate Students, Spring 2014)
Stochastic Combinatorial Optimization: Prototyping State-Of-The-Art Solutions to Hard Problems
Stochastic combinatorial optimization is at the top of the ‘Big data analytics’ pyramid that layers a number of related topics. This is a project-oriented class for students with interests to pursue a Ph.D. in stochastic optimization. This course introduces students not only to hard combinatorial problems but also (1) to new algorithmic approaches that re-formulate the problem as a self-avoiding walk, (2) to new data structures for the next generation of combinatorial solvers that may outperform state-of-the-art public domain C/C++ solver prototypes, (3) to rigorous asymptotic performance experiments on problem instances of increasing size to demonstrate, with statistical significance, the runtime performance differences between the competing solvers.
For an example of two state-of-the-art solver performance comparisons, see Low-Autocorrelation Binary Sequences: On Improved Merit Factors and Runtime Predictions to Achieve Them
CSC316 - Data Structures for Computer Scientists
Abstract data types; abstract and implementation-level views of data types. Linear and branching data structures, including stacks, queues, trees, heaps, hash tables, graphs, and others at discretion of instructor. Best, worst, and average case asymptotic time and space complexity as a means of formal analysis of iterative and recursive algorithms.
For an example of the teaching style, see Franc Brglez and Young J. Pyun. On the Use of Isomorphs to Enhance the Teaching and the Grading Methods in a Data Structures Course.>