- Compiler Design (CSci 134)
Compilers are fundamental to modern computing. They act as translators, transforming a human-oriented programming language into a computer-oriented machine one. Apart from being able to design such systems, compiler theory can also support better coding practices. This course offers a comprehensive coverage of compiler theory. It covers the syntax and semantics of programming languages and the main phases of the compilation process (i.e., lexical analysis, parsing, semantic analysis, code generation and optimization). Emphasis is given on lexical analysis, several parsing techniques including SLR and LALR parsing, parser generators, the role of symbol table organization and semantic action routines.
- Introduction to Reinforcement Learning (CSci 291T)
Reinforcement learning lies in the intersection of mathematics, computer science, engineering, economics, neuroscience and psychology, and deals with designing agents that interact in unknown and stochastic environments. It has produced some extremely successful applications in domains ranging from game playing to manufacturing and is a highly active area of research. This course covers the basic concepts and current trends in reinforcement learning, including the theory of Markov decision processes, dynamic programming, temporal difference learning, Monte Carlo methods, and the role of function approximation.