Current graduate courses offered in our program
Classes marked with an asterisk (*) count towards the PhD program in Computer Science.
CMPS 6130* – Introduction to Computational Geometry
This course provides an introduction to geometric algorithms and geometric data structures. Computational Geometry is a young discipline which enjoys close relations to mathematics and to various application areas such as geometric databases, molecular biology, sensor networks, visualization, geographic information systems (GIS), VLSI, robotics, computer graphics and geometric modeling. Covered topics include fundamental geometric algorithm design and analysis paradigms, geometric data structures for planar subdivisions and range searching, algorithms to computer the convex hull, Voronoi diagrams, and Delaunay triangulation, as well as selected advanced topics.
Prerequisites: CMPS 2200 or permission of the instructor.
CMPS 6140 – Introduction to Artificial Intelligence
The aim of this course is to provide the student with an introduction to the main concepts and techniques playing a key role in the modern arena of artificial intelligence. In addition to covering the main topics that concern modern AI, particular attention will be devoted to its applications in several fields. Among the topics covered are, “What is an intelligent artificial agent?”, problem solving using search and constraint satisfaction, uncertainty, Bayesian networks and probabilistic inference, supervised learning, planning, sequential decision problems, as well as several additional topics.
Prerequisites: CMPS 1500, CMPS/MATH 2170 or permission of the instructor.
CMPS 6150* – Multi-agent Systems
This course has two main goals. The first one is to give a broad overview of the fundamentals of multi-agent systems (MAS). MAS are playing an increasingly important role in Artificial Intelligence as distributed resources push for highly distributed forms of intelligence.
The second aim is to provide a more in depth discussion of selected MAS topics: game theory and voting from a computational point of view. Situated at the nexus between economics and computer science, these research areas provide a perfect example of interdisciplinary cross-fertilization and mutual enrichment and lie at the core of multi-agent systems theory. The course will provide the student with an understanding of how self-interested behavior and coordination can be formally modeled and implemented in societies of artificial agents.
CMPS 6210* – Algorithms for Computational Structural Biology
Over the last few decades, as we have been able to determine whole genome sequences, structural biologists have sought to determine and catalog protein structures with an increasing reliance on computational methods. Automated methods to analyze protein structure make it possible to leverage information from previously solved structures, and to interpret experimental data in a principled way. In this course, we will focus on the myriad of algorithms for analyzing numerous aspects of protein structure and protein-protein interactions.
Prerequisites: CMPS 1600, CMPS 2200 or permission of instructor.
CMPS 6240 – Introduction to Machine Learning
This course provides an introduction to the fundamental concepts of machine learning and statistical pattern recognition. In addition, several examples of applications will be described. The topics covered include generative/discriminative and parametric/non-parametric supervised learning, including neural networks; unsupervised learning, including clustering, dimensionality reduction and kernel methods; learning theory, including tradeoffs, large margins and VC theory; reinforcement learning, including criteria for optimality, brute force methods, value function methods and direct policy search; feedforward/feedback adaptive control, direct/indirect adaptive control methods; and various applications.
Prerequisites: CMPS 1500, CMPS/MATH 2170 or permission of instructor.
CMPS 6250* – Mathematical Foundations of Computer Security
This course studies the mathematics underlying computer security, including both public key and symmetric key cryptography, crypto-protocols and information flow. The course includes a study of the RSA encryption scheme, stream and clock ciphers, digital signatures and authentication. It also considers semantic security and analysis of secure information flow. (Same as MATH 6250.)
Prerequisites: One semester of Calculus, CMPS/MATH 2170, and permission of instructor.
CMPS 6260* – Advanced Algorithms
This course focuses on advanced techniques in the design and analysis of algorithms and illustrates how they are used in deriving a variety of now-classic results. Topics include graph algorithms, randomized algorithms, parallel computing, linear programming and approximation algorithms. (Same as MATH 6260.)
Prerequisites: CMPS 2200 or permission of the instructor.
CMPS 6280* – Information Theory
This course is an introduction to Shannon’s mathematical theory of information. It considers basic concepts such as information content, entropy and the Kullback-Leibler distance, as well as areas such as data compression and Shannon’s Source Coding Theorem, coding, prefix codes, lossless channels and their capacity, and Shannon’s Noisy Coding Theorem. Applications to various areas are also featured in the course. (Same as MATH 6280.)
Prerequisites: MATH 3050 or MATH 3090 and familiarity with discrete probability or permission of instructor.
CMPS 6300 – Software Studio
This is a project-oriented course on fundamentals of software development and software engineering. Working in teams, students apply a recognized software engineering methodology, a modern programming language and software development tools (including an IDE, debugger, version control system, and testing framework) to design and implement a semester-long project – a software solution for a real-world problem.
The high goal of the course is to train students to function efficiently in a real-world software development environment. To help reach that goal, the students of the course do a lot of independent learning, teamwork, documentation and public presentation of their product and design process.
The particular technologies employed in the course may change in synchrony with changes in software engineering field, currently the focus is on engineering software-as-a-service using Ruby for programming language and Rails for web development framework.
Prerequisites: CMPS 1600, CMPS 2200, or permission of instructor.
CMPS 6310* – Logic in Computer Science
This course is an introduction to logic and its applications in computer science. The topics covered include soundness and completeness of propositional logic, predicate logic, linear time temporal logic and branching time temporal logics and their expressive power, frameworks for software verification, Hoare triples, partial and total correctness, modal logics and agents, and binary decision diagrams.
Prerequisites: CMPS 2200 or equivalent and CMPS 2170 or equivalent, or permission of instructor.
CMPS 6350* – Introduction to Computer Graphics
A comprehensive introduction to the mathematics and algorithms that drive today's digital special effects, animation, and games. Designed as a hands-on course, students will gain experience in building 2D/3D interactive applications using OpenGL. Topics covered will include geometric transformations, projections, raster algorithms, 3D object models (surface and volume), visible surface algorithms, texture mapping, lighting/shading, ray-tracing, anti-aliasing, and compositing.
Prerequisites: CMPS 1600. Prerequisite can be waived with permission of instructor.
CMPS 6360 – Information and Scientific Visualization
An introduction on how graphical representations of data can be used to aid understanding. This course details the theory and practice of designing effective information or scientific visualizations. The techniques learned in this class have wide applications to all fields in engineering and science, where due to increasing sizes and complexity data now demands effective presentation and analysis. Topics will include iso-surfacing, volume rendering, transfer functions, vector/tensor fields, topological analysis, large data visualization, and uncertainty in visualizations.
Prerequisites: CMPS 1600 or good programming skills (C and C++ are the preferred languages of the course). Prerequisite can be waived with permission of instructor.
CMPS 6610* Algorithms
This course covers fundamental algorithm design principles and data structures, basic notions of complexity theory, as well as an advanced introduction to parallel algorithms, randomized algorithms, and approximation algorithms. Topics include: divide-and-conquer, dynamic programming, amortized analysis, graph algorithms, network flow, map reduce, and more advanced topics in approximation algorithms and randomized algorithms.
Prerequisites: Introduction to Algorithms or equivalent and Discrete Mathematics or equivalent, or permission by the instructor.
CMPS 6620* Artificial Intelligence
This course is designed for graduate students interested in understanding the design of autonomous intelligent agents. The course will cover fundamental notions and concepts such as uninformed and informed search, local search, constraint satisfaction and constraint-based optimization, Bayesian Networks, Markov Decision Problems and a short introduction on machine learning. Furthermore, advance topics and applications in the context of natural language processing, reasoning about time, algorithmic game theory and computational social choice will be considered as well.
Prerequisites: Introduction to Algorithms or equivalent or instructor approval.
CMPS 6630* Computational Biology and Bioinformatics
This course is an introduction to computational methods in molecular biology. Topics covered include: sequence analysis and alignment, sequencing technologies, genome and metagenomic sequencing, protein structure and structure prediction, and phylogenetic analysis. No prior background in biology is assumed.
Prerequisites: Undergraduate Algorithms course or equivalent and/or Discrete Mathematics or equivalent or instructor approval.
CMPS 6640* Computational Geometry
This course covers fundamental and advanced principles for designing and analyzing geometric algorithms and data structures, and their application to other disciplines. Computational Geometry is a young discipline which enjoys close relations to mathematics and to various application areas such as geometric databases, molecular biology, sensor networks, visualization, geographic information systems, VLSI, robotics, computer graphics and geometric modeling. Selected topics may include: Dynamic and kinetic data structures, geometric algorithms and data structures in two and higher dimensions, shape analysis and matching, robustness and implementation issues, geometric approximation algorithms.
Prerequisites: Introduction to Algorithms or equivalent, or permission by the instructor. Undergraduate Introduction to Computational Geometry or undergraduate Algorithms preferred.
CMPS 6660 – Special Topics
This course varies from time to time, focusing on topics of interest to the faculty and students.
Prerequisites: Permission of the instructor.
CMPS 6710* Computational Complexity
This course is an advanced introduction to the area of computational complexity. Topics covered include: impossibility and separability results for classical computation, interactive theorem proving and the PCP theorem, derandomization and hardness of approximation, and the quantum model of computation.
Prerequisites: Advanced undergraduate Algorithms course, graduate Algorithms course, and/or a Theory of Computation Course, or instructor approval.
CMPS 6720* Machine Learning
This course will cover fundamental and advanced topics in machine learning. Topics will include linear and logistic regression, Lasso, preceptrons, deep neural networks, support vector machines, kernel methods, graphical models, principal and independent component analysis and Gaussian processes. In addition to thoroughly addressing theoretical aspects, several examples will illustrate the application of the different techniques.
Prerequisites: Introduction to algorithms or equivalent and Discrete Mathematics or equivalent or instructor approval.
CMPS 6730* Machine Learning and Natural Language Processing
This course focuses on advanced machine learning techniques and their application in the domain of natural language processing (NLP). Many real world machine learning problems deal with mapping data to structured representations, and in the NLP domain the output structure represents lexical, syntactical or semantic aspects of the text. Techniques covered in this course include discriminative and generative models including Structured Perceptron and Structured SVMs, Constrained Conditional Models, Probabilistic Graphical Models, as well as Deep Learning techniques.
Prerequisites: CMPS 4720/6720 or CMPS 3240/6240 or equivalent, or permission of the instructor.
CMPS 6750* Computer Networks
The objective of the course is to introduce students to the core concepts and analytic techniques in the design and analysis of computer networks and network protocols. We will explain both how computer networks work using the Internet as the paradigm and why they work from an optimization and control perspective.
Prerequisites: CMPS/MATH 2170 and CMPS 2200 or equivalent or instructor approval.
CMPS 6760* Distributed Systems
This course covers the fundamental concepts in distributed computing. The objective is to introduce students to the core notions, algorithms, and analytic tools in the design of distributed systems. Recent developments in peer-to-peer systems, cloud computing, sensor networks, etc. will be used as case studies to help students establish a firm understanding of the philosophy and pitfalls in the design of computer systems when there is no global clock and when unpredictable failures and variable latency are the norm.
Prerequisites: CMPS/MATH 2170, CMPS 2200, CMPS 2300, or equivalent or instructor approval.
CMPS 6910 Independent Study
This is a directed study course that allows a student to pursue a topic of particular interest under the direction of a computer science faculty member.
Prerequisites: Approval of the department.
CMPS 7010* Research Seminar
This seminar course introduces students to research methods in Computer Science and to the research conducted in the department. Students will read research papers, participate in active research projects, and practice preparing and presenting research presentations. Department faculty will present on their research in order to expose students to the research projects conducted in the department. Research methods such as literature search, experiment design, technical writing, etc. will also be covered.
This course is required for all PhD students in Computer Science. The content of this course varies from semester to semester·.
CMPS 7020*/7021*/7022* Research in Computer Science
In this course PhD students engage in a research project in Computer Science, under the direction of a faculty member, normally the student's faculty advisor. At the beginning of the course the scope of the project will be determined by a project proposal prepared by the student. Research will be conducted on an individual basis with the faculty advisor. The student will prepare a final report that summarize the research methodologies and the research outcomes.
The content of this course varies from semester to semester·.
CMPS 7120* – Advanced Topics in Computer Science
This course varies from time to time, focusing on advanced topics of interest to the faculty and students.
Prerequisites: Approval of the department.
CMPS 7980* – Independent Study in Computer Science
This is a directed study course that allows a graduate student to pursue a topic of particular interest under the direction of a computer science faculty member.
Prerequisites: Approval of the department.