Carnegie Mellon UniversityWebsiteAcademic Catalog
Computer ScienceDepartment Website
BS Degree in Artificial Intelligencesource 1source 2
CS Courses
- Principles of Imperative Computation15-122 (12)intro15-122: Principles of Imperative Computation
For students with a basic understanding of programming (variables, expressions, loops, arrays, functions). Teaches imperative programming and methods for ensuring the correctness of programs. Students will learn the process and concepts needed to go from high-level descriptions of algorithms to correct imperative implementations, with specific application to basic data structures and algorithms. Much of the course will be conducted in a subset of C amenable to verification, with a transition to full C near the end. This course prepares students for 15-213 and 15-210. NOTE: students must achieve a C or better in order to use this course to satisfy the pre-requisite for any subsequent Computer Science course.
- Principles of Functional Programming15-150 (12)intro15-150: Principles of Functional Programming
An introduction to programming based on a 'functional' model of computation. The functional model is a natural generalization of algebra in which programs are formulas that describe the output of a computation in terms of its inputs and #8212;-that is, as a function. But instead of being confined to real- or complex-valued functions, the functional model extends the algebraic view to a very rich class of data types, including not only aggregates built up from other types, but also functions themselves as values. This course is an introduction to programming that is focused on the central concepts of function and type. One major theme is the interplay between inductive types, which are built up incrementally; recursive functions, which compute over inductive types by decomposition; and proof by structural induction, which is used to prove the correctness and time complexity of a recursive function. Another major theme is the role of types in structuring large programs into separate modules, and the integration of imperative programming through the introduction of data types whose values may be altered during computation. NOTE: students must achieve a C or better in order to use this course to satisfy the pre-requisite for any subsequent Computer Science course.
- Concepts in Artificial Intelligence07-180 (5)ai07-180: Concepts in Artificial Intelligence
The course will introduce students to the main foundational concepts and techniques used in Artificial Intelligence (AI), including representation, heuristic search, probabilistic reasoning, decision making, and machine learning. Concepts will be grounded in a range of real-world applications in which AI is currently used. Students will be introduced to ethical issues surrounding AI, as well as the potential future of a world in which AI is commonplace. Programming and written assignments will enable students to get a feel for how to implement and use AI techniques.
- Parallel and Sequential Data Structures and Algorithms15-210 (12)intro15-210: Parallel and Sequential Data Structures and Algorithms
Teaches students about how to design, analyze, and program algorithms and data structures. The course emphasizes parallel algorithms and analysis, and how sequential algorithms can be considered a special case. The course goes into more theoretical content on algorithm analysis than 15-122 and 15-150 while still including a significant programming component and covering a variety of practical applications such as problems in data analysis, graphics, text processing, and the computational sciences. NOTE: students must achieve a C or better in order to use this course to satisfy the pre-requisite for any subsequent Computer Science course. Register for Lecture 1. All students will be waitlisted for Lecture 2 until Lecture 1 is full.
- Introduction to Computer Systems15-213 (12)intro15-213: Introduction to Computer Systems
This course provides a programmer's view of how computer systems execute programs, store information, and communicate. It enables students to become more effective programmers, especially in dealing with issues of performance, portability and robustness. It also serves as a foundation for courses on compilers, networks, operating systems, and computer architecture, where a deeper understanding of systems-level issues is required. Topics covered include: machine-level code and its generation by optimizing compilers, performance evaluation and optimization, computer arithmetic, memory organization and management, networking technology and protocols, and supporting concurrent computation. NOTE FOR GRADUATE STUDENTS: This course is not open to graduate students beginning Spring 2015. Graduate students must register for 15-513 instead.
- Great Ideas in Theoretical Computer Science15-251 (12)theory15-251: Great Ideas in Theoretical Computer Science
This course is about how to use theoretical ideas to formulate and solve problems in computer science. It integrates mathematical material with general problem solving techniques and computer science applications. Examples are drawn from algorithms, complexity theory, game theory, probability theory, graph theory, automata theory, algebra, cryptography, and combinatorics. Assignments involve both mathematical proofs and programming. NOTE: students must achieve a C or better in order to use this course to satisfy the pre-requisite for any subsequent Computer Science course.
- Artificial Intelligence: Representation and Problem Solving15-281 (12)ai15-281: Artificial Intelligence: Representation and Problem Solving
This course is about the theory and practice of Artificial Intelligence. We will study modern techniques for computers to represent task-relevant information and make intelligent (i.e. satisficing or optimal) decisions towards the achievement of goals. The search and problem solving methods are applicable throughout a large range of industrial, civil, medical, financial, robotic, and information systems. We will investigate questions about AI systems such as: how to represent knowledge, how to effectively generate appropriate sequences of actions and how to search among alternatives to find optimal or near-optimal solutions. We will also explore how to deal with uncertainty in the world, how to learn from experience, and how to learn decision rules from data. We expect that by the end of the course students will have a thorough understanding of the algorithmic foundations of AI, how probability and AI are closely interrelated, and how automated agents learn. We also expect students to acquire a strong appreciation of the big-picture aspects of developing fully autonomous intelligent agents. Other lectures will introduce additional aspects of AI, including natural language processing, web-based search engines, industrial applications, autonomous robotics, and economic/game-theoretic decision making.
- Introduction to Machine Learning10-315 (12)ai10-315: Introduction to Machine Learning
Machine learning is subfield of computer science with the goal of exploring, studying, and developing learning systems, methods, and algorithms that can improve their performance with learning from data. This course is designed to give undergraduate students a one-semester-long introduction to the main principles, algorithms, and applications of machine learning and is specifically designed for the SCS undergrad majors. The topics of this course will be in part parallel with those covered in the graduate machine learning courses (10-715, 10-701, 10-601), but with a greater emphasis on applications and case studies in machine learning. After completing the course, students will be able to: *select and apply an appropriate supervised learning algorithm for classification problems (e.g., naive Bayes, perceptron, support vector machine, logistic regression). *select and apply an appropriate supervised learning algorithm for regression problems (e.g., linear regression, ridge regression). *recognize different types of unsupervised learning problems, and select and apply appropriate algorithms (e.g., clustering, linear and nonlinear dimensionality reduction). *work with probabilities (Bayes rule, conditioning, expectations, independence), linear algebra (vector and matrix operations, eigenvectors, SVD), and calculus (gradients, Jacobians) to derive machine learning methods such as linear regression, naive Bayes, and principal components analysis. *understand machine learning principles such as model selection, overfitting, and underfitting, and techniques such as cross-validation and regularization. *implement machine learning algorithms such as logistic regression via stochastic gradient descent, linear regression (using a linear algebra toolbox), perceptron, or k-means clustering. *run appropriate supervised and unsupervised learning algorithms on real and synthetic data sets and interpret the results.
- Computer Visionor16-385 (12)ai16-385: Computer Vision
This course provides a comprehensive introduction to computer vision. Major topics include image processing, detection and recognition, geometry-based and physics-based vision, sensing and perception, and video analysis. Students will learn basic concepts of computer vision as well as hands on experience to solve real-life vision problems. This course is for undergraduate students only.
Natural Language Processing11-411 (12)ai11-411: Natural Language ProcessingThis course is about a variety of ways to represent human languages (like English and Chinese) as computational systems, and how to exploit those representations to write programs that do neat stuff with text and speech data, like translation, summarization, extracting information, question answering, natural interfaces to databases, and conversational agents. This field is called Natural Language Processing or Computational Linguistics, and it is extremely multidisciplinary. This course will therefore include some ideas central to Machine Learning and to Linguistics. We'll cover computational treatments of words, sounds, sentences, meanings, and conversations. We'll see how probabilities and real-world text data can help. We'll see how different levels interact in state-of-the-art approaches to applications like translation and information extraction. From a software engineering perspective, there will be an emphasis on rapid prototyping, a useful skill in many other areas of Computer Science.
- Human-AI Interaction ElectiveDesign of Artificial Intelligence Productsor05-317 (12)humans05-317: Design of Artificial Intelligence Products
This course teaches students how to design new products and services that leverage the capabilities of AI and machine learning to improve the quality of peoples lives. Students will learn to follow a matchmaking design, user-centered design, and service design process. Students will learn to ideate; reframing problematic situations by envisioning many possible products and services. Students will learn to iteratively refine and assess their ideas with real users/customers. Class projects will focus on the challenges of deploying systems that generate errors and the challenges of situating intelligent systems such that they harmonize the best qualities of human and machine intelligence.
Human AI Interactionor05-318 (12)ai05-318: Human AI InteractionArtificial Intelligence is inspired by human intelligence, made powerful by human data, and ultimately only useful in how it positively affects the human experience. This course is an introduction to harnessing the power of AI so that it is beneficial and useful to people. We will cover a number of general topics: agency and initiative, AI and ethics, bias and transparency, confidence and errors, human augmentation and amplification, trust and explainability, mixed-initiative systems, and programming by example. These topics will be explored via projects in dialog and speech-controlled systems, automatic speech recognition, computer vision, data science, recommender systems, text summarization, learning science, UI personalization, and visualization. Students will complete individual weekly mini-projects in which they will design and build AI systems across a wide variety of domains. Students should be comfortable with programming; assignments will be primarily in Python and Javascript. Prior experience with AI/machine learning will be useful but is not required. Students will also be responsible for weekly readings and occasional presentations to the class.
Designing Human Centered Softwareor05-391 (12)humans05-391: Designing Human Centered SoftwareWhy are things so hard to use these days? Why doesn't this thing I just bought work? Why is this web site so hard to use? These are frustrations that we have all faced from systems not designed with people in mind. The question this course will focus on is: how can we design human-centered systems that people find useful and usable? This course is a broad introduction to designing, prototyping, and evaluating user interfaces. If you take only one course in Human-Computer Interaction, this is the course for you. We will cover theory as well as practical application of ideas from Human-Computer Interaction. Coursework includes lectures, class discussion, homework, class presentations, and group projects. This class is open to all undergrads and grad students, with either technical or non-technical majors. However, there is a programming prerequisite.
Human Robot Interaction16-467 (12)humans16-467: Human Robot InteractionThe field of human-robot interaction (HRI) is fast becoming a significant area of research in robotics. The basic objective is to create natural and effective interactions between people and robots. HRI is highly interdisciplinary, bringing together methodologies and techniques from robotics, artificial intelligence, human-computer interaction, psychology, education, and other fields. This course is primarily lecture-based, with in-class participatory mini-projects, homework assignments, a group term project that will enable students to put theory to practice, and a final. The topics covered will include technologies that enable human-robot interactions, the psychology of interaction between people and robots, how to design and conduct HRI studies, and real-world applications such as assistive robots.
- Decision-Making/Robotics ElectivePlanning Techniques for Roboticsor16-350 (12)ai16-350: Planning Techniques for Robotics
Planning is one of the core components that enable robots to be autonomous. Robot planning is responsible for deciding in real-time what should the robot do next, how to do it, where should the robot move next and how to move there. This class does an in-depth study of popular planning techniques in robotics and examines their use in ground and aerial robots, humanoids, mobile manipulation platforms and multi-robot systems. The students learn the theory of these methods and also implement them in a series of programming-based projects. To take the class students should have taken an Intro to Robotics class and have a good knowledge of programming and data structures.
Mobile Robot Algorithms Laboratoryor16-362 (12)ai16-362: Mobile Robot Algorithms LaboratoryThis course is an introduction to the theory and algorithms of multirotor vehicle autonomy. Students will work individually to develop a multirotor simulator in Python and C++, add sensors, plan, and perform exploration. Lectures will cover topics to advance the capabilities of the simulator. Homeworks will be designed to increase the autonomy capabilities of the multirotor vehicle. The class will culminate in an individual project that pushes the autonomy capabilities developed throughout the course and may cover multi-robot aerial autonomy, dynamic environment modeling, or advanced planning and control. In order to succeed in the course, students must have a 2nd year science/engineering level background in mathematics (matrices, vectors, coordinate systems) and have already mastered at least one object-oriented programming language like C++ or Python. When the course is over, students will have written a single software system that has been incrementally extended in functionality and regularly debugged throughout the semester.
Robot Kinematics and Dynamicsor16-384 (12)ai16-384: Robot Kinematics and DynamicsFoundations and principles of robotic kinematics. Topics include transformations, forward kinematics, inverse kinematics, differential kinematics (Jacobians), manipulability, and basic equations of motion. Course also include programming on robot arms.
Neural Computationor15-386 (9)ai15-386: Neural ComputationComputational neuroscience is an interdisciplinary science that seeks to understand how the brain computes to achieve natural intelligence. It seeks to understand the computational principles and mechanisms of intelligent behaviors and mental abilities and #8212; such as perception, language, motor control, and learning and #8212; by building artificial systems and computational models with the same capabilities. This course explores how neurons encode and process information, adapt and learn, communicate, cooperate, compete and compute at the individual level as well as at the levels of networks and systems. It will introduce basic concepts in computational modeling, information theory, signal processing, system analysis, statistical and probabilistic inference. Concrete examples will be drawn from the visual system and the motor systems, and studied from computational, psychological and biological perspectives. Students will learn to perform computational experiments using Matlab and quantitative studies of neurons and neuronal networks.
Autonomous Agentsor15-482 (12)ai15-482: Autonomous AgentsAutonomous agents use perception, cognition, actuation, and learning to reliably achieve desired goals, where the agents can be smart homes, mobile robots, intelligent factories, self-driving cars, etc. The goal of this course is to introduce students to techniques needed for developing complete, integrated AI-based autonomous agents. Topics include architectures for intelligent agents; autonomous behaviors, perception, and execution; reasoning under uncertainty; optimization; execution monitoring; machine learning; scheduling; and explanation. A focus of the course will be on the integration and testing of autonomous systems to achieve reliable and robust behavior in the face of sensor noise and uncertainty. The course is project-oriented where small teams of students will design, implement, and evaluate agents that can grow plants autonomously, without human intervention.
Cognitive Robotics: The Future of Robot Toys15-494 (12)ai15-494: Cognitive Robotics: The Future of Robot ToysThis course will explore the future of robot toys by analyzing and programming Anki Cozmo, a new robot with built-in artificial intelligence algorithms. Como is distinguished from earlier consumer robots by its reliance on vision as the primary sensing mode and its sophisticated use of A.I. Its capabilities include face and object recognition, map building, path planning, and object pushing and stacking. Although marketed as a pre-programmed children's toy, Cozmo's open source Python SDK allows anyone to develop new software for it, which means it can also be used for robotics education and research. The course will cover robot software architecture, human-robot interaction, perception, and planning algorithms for navigation and manipulation. Prior robotics experience is not required, just strong programming skills.
- Perception and Language ElectiveComputational Perceptionor15-387 (9)ai15-387: Computational Perception
In this course, we will first cover the biological and psychological foundational knowledge of biological perceptual systems, and then apply computational thinking to investigate the principles and mechanisms underlying natural perception. The course will focus on vision this year, but will also touch upon other sensory modalities. You will learn how to reason scientifically and computationally about problems and issues in perception, how to extract the essential computational properties of those abstract ideas, and finally how to convert these into explicit mathematical models and computational algorithms. Topics include perceptual representation and inference, perceptual organization, perceptual constancy, object recognition, learning and scene analysis.
Vision Sensorsor16-421 (12)ai16-421: Vision SensorsThis course covers the fundamentals of vision cameras and other sensors - how they function, how they are built, and how to use them effectively. The course presents a journey through the fascinating five hundered year history of 'camera-making' from the early 1500's 'camera obscura' through the advent of film and lenses, to today's mirror-based and solid state devices (CCD, CMOS). The course includes a significant hands-on component where students learn how to use the sensors and understand, model and deal with the uncertainty (noise) in their measurements. While the first half of the course deals with conventional 'single viewpoint' or 'perspective' cameras, the second half of the course covers much more recent 'multi-viewpoint' or 'multi-perspective' cameras that includes a host of lenses and mirrors.
Search Enginesor11-442 (9)ai11-442: Search EnginesThis course studies the theory, design, and implementation of text-based search engines. The core components include statistical characteristics of text, representation of information needs and documents, several important retrieval models, and experimental evaluation. The course also covers common elements of commercial search engines, for example, integration of diverse search engines into a single search service ("federated search", "vertical search"), personalized search results, diverse search results, and sponsored search. The software architecture components include design and implementation of large-scale, distributed search engines.
Computational Photographyor15-463 (12)graphics15-463: Computational PhotographyComputational photography is the convergence of computer graphics, computer vision and imaging. Its role is to overcome the limitations of the traditional camera, by combining imaging and computation to enable new and enhanced ways of capturing, representing, and interacting with the physical world. This advanced undergraduate course provides a comprehensive overview of the state of the art in computational photography. At the start of the course, we will study modern image processing pipelines, including those encountered on mobile phone and DSLR cameras, and advanced image and video editing algorithms. Then we will proceed to learn about the physical and computational aspects of tasks such as 3D scanning, coded photography, lightfield imaging, time-of-flight imaging, VR/AR displays, and computational light transport. Near the end of the course, we will discuss active research topics, such as creating cameras that capture video at the speed of light, cameras that look around walls, or cameras that can see through tissue. The course has a strong hands-on component, in the form of seven homework assignments and a final project. In the homework assignments, students will have the opportunity to implement many of the techniques covered in the class, by both acquiring their own images of indoor and outdoor scenes and developing the computational tools needed to extract information from them. For their final projects, students will have the choice to use modern sensors provided by the instructors (lightfield cameras, time-of-flight cameras, depth sensors, structured light systems, etc.). This course requires familarity with linear algebra, calculus, programming, and doing computations with images. The course does not require prior experience with photography or imaging.
Speech Processing11-492 (12)ai11-492: Speech ProcessingSpeech Processing offers a practical and theoretical understanding of how human speech can be processed by computers. It covers speech recognition, speech synthesis and spoken dialog systems. The course involves practicals where the student will build working speech recognition systems, speech synthesis systems and integrate them to create a speech interface. This work will be based on existing toolkits. Details of algorithms, techniques and limitations of state of the art speech systems will also be presented. This course is designed for students wishing understand how to process real data for real applications, applying statistical and machine learning techniques as well as working with limitations in the technology.
- Machine Learning ElectiveDeep Reinforcement Learning & Controlor10-403 (12)ai10-403: Deep Reinforcement Learning & Control
This course brings together many disciplines of Artificial Intelligence (including computer vision, robot control, reinforcement learning, language understanding) to show how to develop intelligent agents that can learn to sense the world and learn to act by imitating others, maximizing sparse rewards, and/or satisfying their curiosity.
Machine Learning with Large Datasets (Undergraduate)or10-405 (12)ai10-405: Machine Learning with Large Datasets (Undergraduate)Large datasets pose difficulties across the machine learning pipeline. They are difficult to visualize and introduce computational, storage, and communication bottlenecks during data pre-processing and model training. Moreover, high capacity models often used in conjunction with large datasets introduce additional computational and storage hurdles during model training and inference. This course is intended to provide a student with the mathematical, algorithmic, and practical knowledge of issues involving learning with large datasets. Among the topics considered are: data cleaning, visualization, and pre-processing at scale; principles of parallel and distributed computing for machine learning; techniques for scalable deep learning; analysis of programs in terms of memory, computation, and (for parallel methods) communication complexity; and methods for low-latency inference. The class will include programming and written assignments to provide hands-on experience applying machine learning at scale. An introductory machine learning course is a prerequisite. A strong background in programming will also be necessary; suggested prerequisites include 15-210, 15-214, or equivalent. Students are expected to be familiar with Python or learn it during the course.
Deep Learning Systems: Algorithms and Implementationor10-414 (12)ai10-414: Deep Learning Systems: Algorithms and ImplementationThe goal of this course is to provide students an understanding and overview of the 'full stack' of deep learning systems, ranging from the high-level modeling design of modern deep learning systems, to the basic implementation of automatic differentiation tools, to the underlying device-level implementation of efficient algorithms. Throughout the course, students will design and build from scratch a complete deep learning library, capable of efficient GPU-based operations, automatic differentiation of all implemented functions, and the necessary modules to support parameterized layers, loss functions, data loaders, and optimizers. Using these tools, students will then build several state-of-the-art modeling methods, including convolutional networks for image classification and segmentation, recurrent networks and self-attention models for sequential tasks such as language modeling, and generative models for image generation.
Intermediate Deep Learningor10-417 (12)ai10-417: Intermediate Deep LearningBuilding intelligent machines that are capable of extracting meaningful representations from data lies at the core of solving many AI related tasks. In the past decade, researchers across many communities, from applied statistics to engineering, computer science and neuroscience, have developed deep models that are composed of several layers of nonlinear processing. An important property of these models is that they can learn useful representations by re-using and combining intermediate concepts, allowing these models to be successfully applied in a wide variety of domains, including visual object recognition, information retrieval, natural language processing, and speech perception. The goal of this course is to introduce students to both the foundational ideas and the recent advances in deep learning. The first part of the course will focus on supervised learning, including neural networks, back-propagation algorithm, convolutional models, recurrent neural networks, and their extensions with applications to image recognition, video analysis, and language modelling. The second part of the course will cover unsupervised learning, including variational autoencoders, sparse-coding, Boltzmann machines, and generative adversarial networks. This course will assume a reasonable degree of mathematical maturity and will require strong programming skills.
Machine Learning for Structured Dataor10-418 (12)ai10-418: Machine Learning for Structured DataA key challenge in machine learning is that of structured prediction: taking unstructured data as input and producing a structured output. Structured prediction problems abound throughout application areas such as natural language processing, speech processing, computational biology, computer vision, healthcare, and many others. In this course, we will study modern approaches to structured prediction building on probabilistic graphical models, deep learning, and search. The course will focus on three key aspects: models, inference, and learning. The models we consider will focus on both generative and discriminative models such as Bayesian networks, Markov random fields (MRFs), conditional random fields (CRFs), and deep neural networks including convolutional neural networks (CNNs) and recurrent neural networks (RNNs) and #8212; as well as hybrids of graphical models and neural networks. The course will explore approaches to exact and approximate inference: junction tree algorithm, approximate marginal inference by Markov chain Monte Carlo (MCMC) and variational methods, approximate MAP inference by integer linear programming (ILP) and search. We will explore unsupervised, semi-supervised, and supervised learning using different formulations of the learning problem: MLE, Bayesian inference, structured perceptron, M3Ns, learning to search, and autoencoders. Covered applications will include machine translation, speech recognition, DNA sequence analysis, scene understanding, medical diagnosis. This course is cross-listed as 10-418 and 10-618; students registered for 10-618 will do a course project.
Foundations of Learning, Game Theory, and Their Connectionsor10-422 (12)ai10-422: Foundations of Learning, Game Theory, and Their ConnectionsIn the past decades, researchers have discovered a number of important and deep connections between machine learning theory and algorithmic game theory. This course will explore these connections, both introducing fundamental topics in each area and describing how ideas from each area can shed light on the other.
Machine Learning for Text and Graph-based Miningor11-441 (9)ai11-441: Machine Learning for Text and Graph-based MiningThis course provides a comprehensive introduction to the theory and implementation of algorithms for organizing and searching large text collections. The first half of the course studies text search engines for enterprise and Web environments; the open-source Indri search engine is used as a working example. The second half studies text mining techniques such as clustering, categorization, and information extraction. Programming assignments give hands-on experience with document ranking algorithms, categorizing documents into browsing hierarchies, and related topics.
Introduction to Deep Learningor11-485 (9)ai11-485: Introduction to Deep LearningNeural networks have increasingly taken over various AI tasks, and currently produce the state of the art in many AI tasks ranging from computer vision and planning for self-driving cars to playing computer games. Basic knowledge of NNs, known currently in the popular literature as 'deep learning', familiarity with various formalisms, and knowledge of tools, is now an essential requirement for any researcher or developer in most AI and NLP fields. This course is a broad introduction to the field of neural networks and their 'deep' learning formalisms. The course traces some of the development of neural network theory and design through time, leading quickly to a discussion of various network formalisms, including simple feedforward, convolutional, recurrent, and probabilistic formalisms, the rationale behind their development, and challenges behind learning such networks and various proposed solutions. We subsequently cover various extensions and models that enable their application to various tasks such as computer vision, speech recognition, machine translation and playing games. Instruction Unlike prior editions of 11-785, the instruction will primarily be through instructor lectures, and the occasional guest lecture. Evaluation Students will be evaluated based on weekly continuous-evaluation tests, and their performance in assignments and a final course project. There will be six hands-on assignments, requiring both low-level coding and toolkit-based implementation of neural networks, covering basic MLP, convolutional and recurrent formalisms, as well as one or more advanced tasks, in addition to the final project.
Advanced Methods for Data Analysis36-402 (9)math36-402: Advanced Methods for Data AnalysisThis course introduces modern methods of data analysis, building on the theory and application of linear models from 36-401. Topics include nonlinear regression, nonparametric smoothing, density estimation, generalized linear and generalized additive models, simulation and predictive model-checking, cross-validation, bootstrap uncertainty estimation, multivariate methods including factor analysis and mixture models, and graphical models and causal inference. Students will analyze real-world data from a range of fields, coding small programs and writing reports.
- 2 × CS elective
Math/Stat Courses
- Differential and Integral Calculus21-120 (10)math21-120: Differential and Integral Calculus
Functions, limits, derivatives, logarithmic, exponential, and trigonometric functions, inverse functions; L'Hospital's Rule, curve sketching, Mean Value Theorem, related rates, linear and approximations, maximum-minimum problems, inverse functions, definite and indefinite integrals; integration by substitution and by parts. Applications of integration, as time permits. (Three 50 minute lectures, two 50 minute recitations)
- Integration and Approximation21-122 (10)math21-122: Integration and Approximation
Integration by trigonometric substitution and partial fractions; arclength; improper integrals; Simpson's and Trapezoidal Rules for numerical integration; separable differential equations, Newton's method, Euler's method, Taylor's Theorem, including a discussion of the remainder, sequences, series, power series. Parametric curves, polar coordinates, vectors, dot product. (Three 50 minute lectures, two 50 minute recitations)
- Mathematical Foundations for Computer Science15-151 (12)math15-151: Mathematical Foundations for Computer Science
*CS majors only* This course is offered to incoming Computer Science freshmen and focuses on the fundamental concepts in Mathematics that are of particular interest to Computer Science such as logic, sets,induction, functions, and combinatorics. These topics are used as a context in which students learn to formalize arguments using the methods of mathematical proof. This course uses experimentation and collaboration as ways to gain better understanding of the material. Open to CS freshmen only. NOTE: students must achieve a C or better
- Probability Theory for Computer Scientists36-218 (9)math36-218: Probability Theory for Computer Scientists
Probability theory is the mathematical foundation for the study of both statistics and of random systems. This course is an intensive introduction to probability,from the foundations and mechanics to its application in statistical methods and modeling of random processes. Special topics and many examples are drawn from areas and problems that are of interest to computer scientists and that should prepare computer science students for the probabilistic and statistical ideas they encounter in downstream courses and research. A grade of C or better is required in order to use this course as a pre-requisite for 36-226, 36-326, and 36-410. If you hold a Statistics primary/additional major or minor you will be required to complete 36-226. For those who do not have a major or minor in Statistics, and receive at least a B in 36-218, you will be eligible to move directly onto 36-401.
- Matrices and Linear Transformations21-241 (11)math21-241: Matrices and Linear Transformations
A first course in linear algebra intended for scientists, engineers, mathematicians and computer scientists. Students will be required to write some straightforward proofs. Topics to be covered: complex numbers, real and complex vectors and matrices, rowspace and columnspace of a matrix, rank and nullity, solving linear systems by row reduction of a matrix, inverse matrices and determinants, change of basis, linear transformations, inner product of vectors, orthonormal bases and the Gram-Schmidt process, eigenvectors and eigenvalues, diagonalization of a matrix, symmetric and orthogonal matrices.
- Calculus in Three Dimensionsor21-259 (10)math21-259: Calculus in Three Dimensions
Vectors, lines, planes, quadratic surfaces, polar, cylindrical and spherical coordinates, partial derivatives, directional derivatives, gradient, divergence, curl, chain rule, maximum-minimum problems, multiple integrals, parametric surfaces and curves, line integrals, surface integrals, Green-Gauss theorems. (Three 50 minute lectures, two 50 minute recitations)
Vector Calculus for Computer Scientistsor21-266 (10)math21-266: Vector Calculus for Computer ScientistsThis course is an introduction to vector calculus making use of techniques from linear algebra. Topics covered include scalar-valued and vector-valued functions, conic sections and quadric surfaces, new coordinate systems, partial derivatives, tangent planes, the Jacobian matrix, the chain rule, gradient, divergence, curl, the Hessian matrix, linear and quadratic approximation, local and global extrema, Lagrange multipliers, multiple integration, parametrised curves, line integrals, conservative vector fields, parametrised surfaces, surface integrals, Green's theorem, Stokes's theorem and Gauss's theorem. (Three 50 minute lectures, one 50 minute recitation)
Multidimensional Calculusor21-268 (11)math21-268: Multidimensional CalculusA serious introduction to multidimensional calculus that makes use of matrices and linear transformations. Results will be stated carefully and rigorously. Students will be expected to write some proofs; however, some of the deeper results will be presented without proofs. Topics to be covered include functions of several variables, limits, and continuity, partial derivatives, differentiability, chain rule, inverse and implicit functions, higher derivatives, Taylor's theorem, optimization, multiple integrals and change of variables, line integrals, surface integrals, divergence theorem and Stokes's theorem. (Three 50 minute lectures, one 50 minute recitation)
Vector Analysis21-269 (10)math21-269: Vector AnalysisA component of the honors program, 21-269 is a more demanding version of 21-268 of greater scope, with greater emphasis placed on rigorous proofs. Topics to be covered typically include: the real field, sups, infs, and completeness; geometry and topology of metric spaces; limits, continuity, and derivatives of maps between normed spaces; inverse and implicit function theorems, higher derivatives, Taylor's theorem, extremal calculus, and Lagrange multipliers. Integration. Iterated integration and change of variables. (Three 50 minute lectures, one 50 minute recitation)
- Modern Regression36-401 (9)math36-401: Modern Regression
This course is an introduction to the real world of statistics and data analysis using linear regression modeling. We will explore real data sets, examine various models for the data, assess the validity of their assumptions, and determine which conclusions we can make (if any). We will use the R programming language to implement our analyses and produce graphs and tables of results. Data analysis is a bit of an art; there may be several valid approaches. We will strongly emphasize the importance of critical thinking about the data and the question of interest. Our overall goal is to use data and a basic set of modeling tools to answer substantive questions, and to present the results in a scientific report.
Science Courses
Other Courses
- First Year Immigration Course07-128 (3)communication07-128: First Year Immigration Course
The First Year Immigration Course is taken by first-semester School of Computer Science students on the Pittsburgh campus. The course is designed to acquaint incoming students with computer science at CMU. Talks range from historical perspectives in the field to descriptions of the cutting edge research being conducted in the School of Computer Science. Enrollment is limited to SCS First Year students ONLY.
- Ethics and Policy Issues in Computingor17-200 (9)impact17-200: Ethics and Policy Issues in Computing
Should autonomous robots make life and death decisions on their own? Should we allow them to select a target and launch weapons? To diagnose injuries and perform surgery when human doctors are not around? Who should be permitted to observe you, find out who your friends are, what you do and say with them, what you buy, and where you go? Do social media and personalized search restrict our intellectual horizons? Do we live in polarizing information bubbles, just hearing echoes of what we already know and believe? As computing technology becomes ever more pervasive and sophisticated, we are presented with an escalating barrage of decisions about who, how, when, and for what purposes technology should be used. This course will provide an intellectual framework for discussing these pressing issues of our time, as we shape the technologies that in turn shape us. We will seek insight through reading, discussion, guest lectures, and debates. Students will also undertake an analysis of a relevant issue of their choice, developing their own position, and acquiring the research skills needed to lend depth to their thinking. The course will enhance students' ability to think clearly about contentious technology choices, formulate smart positions, and support their views with winning arguments.
Ethics and Roboticsor16-735 (12)impact16-735: Ethics and RoboticsThis course contextualizes robotics, AI, and machine learning within cultural conversation, ethics, and power relationships in society. It will draw upon 'AI and Humanity' as well as numerous other texts, including Mindless by Simon Head, Drone Theory by Grégoire Chamayou, and news articles. The course will culminate in team-based design and futuring project addressing the ways in which robotic technologies will influence society and values in the near future. Our target audience is students who will participate in computer science and robotics research and can use this course to inform future research and career decisions.
AI, Society, and Humanity80-249 (9)impact80-249: AI, Society, and HumanityAI and robotic technologies are developing rapidly and are increasingly incorporated into decisions, practices, and activities that impact individual and social interests. To ensure that these technologies advance meritorious goals without undermining important values or relationships, stakeholders must be able to understand the diverse ways in which new technologies can impact the lives of individuals and communities, the diverse dimensions on which such impacts can be evaluated and measured and where in the lifecycle of product development these various impacts might be anticipated and addressed. Through a series of case studies of current or near-future AI and robotics technologies students in this course will explore frameworks for assessing, evaluating and regulating novel technologies with the goal of ensuring that they support and advance human interests and social values.
- 2 × Free Elective
Goals
Students in the BSAI program within the School of Computer Science are expected to acquire the following skills upon graduation:
- Understand how to distill a real-world challenge as an artificial intelligence problem, involving explicit representation and learning of symbolic and numeric models; reasoning about such models; and using such models for decision making, action selection, and interaction with humans.
- Design, analyze, implement, and use state-of-the-art AI and machine learning techniques for dealing with real-world data, including data involving vision, language, perception, and uncertainty.
- Master the core concepts of computer science, with emphasis on data structures, programming, computing systems, and algorithm design, performance, and correctness across a variety of metrics (e.g., time, space, parallel vs. sequential implementation, what is computable).
- Master the fundamentals of discrete mathematics, logic, theorem proving and explanation, probability and statistics, and optimization.
- Describe, specify, and develop large-scale, open-ended artificial intelligence systems subject constraints such as performance, available data, and need for transparency. Communicate technical material effectively to technical and non-technical audiences.
- Work productively both individually and in teams.
- Recognize the social impact of artificial intelligence and the underlying responsibility to consider the ethical, privacy, moral, and legal implications of artificial intelligence technologies.
History of the Major
2023 | Increase 15-122 (Principles of Imperative Computation) and 15-150 (Principles of Functional Programming) from 10 units → 12. Increase 07-128 (First Year Immigration Course) from 1 unit → 3. Make 21-120 (Differential and Integral Calculus) prerequisite an explicit requirement. Replace 16-161 (ROB Freshman Seminar: Artificial Intelligence and Humanity) ethics option → 80-249 (AI, Society, and Humanity). Add 10-405 (Machine Learning with Large Datasets) and 10-422 (Foundations of Learning, Game Theory, and Their Connections) as ML-Elective options. Reduce free electives accordingly. |
2022 | Drop 15-483 (Truth, Justice, and Algorithms) as Decision-Elective option. Add 10-414 (Deep Learning Systems: Algorithms and Implementation) as ML-Elective option. Add 05-318 (Human AI Interaction) as Human-Elective option. |
2021 | Increase 15-151 (Mathematical Foundations for Computer Science) from 10 units → 12. |
2020 | |
2019 | Add 21-259 (Calculus in Three Dimensions). Make 21-120 (Differential and Integral Calculus) prerequisite implicit. Add 15-482 (Autonomous Agents) as Decision-Elective option. Add 10-417 (Intermediate Deep Learning) and 10-418 (Machine Learning for Structured Data) as ML-Elective options. Renumber 10-401 (Introduction to Machine Learning) → 10-315. Renumber 15-381 (Artificial Intelligence: Representation and Problem Solving) → 15-281. |
2018 | New major. |