Foundations of Computer Science
Computer science spans a range of topics from theoretical studies of algorithms and the limits of computation to the practical issues of implementing computing systems. This course covers the foundations of computer science including logic, discrete mathematics, and aspects of computation. Particular emphasis is given to abstraction, iteration, induction, recursion, complexity of programs, data models, and logic. The course consists of 3 lecture and 2 lab hours and is also supported by supplemental instruction.
Taught: Every Semester
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 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.
Taught: Fall 2018
A computer simulation is a generally approximate imitation of the operation of a process or a system based on a respective model using a computer. Computer simulation is a powerful tool for the study of complex systems in computer science, statistics and operations research. This course covers the basic principles and phases of computer simulation, including a review of the basic principles behind and examples of simulation languages with a focus on the Python programming language. Particular emphasis is given on data mining and modeling, as well as on generating random variables, as an integral part of the computer simulation process.
Taught: Every Spring Semester
Bio-inspired Machine Learning
Bio-inspired machine learning is a field of study which seeks to solve computer science problems using models of biology. It relates to connectionism, social behavior, and emergence. This course focuses on selected bio-inspired machine learning topics with an emphasis on metaheuristics, optimization, computational neuroscience, and learning. Topics include evolutionary algorithms, ant colony optimization, simulated annealing, gradient descent, learning theories, artificial neural networks, self-organizing maps and reinforcement learning.
Taught: Every Spring Semester
(Former 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.
Taught: Every Fall Semester
Principles of Artificial Intelligence
Artificial intelligence is intelligence demonstrated by machines. The respective field of study focuses on the science needed to develop intelligent and autonomous agents. This course covers the principles of artificial intelligence. Topics include agent theory, optimization, unsupervised learning, supervised learning, and reinforcement learning.
Taught: Fall 2022