Teaching
I have taught various courses over the years. Instead of enumerating them all, this page focuses on the most recent ones that are not special-topics or seminar-style format.
CS 6220: Data Mining Techniques
Description: Covers various aspects of data mining, including classification, prediction, ensemble methods, association rules, sequence mining, and cluster analysis. The class project involves hands-on practice of mining useful knowledge from a large data set.
Please note that my version of this course focuses on deeper understanding of how and why a technique works, not so much on "syntax" aspects of how to call a specific library. We will spend more time on techniques that are most relevant in practice: currently prediction techniques such as neural networks that form the backbone of modern AI.
CS 6240: Large-Scale Parallel Data Processing
Description: Covers big-data analysis techniques that scale out with increasing number of compute nodes, e.g., for cloud computing. Focuses on approaches for problem and data partitioning that distribute work effectively while keeping total cost for computation and data transfer low. Deterministic and random algorithms from a variety of domains, including graphs, data mining, linear algebra, and information retrieval, are studied and analyzed in terms of their cost, scalability, and robustness against skew. Coursework emphasizes hands-on programming experience with modern state-of-the-art big-data processing technology. Students who do not meet course prerequisites may seek permission of instructor.
You can access the latest version of the course material here: CS 6240 course material.
CS 3800: Theory of Computation
Description: Introduces the theory behind computers and computing aimed at answering the question, "What are the capabilities and limitations of computers?" Covers automata theory, computability, and complexity. The automata theory portion includes finite automata, regular expressions, nondeterminism, nonregular languages, context-free languages, pushdown automata, and noncontext-free languages. The computability portion includes Turing machines, the Church-Turing thesis, decidable languages, and the Halting theorem. The complexity portion includes big-O and small-o notation, the classes P and NP, the P vs. NP question, and NP-completeness.