Course DescriptionsEach fall, I teach a basic machine learning grad class. All incoming students in machine learning are strongly encouraged to take this class as an important primer for doing research in our group.
Basic methods for classification, regression, clustering, time series modeling, and novelty detection. These algorithms will include K-nearest neighbours, naive Bayes, decision trees, support vector machines, logistic regression, generalized additive models, K-means, mixtures of Gaussians, hidden markov models, principal components analysis, factor analysis and independent components analysis. Methods of fitting models including stochastic gradient and conjugate gradient methods, the Expectation Maximization algorithm and Markov Chain Monte Carlo. The fundamental problem of overfitting and techniques for dealing with it such as capacity control and model averaging.The last three springs, I taught CSC412, an undergraduate class (now crosslisted as a grad class CSC2506) on graphical models and probabilistic AI.
Representing uncertain knowledge using probability and other formalisms. Qualitative and quantitative specification of probability distributions using graphical models. Algorithms for inference with graphical models. Statistical approaches and algorithms for learning models from experience. Application of these models in other areas of artificial intelligence and to problems such as medical diagnosis.I've also taught CSC310 which is an undergraduate course on the basics of Information Theory.
Measuring information. The source coding theorem. Data compression using ad hoc methods and dictionary-based methods. Probabilistic source models, and their use via Huffman and arithmetic coding. Noisy channels and the channel coding theorem. Error correcting codes, and their decoding by algebraic and probabilistic methods.I also taught a very fun undergrad class in Algorithms & Data Structures to the engineers.
Analysis of algorithms and complexity notation. Recursion and recurrence relations. Techniques for algorithm design. Program development; top-down analysis, modular design. Elementary data structures. Dynamic data structures. Abstract data types. Stacks, queues, linked lists, trees. Searching and sorting. Case studies. Students write a number of assigned programs using a modern programming language (this year it is C).
Sometime soon I hope to be offering a graduate seminar class on dimensionality reduction and approximate nearest neighbour methods under the CSC2541 "Topics" course number, and possibly one on statistical processing of speech and audio.