## Core Courses

**Robotics Foundation: (pick one from either EE555 or EE556)**

**Introduction to Mobile Robotics (EE555)**

The course presents an introduction to the fundamentals of mobile robotic systems including common mechanical configurations with sensors and actuators, as well as the typical sensory, perceptual, and cognitive layers that comprise the field of study. Topics explored will include: Mobile Robot Locomotion (e.g., Legged, Wheeled, and Aerial), Mobile Robot Kinematics (e.g., Models and Constraints, Maneuverability, Workspace Analysis, and Motion Control), Mobile Robot Perception (e.g., Exploration of Sensors, Fundamentals of Computer Vision, Fundamentals of Image Processing, Feature Extraction, and Place Recognition), Mobile Robot Localization (e.g., Noise and Aliasing, Localization-Based Navigation, Map Representations, Probabilistic Map-Based Localization and Autonomous Map Building), and Planning and Navigation (Path Planning, Obstacle Avoidance, and Navigation Architectures). Throughout the course, students will work in teams using a supplied robotics kit of parts and appropriate software tools, e.g., Robot Operating System, OpenCV, Matlab, to design and implement a mobile robot system that demonstrates various aspects of the course applied to a real-world problem.

**Introduction to Robot Manipulators (EE556)**

The course presents an introduction to the fundamentals of robot manipulators. Topics explored will include: Representing Position, Orientation and Motion (2D and 3D Pose and Orientation, Trajectory Generation, Inertial Navigation), Manipulator Forward and Inverse Kinematics (Joint-Space Motion, Cartesian Motion, Denavit-Hartenberg Parameters), Manipulator Velocity (Jacobians, Resolved-Rate Motion Control, Force Relationships), Dynamics and Control (Independent Joint Control, Rigid-Body Equations of Motion, Forward Dynamics, Feedforward Control, Computed Torque Control, Operational Space Control), Computer Vision and Vision-Based Control (Position-Based Visual Servoing, Image-Based Visual Servoing, Advanced Visual Serving). Throughout the course, students will work in teams using a supplied robotics kit of parts and appropriate software tools, e.g., Robot Operating System, OpenCV, Matlab, to design and implement a robot manipulator that demonstrates various aspects of the course applied to a real‐world problem.

**Core Perception: (pick one from either CS652 or CS572)**

**Computer Vision (CS652)**

This course will cover both classical and recent progress in the field of computer vision, both on the theory and practice. Material covered will be from both the textbook and relevant research papers in the area. After taking this course, students will achieve the necessary knowledge to solve various practical computer-vision problems and build a solid background for further computer-vision research. Topics covered include: Early vision on one and multiple images (linear filters, edge detection, stereopsis), mid-level vision (segmentation, object tracking), high-level vision (model-based vision, graph-based image segmentation) and applications (medical image analysis, image-based rendering).

**Multi-Modal Sensor Fusion (CS572)**

This course will focus on fusing information from sensors such as thermal cameras, RGB-D cameras, microphones, and inertial sensors, by connecting them to computers ranging from small form-factor low-power devices to high-performance systems. Topics covered include understanding how to interface with multi-modal devices, learning the characteristics of each device and data obtained from it, performing data analysis, content understanding, and prediction using data from one or more multi-modal devices, and analyzing the accuracy of predicted information from various devices.

**Core Cognition: (take one from either CS551, CS549 or CS570)**

**Artificial Intelligence (CS551)**

This course is an introduction to the computational study of intelligent systems. Topics include heuristic search, knowledge representation, automated reasoning, knowledge-based systems, reasoning under uncertainty, planning, and intelligent agents. Additional topics may be drawn from machine learning, neural networks, computer vision, and natural language understanding. AI programming techniques and methods will also be covered throughout the course. This course enables students to complete their cognition requirement in the Spring.

**Computational Learning (CS549)**

Computational learning studies algorithmic problems for inferring patterns and relations from data. This course describes the mathematical foundations of learning and explores the important connections and applications to areas such as artificial intelligence, cryptography, statistics, and bioinformatics. A list of relevant topics may include perceptron and online learning, graphical models and probabilistic inference, decision tree induction and boosting, analysis of Boolean functions, sample complexity bounds, cryptographic and complexity hardness, and reinforcement learning. Basic ideas from computer science and mathematics are employed to describe the main ideas and major developments in computational learning. Students are expected to learn and explore recent research ideas in the area. This course enables students to complete their cognition requirement in the Fall.

**Deep Learning (CS570)**

This course will provide an introduction to deep learning architectures. Students will be provided a background on building and training neural networks. Students will also be taught a variety of deep neural network architectures such as convolutional neural networks, recursive neural networks and their variants such as LSTMs, and generative adversarial networks (GANs) amongst others. Topics covered will also include deep Bayesian learning and deep reinforcement learning for all-rounded exposure to deep learning techniques. Students will implement projects using TensorFlow for a variety of domains, and will analyze the effect of a variety of parameters and architectures on improving performance.

**Core Action: (take one from either EE550, EE551, EE657 or ME580)**

**Control Systems (EE550)**

Introduction to the analysis and design of continuous-time feedback control systems. Topics include: mathematical representation of physical systems with linear differential equations, Laplace transforms, transfer functions, block diagrams and signal flow graphs, feedback, sensitivity, transient specifications, steady-state tracking errors, stability, root locus plots, compensator design, simulation.

**Digital Control (EE551)**

Introduction to the analysis and design of discrete-time feedback control systems. Topics include: mathematical representation of physical systems with linear difference equations, z-transforms, transfer functions, sampling, A/D and D/A converters, sampled-data systems, discrete equivalent systems, transient specifications, steady-state tracking errors, stability, controller design, quantization effects. Significant independent investigation of advanced topics will be required.

**Linear Control Systems (EE657)**

This course addresses practical control system design primarily from a classical perspective. Beginning with transfer function modeling of dynamic systems, the course moves through transient, root locus, and frequency response analysis to end with frequency domain techniques for controller design.

**Advanced Modeling and Simulation of Dynamic Systems (ME580)**

This course will incorporate techniques of bond graph theory in the energy-based lumped parameter modeling of electrical, mechanical, hydraulic, magnetic, and thermal energy domains. Bond graph theory offers a unified approach to modeling dynamic energy systems and provides the tools necessary for the analysis of complex systems involving a variety of energy domains. Rather than attempt to cover all of the available analysis techniques, this course will serve to provide an underlying foundation on which to develop a thorough understanding of the interactions of energetic systems. Emphasis of the course will focus on multi-domain interaction.

**Mathematical Foundation: (take one from either MA573, MA578, MA579, MA581, or IA530*) * for Project and Course Only students**

**Matrix Theory and Computations (MA573)**

This course presents topics in matrix theory that are useful in applications to engineering, science and other branches of mathematics. Review of linear algebra, including vector and matrix norms and canonical forms, numerical methods for linear systems (direct and iterative methods), eigenvalue problems, singular value decomposition, orthogonal projections, matrix decompositions, generalized inverses. Additional topics may include applications to least squares and optimization.

**Numerical Analysis (MA578)**

Review of linear algebra and systems, solution of nonlinear equations and systems, interpolation, approximation of functions, orthogonal polynomials, numerical differentiation and integration. Additional topics may include eigenvalue problems, iterative methods for linear systems and topics from optimization.

**Introduction to Applied Optimization (MA579)**

The motivation for this course is that optimization problems arise routinely in most applications — from designing an airline schedule to minimize cost to designing a remediation strategy for a contaminated ground water site. In this course we will focus on numerical techniques to solve applied optimization problems of various formulations. Topics will include solutions to linear and nonlinear equations, nonlinear programming, unconstrained and constrained optimization, black-box formulations and a glance at sampling methods, and if time allows, extra topics may include multi-objective optimization, mixed integer programming methods, and evolutionary algorithms. This course will include a computing component with MATLAB and possibly some off-the-shelf optimization packages. The objectives are (a) to become familiar with a range of optimal design formulations and techniques appropriate for those formulations, (b) to motivate the need for efficient numerical methods for optimization problems, (c) to study these methods through implementation and analysis, (d) to become familiar with some existing software for optimization as well as write our own codes, and (e) to obtain a better understanding and appreciation for scientific computing in optimization.

**Probability (MA581)**

Sample spaces; axioms of probability; basic theorems; random variables (discrete and continuous); combinatorial methods; Bayes’ Theorem and conditional probability; expected values and variances; distribution functions, including: binomial and multinomial, Poisson, normal and bivariate normal distributions, and others such as geometric, hypergeometric, negative binomial, exponential, gamma and beta; joint distributions; covariance and correlation; central limit theorem; geometric probability; method of transformations; introduction to stochastic processes.

**Probability and Statistics for Analytics (IA530)**

Probability theory is presented as a mathematical foundation for statistical inference. Axiomatic probability is introduced; standard discrete and continuous probability distributions are presented. Joint distributions and transformations are discussed. Probabilistic convergence concepts are introduced. The key objectives of this course are to formulate statistical models and find optimal solutions for statistical problems in economics, business, engineering, and science, have a global overview of the interplay between probability and statistics as well as master the art of writing statistical proofs well, consistent with the written tradition of the discipline, and have the skills to communicate statistical ideas effectively.

**ELECTIVE COURSES**

**NOTE: Students can also take any of the courses listed in the CORE COURSES section if they have not taken the course to fulfill the core requirements.**

**Natural Language Processing (CS668)**

This course introduces students to the fundamental concepts and ideas in natural language processing (NLP). In this course students will learn how to create systems that are able to understand and produce language for applications ranging from plagiarism detection to information extraction to automated summarization. The course will focus on four key areas: understanding and recognizing words; syntax (i.e. structure of language); semantics (i.e. meaning of language); pragmatics/discourse (i.e. interpretation of language in context). Students will be introduced to document similarity techniques using frequency and sequence based techniques; n-gram models; parts of speech tagging; named entity recognition; word sense disambiguation; machine translation; use of deep learning in NLP. Students will work with large scale datasets spanning from open source repositories to news articles.

**Computer Graphics (CS552)**

An introduction to computer graphics. Graphics hardware, algorithms for generating and displaying two and three-dimensional geometric figures, animation, interactive displays. Programming projects using OpenGL will be assigned. Students will be expected to independently explore some aspects of the course material. Prerequisites: Programming experience in C/C++ family language, basic concepts in linear algebra and matrices.

**Mixed Reality (CS561)**

This course provides an introduction to the mathematics and computing underlying virtual (VR) and augmented reality (AR). Students will learn stereo camera geometry for VR, recovery of 3D scene structure from images for content manipulation in AR, acquiring of illumination maps for photorealistic AR, and capture of human interaction for virtual environments. Students will perform several short and long projects as part of the course. Students will also analyze seminal papers in supporting fields such as graphics, vision, and computational photography.

**Human-Computer Interaction (CS559)**

This course provides an introduction to the field of human-computer interaction (HCI). This discipline focuses on the design, evaluation and implementation of interactive computing systems from a user’s point of view. The course will give a broad overview of the ideas, techniques, and tools in the subject, with a systematic approach to designing visual interfaces and evaluating their effectiveness. Case studies of existing interfaces, technologies, and data display methods will be discussed and critiqued. Topics include: programming and command languages; menus and forms graphical user interfaces, computer-supported cooporerative work, information search and visualization; input/output devices; and display design. A collaborative course project will explore issues in HCI and design.

**Parallel Programming (CS543)**

The performance of single microprocessors is no longer increasing rapidly, and most of the increase in computing power in the future is anticipated to come from multiprocessor and parallel systems. But parallel programming is much more difficult than writing single-threaded sequential programs, and this course will introduce students to the techniques, design strategies, and programming interfaces for creating reliable and efficient parallel programs. Students will program for clusters of workstations using the MPI parallel message passing library, and will write multi-threaded programs for shared-memory multiprocessors. Students will learn methods and tools for predicting and measuring the performance of parallel algorithms. Students will also read and discuss research papers on parallel architectures and algorithms.

**Advanced CAD Design (ME544)**

This course deals with the use of commercially available CAD hardware and software for product development and design. Lectures cover the underlying theories upon which such software is based, the ways in which these theories are implemented and software limitations. Hands-on experience is emphasized. Students entering the course are assumed to have some knowledge of general computer usage and computer graphics.