Note on Course Numbers

Each Carnegie Mellon course number begins with a two-digit prefix which designates the department offering the course (76-xxx courses are offered by the Department of English, etc.). Although each department maintains its own course numbering practices, typically the first digit after the prefix indicates the class level: xx-1xx courses are freshmen-level, xx-2xx courses are sophomore level, etc. xx-6xx courses may be either undergraduate senior-level or graduate-level, depending on the department. xx-7xx courses and higher are graduate-level. Please consult the Schedule of Classes each semester for course offerings and for any necessary pre-requisites or co-requisites.

SCS: Computational Biology Courses

02-201 Programming for Scientists
Fall and Spring: 10 units
Provides a practical introduction to programming for students with little or no prior programming experience who are interested in science. Fundamental scientific algorithms will be introduced, and extensive programming assignments will be based on analytical tasks that might be faced by scientists, such as parsing, simulation, and optimization. Principles of good software engineering will also be stressed. The course will introduce students to the Go programming language, an industry-supported, modern programming language, the syntax of which will be covered in depth. Other assignments will be given in other programming languages such as Python and Java to highlight the commonalities and differences between languages. No prior programming experience is assumed, and no biology background is needed. Analytical skills and mathematical maturity are required. Course not open to CS majors.
02-223 Personalized Medicine: Understanding Your Own Genome
Fall: 9 units
Do you want to know how to discover the tendencies hidden in your genome? Since the first draft of a human genome sequence became available at the start of this century, the cost of genome sequencing has decreased dramatically. Personal genome sequencing will likely become a routine part of medical exams for patients for prognostic and diagnostic purposes. Personal genome information will also play an increasing role in lifestyle choices, as people take into account their own genetic tendencies. Commercial services such as 23andMe have already taken first steps in this direction. Computational methods for mining large-scale genome data are being developed to unravel the genetic basis of diseases and assist doctors in clinics. This course introduces students to biological, computational, and ethical issues concerning use of personal genome information in health maintenance, medical practice, biomedical research, and policymaking. We focus on practical issues, using individual genome sequences (such as that of Nobel prize winner James Watson) and other population-level genome data. Without requiring any background in biology or CS, we begin with an overview of topics from genetics, molecular biology, stats, and machine learning relevant to the modern personal genome era. We then cover scientific issues such as how to discover your genetic ancestry and how to learn from genomes about migration and evolution of human populations. We discuss medical aspects such as how to predict whether you will develop diseases such as diabetes based on your own genome, how to discover disease-causing genetic mutations, and how genetic information can be used to recommend clinical treatments.
02-250 Introduction to Computational Biology
Spring: 12 units
This 12-unit class provides a general introduction to computational tools for biology. The course is divided into two modules. Module 1 covers computational molecular biology/genomics. It examines important sources of biological data, how they are archived and made available to researchers, and what computational tools are available to use them effectively in research. In the process, it covers basic concepts in statistics, mathematics, and computer science needed to effectively use these resources and understand their results. Specific topics covered include sequence data, searching and alignment, structural data, genome sequencing, genome analysis, genetic variation, gene and protein expression, and biological networks and pathways. Module 2 covers computational cell biology, including biological modeling and image analysis. It includes homework assignments requiring modification of scripts to perform computational analyses. The modeling component includes computer models of population dynamics, biochemical kinetics, cell pathways, neuron behavior, and stochastic simulations. The imaging component includes basics of machine vision, morphological image analysis, image classification and image-derived models. Lectures and examinations are joint with 03-250, but recitations are separate. Recitations for this course are intended primarily for computational biology majors as well as computer science, statistics or engineering majors at the undergraduate or graduate level who have had significant prior experience with computer science or programming. Students may not take both 02-250 and 03-250 for credit.
Prerequisites: 15-112 or 02-201 or 15-110
02-251 Great Ideas in Computational Biology
Spring: 12 units
This 12-unit course provides an introduction to many of the great ideas that have formed the foundation for the transformation of life sciences into a fully-fledged computational discipline. This gateway course is intended as a first exposure to computational biology for first-year undergraduates in the School of Computer Science, although it is open to other computationally minded students who are interested in exploring the field. By completing this course, students will encounter a handful of fundamental algorithmic approaches deriving straight from very widely cited primary literature, much of which has been published in recent years. The course also introduces basic concepts in statistics, mathematics, and machine learning necessary to understand these approaches. Many of the ideas central to modern computational biology have resulted in widely used software that is applied to analyze (often very large) biological datasets; an important feature of the course is that students will be exposed to this software in the context of compelling biological problems.
Prerequisites: 03-121 and (02-201 or 15-110 or 15-112)
02-261 Quantitative Cell and Molecular Biology Laboratory
Fall and Spring
This is an introductory laboratory-based course designed to teach basic biological laboratory skills used in exploring the quantitative nature of biological systems and the reasoning required for performing research in computational biology. Over the course of the semester, students will design and perform multiple modern experiments and quantitatively analyze the results of these experiments. During this course students will also have an opportunity to use techniques learned during the course to experimentally answer an open question. Designing the experiments will require students to think critically about the biological context of the experiments as well as the necessary controls to ensure interpretable experimental results. During this course students will gain experience in many aspects of scientific research, including: sequencing DNA, designing and performing PCR for a variety of analyses, maintaining cell cultures, taking brightfield and fluorescent microscopy images, developing methods for automated analysis of cell images, communicating results to peers and colleagues. As space is limited, laboratory sections will be small. Additional sections will be added to accommodate all students on the waitlist. Course Outline: (1) 3-hour lab per week, (1) 1-hour lecture per week.
02-317 Algorithms in Nature
Intermittent: 9 units
Computer systems and biological processes often rely on networks of interacting entities to reach joint decisions, coordinate and respond to inputs. There are many similarities in the goals and strategies of biological and computational systems which suggest that each can learn from the other. These include the distributed nature of the networks (in biology molecules, cells, or organisms often operate without central control), the ability to successfully handle failures and attacks on a subset of the nodes, modularity and the ability to reuse certain components or sub-networks in multiple applications and the use of stochasticity in biology and randomized algorithms in computer science. In this course we will start by discussing classic biologically motivated algorithms including neural networks (inspired by the brain), genetic algorithms (sequence evolution), non-negative matrix factorization (signal processing in the brain), and search optimization (ant colony formation). We will then continue to discuss more recent bi-directional studies that have relied on biological processes to solve routing and synchronization problems, discover Maximal Independent Sets (MIS), and design robust and fault tolerant networks. In the second part of the class students will read and present new research in this area. Students will also work in groups on a final project in which they develop and test a new biologically inspired algorithm. No prior biological knowledge required.
Prerequisites: 15-210 and 15-251
Course Website: http://www.algorithmsinnature.org
02-319 Genomics and Epigenetics of the Brain
Fall: 9 units
This course will provide an introduction to genomics, epigenetics, and their application to problems in neuroscience. The rapid advances in genomic technology are in the process of revolutionizing how we conduct molecular biology research. These new techniques have given us an appreciation for the role that epigenetics modifications of the genome play in gene regulation, development, and inheritance. In this course, we will cover the biological basis of genomics and epigenetics, the basic computational tools to analyze genomic data, and the application of those tools to neuroscience. Through programming assignments and reading primary literature, the material will also serve to demonstrate important concepts in neuroscience, including the diversity of neural cell types, neural plasticity, the role that epigenetics plays in behavior, and how the brain is influenced by neurological and psychiatric disorders. Although the course focuses on neuroscience, the material is accessible and applicable to a wide range of topics in biology.
Prerequisites: (03-151 or 03-121) and 03-220 and (15-121 or 02-201 or 15-110)
02-402 Computational Biology Seminar
Fall and Spring: 3 units
This course consists of weekly invited presentations on current computational biology research topics by leading scientists. Students will be expected to digest what they have learned in the seminar by writing short summaries on each speaker's topic.

Course Website: http://www.compbio.cmu.edu/news-and-events/2014-2015-seminar-series/
02-403 Special Topics in Bioinformatics and Computational Biology
Intermittent: 6 units
A decade ago, mass spectrometry (MS) was merely a qualitative research technique allowing the analysis of samples regarding the presence of specific biomolecules. However, as MS has turned quantitative, more sophisticated experiments can be performed, such as the recording of signal transduction kinetics and the analysis of the composition of protein complexes and organelles. This makes MS-based proteomics a powerful method to study spatiotemporal protein dynamics. The development of relative quantification approaches, which generally use 2H, 13C or 15N isotope labels, has especially led to an increase in quantification accuracy and set off numerous new experimental approaches to study protein regulation. In this mini-course, we will cover mass spectrometry principles, discuss classical as well as current primary literature addressing method development and quantitative analysis, and highlight state-of-the-art biological studies that employ MS. A combination of lectures, student presentations, and written exercises will establish a thorough knowledge of current bio-analytical MS approaches.
Prerequisites: (02-250 Min. grade C or 03-250 Min. grade C) and 03-121 Min. grade C
02-421 Algorithms for Computational Structural Biology
Intermittent: 12 units
Some of the most interesting and difficult challenges in computational biology and bioinformatics arise from the determination, manipulation, or exploitation of molecular structures. This course will survey these challenges and present a variety of computational methods for addressing them. Topics will include: molecular dynamics simulations, computer-aided drug design, and computer-aided protein design. The course is appropriate for both students with backgrounds in computer science and those in the life sciences.
02-425 Computational Methods for Proteogenomics and Metabolomics
Spring: 9 units
Proteomics and metabolomics are the large scale study of proteins and metabolites, respectively. In contrast to genomes, proteomes and metabolomes vary with time and the specific stress or conditions an organism is under. Applications of proteomics and metabolomics include determination of protein and metabolite functions (including in immunology and neurobiology) and discovery of biomarkers for disease. These applications require advanced computational methods to analyze experimental measurements, create models from them, and integrate with information from diverse sources. This course specifically covers computational mass spectrometry, structural proteomics, proteogenomics, metabolomics, genome mining and metagenomics.
Prerequisites: 02-604 or 02-250
02-450 Automation of Biological Research: Robotics and Machine Learning
Fall and Spring: 9 units
Biology is increasingly becoming a "big data" science, as biomedical research has been revolutionized by automated methods for generating large amounts of data on diverse biological processes. Integration of data from many types of experiments is required to construct detailed, predictive models of cell, tissue or organism behaviors, and the complexity of the systems suggests that these models need to be constructed automatically. This requires iterative cycles of acquisition, analysis, modeling, and experimental design, since it is not feasible to do all possible biological experiments. This course will cover a range of automated biological research methods and a range of computational methods for automating the acquisition and interpretation of the data (especially active learning, proactive learning, compressed sensing and model structure learning). Grading will be based on class participation, homeworks, and a final project. The course is designed for graduate and upper-level undergraduate students with a wide variety of backgrounds. The course is intended to be self-contained but students may need to do some additional work to gain fluency in core concepts. Students should have a basic knowledge of biology, statistics, and programming. Experience with Machine Learning is useful but not mandatory.
Prerequisites: 10-401 and 15-122
Course Website: https://sites.google.com/site/automationofbiologicalresearch/
02-499 Independent Study in Computational Biology
Fall and Spring
The student will, under the individual guidance of a faculty member, read and digest process papers or a textbook in an advanced area of computational biology not offered by an existing course at Carnegie Mellon. The student will demonstrate their mastery of the material by a combination of one or more of the following: oral discussions with the faculty member; exercises set by the faculty member accompanying the readings; and a written summary synthesizing the material that the student learned. Permission required.
02-500 Undergraduate Research in Computational Biology
Fall and Spring
This course is for undergraduate students who wish to do supervised research for academic credit with a Computational Biology faculty member. Interested students should first contact the Professor with whom they would like to work. If there is mutual interest, the Professor will direct you to the Academic Programs Coordinator who will enroll you in the course. 02-250 is a suggested pre-requisite.
02-510 Computational Genomics
Fall and Spring
Dramatic advances in experimental technology and computational analysis are fundamentally transforming the basic nature and goal of biological research. The emergence of new frontiers in biology, such as evolutionary genomics and systems biology is demanding new methodologies that can confront quantitative issues of substantial computational and mathematical sophistication. In this course we will discuss classical approaches and latest methodological advances in the context of the following biological problems: 1) sequence analysis, focusing on gene finding and motifs detection, 2) analysis of high throughput molecular data, such as gene expression data, including normalization, clustering, pattern recognition and classification, 3) molecular and regulatory evolution, focusing on phylogenetic inference and regulatory network evolution, 4) population genetics, focusing on how genomes within a population evolve through recombination, mutation, and selection to create various structures in modern genomes and 5) systems biology, concerning how to combine diverse data types to make mechanistic inferences about biological processes. From the computational side this course focuses on modern machine learning methodologies for computational problems in molecular biology and genetics, including probabilistic modeling, inference and learning algorithms, data integration, time series analysis, active learning, etc. This course may be taken for 12 units, which requires completion of a course project, or for 9 units, which does not.
Prerequisites: 15-122 Min. grade C and (15-151 Min. grade C or 21-128 Min. grade C or 21-127 Min. grade C)
02-512 Computational Methods for Biological Modeling and Simulation
Fall: 9 units
This course covers a variety of computational methods important for modeling and simulation of biological systems. It is intended for graduates and advanced undergraduates with either biological or computational backgrounds who are interested in developing computer models and simulations of biological systems. The course will emphasize practical algorithms and algorithm design methods drawn from various disciplines of computer science and applied mathematics that are useful in biological applications. The general topics covered will be models for optimization problems, simulation and sampling, and parameter tuning. Course work will include problem sets with significant programming components and independent or group final projects.
Prerequisites: 15-110 or 02-201 or 15-112
02-514 String Algorithms
Fall: 12 units
Provides an in-depth look at modern algorithms used to process string data, particularly those relevant to genomics. The course will cover the design and analysis of efficient algorithms for processing enormous collections of strings. Topics will include string search; inexact matching; string compression; string data structures such as suffix trees, suffix arrays, and searchable compressed indices; and the Burrows-Wheeler transform. Applications of these techniques in biology will be presented, including genome assembly, transcript assembly, whole-genome alignment, gene expression quantification, read mapping, and search of large sequence databases. No knowledge of biology is assumed, and the topics covered will be of use in other fields involving large collections of strings. Programming proficiency is required.
Prerequisite: 15-251
02-518 Computational Medicine
Spring: 12 units
Modern medical research increasingly relies on the analysis of large patient datasets to enhance our understanding of human diseases. This course will focus on the computational problems that arise from studies of human diseases and the translation of research to the bedside to improve human health. The topics to be covered include computational strategies for advancing personalized medicine, pharmacogenomics for predicting individual drug responses, metagenomics for learning the role of the microbiome in human health, mining electronic medical records to identify disease phenotypes, and case studies in complex human diseases such as cancer and asthma. We will discuss how machine learning methodologies such as regression, classification, clustering, semi-supervised learning, probabilistic modeling, and time-series modeling are being used to analyze a variety of datasets collected by clinicians. Class sessions will consist of lectures, discussions of papers from the literature, and guest presentations by clinicians and other domain experts. Grading will be based on homework assignments and a project. 02-250 is a suggested pre-requisite.
Prerequisites: 10-401 or 10-601
Course Website: https://sites.google.com/site/computationalmedicinecmu/
02-530 Cell and Systems Modeling
Fall: 12 units
This course will introduce students to the theory and practice of modeling biological systems from the molecular to the organism level with an emphasis on intracellular processes. Topics covered include kinetic and equilibrium descriptions of biological processes, systematic approaches to model building and parameter estimation, analysis of biochemical circuits modeled as differential equations, modeling the effects of noise using stochastic methods, modeling spatial effects, and modeling at higher levels of abstraction or scale using logical or agent-based approaches. A range of biological models and applications will be considered including gene regulatory networks, cell signaling, and cell cycle regulation. Weekly lab sessions will provide students hands-on experience with methods and models presented in class. Course requirements include regular class participation, bi-weekly homework assignments, a take-home exam, and a final project. Prerequisites: The course is designed for graduate and upper-level undergraduate students with a wide variety of backgrounds. The course is intended to be self-contained but students may need to do some additional work to gain fluency in core concepts. Students should have a basic knowledge of calculus, differential equations, and chemistry as well as some previous exposure to molecular biology and biochemistry. Experience with programming and numerical computation is useful but not mandatory. Laboratory exercises will use MATLAB as the primary modeling and computational tool augmented by additional software as needed.
Prerequisites: (03-121 or 33-121 or 03-151) and (03-232 or 03-231) and 21-112 and 09-105
02-601 Programming for Scientists
Fall and Spring: 12 units
Provides a practical introduction to programming for students with little or no prior programming experience who are interested in science. Fundamental scientific algorithms will be introduced, and extensive programming assignments will be based on analytical tasks that might be faced by scientists, such as parsing, simulation, and optimization. Principles of good software engineering will also be stressed, and students will have the opportunity to design their own programming project on a scientific topic of their choice. The course will introduce students to the Go programming language, an industry-supported, modern programming language, the syntax of which will be covered in depth. Other assignments will be given in other programming languages such as Python and Java to highlight the commonalities and differences between languages. No prior programming experience is assumed, and no biology background is needed. Analytical skills and mathematical maturity are required. Course not open to CS majors.

Course Website: http://compeau.cbd.cmu.edu/programming-for-scientists/
02-604 Fundamentals of Bioinformatics
Spring: 12 units
How do we find potentially harmful mutations in your genome? How can we reconstruct the Tree of Life? How do we compare similar genes from different species? These are just three of the many central questions of modern biology that can only be answered using computational approaches. This 12-unit course will delve into some of the fundamental computational ideas used in biology and let students apply existing resources that are used in practice every day by thousands of biologists. The course offers an opportunity for students who possess an introductory programming background to become more experienced coders within a biological setting. As such, it presents a natural next course for students who have completed 02-601. 02-250 is a suggested pre-requisite for undergraduates.
02-613 Algorithms and Advanced Data Structures
Fall and Spring: 12 units
The objective of this course is to study algorithms for general computational problems, with a focus on the principles used to design those algorithms. Efficient data structures will be discussed to support these algorithmic concepts. Topics include: Run time analysis, divide-and-conquer algorithms, dynamic programming algorithms, network flow algorithms, linear and integer programming, large-scale search algorithms and heuristics, efficient data storage and query, and NP-completeness. Although this course may have a few programming assignments, it is primarily not a programming course. Instead, it will focus on the design and analysis of algorithms for general classes of problems. This course is not open to CS graduate students who should consider taking 15-651 instead. 02-250 is a suggested pre-requisite.
02-651 New Technologies and Future Markets
Fall: 12 units
This course focuses on technological trends and how these trends can help shape or disrupt new and existing markets. Students will learn to identify, analyze, and synthesize emerging trends and perform detailed research on how these trends can influence and create markets. By understand the drivers behind these trends students will be able to identify key market opportunity inflection points in biotechnology as well as the relationship between business processes and information technology (IT). Students will also learn to assess some information technologies and the potential of applying them to solve problems and create commercially viable solutions. The course is designed for the student interested in finding new venture opportunities on the cutting edge of technology and finding and evaluating the opportunities for further development. For MS Biotechnology Innovation and Computation students only.
Prerequisite: 11-695
02-654 Biotechnology Enterprise Development
Fall: 12 units
In this course students learn how to develop a biotech start-up, create a Minimum Viable Product (MVP), business model and strategy for the product. Students will learn about business modeling, customer development, customer validation, proposal, product branding, and marketing for their product. The course will require students to spend most time to validate their start up concept and prototypes with potential customers and adapt to critical feedback and revise their respective value propositions accordingly. Students learn to balance technical product development with customer requirements, business strategy and budget constraints. This course provides real world, hands-on learning on what it is like to start a company. Different business modeling will be covered. By understand customer discovery and validation concepts will aid students to effectively modify their original concepts to meet market demands. Student teams will learn how to revise, improve their prototype by the end of the term. This is a fast paced course in which students are expected to spend most of the time outside of the classroom to interact with potential customers to validate, test, verify, and integrate essentials elements for their start-up business proposal. Up to now, students have been learning some technologies and methods for solving problems in the life science industry and build a prototype for their start-up. However, a new venture proposal is not a collection of isolated bits. It should be thorough validated via customer's inputs and market needs to tell a single story of how the venture will reach its end goals. Final deliverable is creation and presentation of a well explicated, business proposal in addition to a product prototype corresponding to the business proposal.
Prerequisites: 11-695 and 02-651
02-699 Independent Study in Computational Biology
Fall and Spring
The student will, under the individual guidance of a faculty member, read and digest process papers or a textbook in an advanced area of computational biology not offered by an existing course at Carnegie Mellon. The student will demonstrate their mastery of the material by a combination of one or more of the following: oral discussions with the faculty member; exercises set by the faculty member accompanying the readings; and a written summary synthesizing the material that the student learned. Permission required.
02-703 Special Topics in Bioinformatics and Computational Biology
Intermittent: 6 units
A decade ago, mass spectrometry (MS) was merely a qualitative research technique allowing the analysis of samples regarding the presence of specific biomolecules. However, as MS has turned quantitative, more sophisticated experiments can be performed, such as the recording of signal transduction kinetics and the analysis of the composition of protein complexes and organelles. This makes MS-based proteomics a powerful method to study spatiotemporal protein dynamics. The development of relative quantification approaches, which generally use 2H, 13C or 15N isotope labels, has especially led to an increase in quantification accuracy and set off numerous new experimental approaches to study protein regulation. In this mini-course, we will cover mass spectrometry principles, discuss classical as well as current primary literature addressing method development and quantitative analysis, and highlight state-of-the-art biological studies that employ MS. A combination of lectures, student presentations, and written exercises will establish a thorough knowledge of current bio-analytical MS approaches.
02-710 Computational Genomics
Spring: 12 units
Dramatic advances in experimental technology and computational analysis are fundamentally transforming the basic nature and goal of biological research. The emergence of new frontiers in biology, such as evolutionary genomics and systems biology is demanding new methodologies that can confront quantitative issues of substantial computational and mathematical sophistication. In this course we will discuss classical approaches and latest methodological advances in the context of the following biological problems: 1) sequence analysis, focusing on gene finding and motifs detection, 2) analysis of high throughput molecular data, such as gene expression data, including normalization, clustering, pattern recognition and classification, 3) molecular and regulatory evolution, focusing on phylogenetic inference and regulatory network evolution, 4) population genetics, focusing on how genomes within a population evolve through recombination, mutation, and selection to create various structures in modern genomes and 5) systems biology, concerning how to combine diverse data types to make mechanistic inferences about biological processes. From the computational side this course focuses on modern machine learning methodologies for computational problems in molecular biology and genetics, including probabilistic modeling, inference and learning algorithms, data integration, time series analysis, active learning, etc.
02-711 Computational Molecular Biology and Genomics
Spring: 12 units
An advanced introduction to computational molecular biology, using an applied algorithms approach. The first part of the course will cover established algorithmic methods, including pairwise sequence alignment and dynamic programming, multiple sequence alignment, fast database search heuristics, hidden Markov models for molecular motifs and phylogeny reconstruction. The second part of the course will explore emerging computational problems driven by the newest genomic research. Course work includes four to six problem sets, one midterm and final exam.
Prerequisites: (03-151 or 03-121) and 15-122
02-712 Computational Methods for Biological Modeling and Simulation
Fall: 12 units
This course covers a variety of computational methods important for modeling and simulation of biological systems. It is intended for graduates and advanced undergraduates with either biological or computational backgrounds who are interested in developing computer models and simulations of biological systems. The course will emphasize practical algorithms and algorithm design methods drawn from various disciplines of computer science and applied mathematics that are useful in biological applications. The general topics covered will be models for optimization problems, simulation and sampling, and parameter tuning. Course work will include problem sets with significant programming components and independent or group final projects.
Prerequisites: (15-110 or 15-112) and (02-613 or 02-201)
02-714 String Algorithms
Fall: 12 units
Provides an in-depth look at modern algorithms used to process string data, particularly those relevant to genomics. The course will cover the design and analysis of efficient algorithms for processing enormous collections of strings. Topics will include string search; inexact matching; string compression; string data structures such as suffix trees, suffix arrays, and searchable compressed indices; and the Borrows-Wheeler transform. Applications of these techniques in biology will be presented, including genome assembly, transcript assembly, whole-genome alignment, gene expression quantification, read mapping, and search of large sequence databases. No knowledge of biology is assumed, and the topics covered will be of use in other fields involving large collections of strings. Programming proficiency is required.
Prerequisite: 15-251
02-715 Advanced Topics in Computational Genomics
Fall and Spring: 12 units
Research in biology and medicine is undergoing a revolution due to the availability of high-throughput technology for probing various aspects of a cell at a genome-wide scale. The next-generation sequencing technology is allowing researchers to inexpensively generate a large volume of genome sequence data. In combination with various other high-throughput techniques for epigenome, transcriptome, and proteome, we have unprecedented opportunities to answer fundamental questions in cell biology and understand the disease processes with the goal of finding treatments in medicine. The challenge in this new genomic era is to develop computational methods for integrating different data types and extracting complex patterns accurately and efficiently from a large volume of data. This course will discuss computational issues arising from high-throughput techniques recently introduced in biology, and cover very recent developments in computational genomics and population genetics, including genome structural variant discovery, association mapping, epigenome analysis, cancer genomics, and transcriptome analysis. The course material will be drawn from very recent literature. Grading will be based on weekly write-ups for ciritiques of the papers to be discussed in the class, class participation, and a final project. It assumes a basic knowledge of machine learning and computational genomics.
02-717 Algorithms in Nature
Fall: 12 units
Computer systems and biological processes often rely on networks of interacting entities to reach joint decisions, coordinate and respond to inputs. There are many similarities in the goals and strategies of biological and computational systems which suggest that each can learn from the other. These include the distributed nature of the networks (in biology molecules, cells, or organisms often operate without central control), the ability to successfully handle failures and attacks on a subset of the nodes, modularity and the ability to reuse certain components or sub-networks in multiple applications and the use of stochasticity in biology and randomized algorithms in computer science. In this course we will start by discussing classic biologically motivated algorithms including neural networks (inspired by the brain), genetic algorithms (sequence evolution), non-negative matrix factorization (signal processing in the brain), and search optimization (ant colony formation). We will then continue to discuss more recent bi-directional studies that have relied on biological processes to solve routing and synchronization problems, discover Maximal Independent Sets (MIS), and design robust and fault tolerant networks. In the second part of the class students will read and present new research in this area. Students will also work in groups on a final project in which they develop and test a new biologically inspired algorithm. See also: www.algorithmsinnature.org no prior biological knowledge required.
02-718 Computational Medicine
Spring: 12 units
Modern medical research increasingly relies on the analysis of large patient datasets to enhance our understanding of human diseases. This course will focus on the computational problems that arise from studies of human diseases and the translation of research to the bedside to improve human health. The topics to be covered include computational strategies for advancing personalized medicine, pharmacogenomics for predicting individual drug responses, metagenomics for learning the role of the microbiome in human health, mining electronic medical records to identify disease phenotypes, and case studies in complex human diseases such as cancer and asthma. We will discuss how machine learning methodologies such as regression, classification, clustering, semi-supervised learning, probabilistic modeling, and time-series modeling are being used to analyze a variety of datasets collected by clinicians. Class sessions will consist of lectures, discussions of papers from the literature, and guest presentations by clinicians and other domain experts. Grading will be based on homework assignments and a project. 02-250 is a suggested pre-requisite.
Prerequisites: 10-401 or (10-601 and 10-701)

Course Website: https://sites.google.com/site/computationalmedicinecmu/
02-719 Genomics and Epigenetics of the Brain
Fall: 12 units
This course will provide an introduction to genomics, epigenetics, and their application to problems in neuroscience. The rapid advances in genomic technology are in the process of revolutionizing how we conduct molecular biology research. These new techniques have given us an appreciation for the role that epigenetics modifications of the genome play in gene regulation, development, and inheritance. In this course, we will cover the biological basis of genomics and epigenetics, the basic computational tools to analyze genomic data, and the application of those tools to neuroscience. Through programming assignments and reading primary literature, the material will also serve to demonstrate important concepts in neuroscience, including the diversity of neural cell types, neural plasticity, the role that epigenetics plays in behavior, and how the brain is influenced by neurological and psychiatric disorders. Although the course focuses on neuroscience, the material is accessible and applicable to a wide range of topics in biology.
Prerequisites: (03-151 or 03-121) and 03-220 and (15-121 or 15-110 or 02-201)
02-721 Algorithms for Computational Structural Biology
Intermittent: 12 units
Some of the most interesting and difficult challenges in computational biology and bioinformatics arise from the determination, manipulation, or exploitation of molecular structures. This course will survey these challenges and present a variety of computational methods for addressing them. Topics will include: molecular dynamics simulations, computer-aided drug design, and computer-aided protein design. The course is appropriate for both students with backgrounds in computer science and those in the life sciences.
02-725 Computational Methods for Proteogenomics and Metabolomics
Spring: 12 units
Proteomics and metabolomics are the large scale study of proteins and metabolites, respectively. In contrast to genomes, proteomes and metabolomes vary with time and the specific stress or conditions an organism is under. Applications of proteomics and metabolomics include determination of protein and metabolite functions (including in immunology and neurobiology) and discovery of biomarkers for disease. These applications require advanced computational methods to analyze experimental measurements, create models from them, and integrate with information from diverse sources. This course specifically covers computational mass spectrometry, structural proteomics, proteogenomics, metabolomics, genome mining and metagenomics. Prerequisites: 02-250 or 02-604.
Prerequisites: 02-604 or 02-250
02-730 Cell and Systems Modeling
Fall: 12 units
This course will introduce students to the theory and practice of modeling biological systems from the molecular to the organism level with an emphasis on intracellular processes. Topics covered include kinetic and equilibrium descriptions of biological processes, systematic approaches to model building and parameter estimation, analysis of biochemical circuits modeled as differential equations, modeling the effects of noise using stochastic methods, modeling spatial effects, and modeling at higher levels of abstraction or scale using logical or agent-based approaches. A range of biological models and applications will be considered including gene regulatory networks, cell signaling, and cell cycle regulation. Weekly lab sessions will provide students hands-on experience with methods and models presented in class. Course requirements include regular class participation, bi-weekly homework assignments, a take-home exam, and a final project. Prerequisites: The course is designed for graduate and upper-level undergraduate students with a wide variety of backgrounds. The course is intended to be self-contained but students may need to do some additional work to gain fluency in core concepts. Students should have a basic knowledge of calculus, differential equations, and chemistry as well as some previous exposure to molecular biology and biochemistry. Experience with programming and numerical computation is useful but not mandatory. Laboratory exercises will use MATLAB as the primary modeling and computational tool augmented by additional software as needed. *THIS COURSE WILL BE AT PITT
Prerequisites: (33-121 or 03-121 or 03-151) and (03-232 or 03-231) and 21-112 and 09-105
Course Website: https://sites.google.com/site/cellandsystemsmodeling/
02-740 Bioimage Informatics
Spring: 12 units
The goals of this course are to provide students with the following: the ability to use mathematical techniques such as linear algebra. Fourier theory and sampling in more advanced signal processing settings; fundamentals of multiresolution and wavelet techniques; and in-depth coverage of some bioimaging applications such as compression and denoising. Upon successful completion of this course, the student will be able to: explain the importance and use of signal representations in building more sophisticated signal processing tools, such as wavelets; think in basic time-frequency terms; describe how Fourier theory fits in a bigger picture of signal representations; use basic multirate building blocks, such as a two-channel filter bank; characterize the discrete wavelet transform and its variations; construct a time-frequency decomposition to fit a given signal; explain how these tools are used in various applications; and apply these concepts to solve a practical bioimaging problem through an independent project. Pre-requisite: 18-791, or permission of instructor. (Also known as 18-799) 02-250 is a suggested pre-requisite.
Prerequisites: 18-791 or 18-799
02-750 Automation of Biological Research: Robotics and Machine Learning
Fall and Spring: 12 units
Biology is increasingly becoming a "big data" science, as biomedical research has been revolutionized by automated methods for generating large amounts of data on diverse biological processes. Integration of data from many types of experiments is required to construct detailed, predictive models of cell, tissue or organism behaviors, and the complexity of the systems suggests that these models need to be constructed automatically. This requires iterative cycles of acquisition, analysis, modeling, and experimental design, since it is not feasible to do all possible biological experiments. This course will cover a range of automated biological research methods and a range of computational methods for automating the acquisition and interpretation of the data (especially active learning, proactive learning, compressed sensing and model structure learning). Grading will be based on class participation, homeworks, and a final project. The course is designed for graduate and upper-level undergraduate students with a wide variety of backgrounds. The course is intended to be self-contained but students may need to do some additional work to gain fluency in core concepts. Students should have a basic knowledge of biology, statistics, and programming.
Prerequisites: 10-601 or 10-701
Course Website: https://sites.google.com/site/automationofbiologicalresearch/?pli=1
02-760 Laboratory Methods for Computational Biologists
Fall and Spring: 6 units
Computational biologists frequently focus on analyzing and modeling large amounts of biological data, often from high-throughput assays or diverse sources. It is therefore critical that students training in computational biology be familiar with the paradigms and methods of experimentation and measurement that lead to the production of these data. This one-semester laboratory course gives students a deeper appreciation of the principles and challenges of biological experimentation. Students learn a range of topics, including experimental design, structural biology, next generation sequencing, genomics, proteomics, bioimaging, and high-content screening. Class sessions are primarily devoted to designing and performing experiments in the lab using the above techniques. Students are required to keep a detailed laboratory notebook of their experiments and summarize their resulting data in written abstracts and oral presentations given in class-hosted lab meetings. With an emphasis on the basics of experimentation and broad views of multiple cutting-edge and high-throughput techniques, this course is appropriate for students who have never taken a traditional undergraduate biology lab course, as well as those who have and are looking for introductory training in more advanced approaches. Grading: Letter grade based on class participation, laboratory notebooks, experimental design assignments, and written and oral presentations. 02-250 is a suggested pre-requisite.
02-801 Computational Biology Internship
Fall and Summer: 3 units
This course is for students participating in an internship or co-op.
02-900 Ph.D. Thesis Research
All Semesters
This course is for Ph.D students doing supervised research for academic credit.

SCS: Human-Computer Interaction Courses

05-291 Learning Media Design
Fall: 12 units
[IDeATe collaborative course] Learning is a complex human phenomenon with cognitive, social and personal dimensions that need to be accounted for in the design of technology enhanced learning experiences. In this studio course students will apply learning science concepts to critique existing forms of learning media, establish a set of design precedents to guide project work and produce a series of design concepts that support learning interactions in a real-world context. Collaborating in small interdisciplinary teams, students will partner with a local informal learning organization (e.g. museum, after school program provider, maker space) to conduct learning design research studies, synthesize findings, establish learning goals and iteratively prototype and assess design concepts. As final deliverables, students will present their design research findings, design concepts, and prototypes to stakeholders, and draft a media-rich proposal for their learning media concept to pitch to a local funder. Please note that there may be usage/materials fees associated with this course. Please note that there may be usage/materials fees associated with this course.
Prerequisite: 05-292
05-292 Learning Media Methods
Spring: 12 units
Learning Media Methods brings together students from across the disciplines to consider the design of mediated learning experiences though a project-based inquiry course. Students will be introduced to a range of design research methods and associated frameworks that explore the cognitive, social and affective dimensions of learning in everyday contexts through readings, invited lectures, in-class activities and assignments. Students will conduct a series of short design research studies to define learning goals and develop supporting design concepts that improve learning outcomes for diverse participants in informal learning settings (e.g. museums, after school programs, maker spaces or online). In concept development, we will look at how to position technology and question its role in the setting to engage and foster positive learning interactions. This course will work in tandem with 80-292 Learning Science Principles and will culminate in a media-rich presentation of design concepts to a stakeholder audience, and include an evaluation plan describing how learning outcomes for the project would be assessed.
05-317 Design Studio on Intelligent Products and Services
Intermittent: 12 units
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 people¿s 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.

Course Website: https://hcii.cmu.edu/academics/courses
05-320 Social Web
Intermittent: 12 units
With the growth of online environments like MySpace, Second Life, World of Warcraft, Wikipedia, blogs, online support groups, and open source development communities, the web is no longer just about information. This course, jointly taught by a computer scientist and a behavioral scientist, will examine a sampling of the social, technical and business challenges social web sites must solve to be successful, teach students how to use high-level tools to analyze, design or build online communities, and help them understand the social impact of spending at least part of their lives online. This class is open to advanced undergraduates and graduate students with either technical or non-technical backgrounds. Course work will include lectures and class discussion, homework, class presentations, and a group research or design project.
05-341 Organizational Communication
All Semesters: 9 units
Most of management is communication. You communicate to get information that will be the basis of decisions, coordinate activity, to provide a vision for the people who work for and with you, to and to sell yourself and your work. The goal of this course is to identify communication challenges within work groups and organizations and ways to overcome them. To do this requires that we know how communication normally works, what parts are difficult, and how to fix it when it goes wrong. The focus of this course is on providing you with a broad understanding of the way communication operates within dyads, work groups, and organizations. The intent is to give you theoretical and empirical underpinnings for the communication you will undoubtedly participate in when you move to a work environment, and strategies for improving communication within your groups. Because technology is changing communication patterns and outcomes both in organizations and more broadly in society, the course examines these technological changes. Readings come primarily from the empirical research literature.

Course Website: http://www.hcii.cmu.edu/courses/organizational-communication
05-391 Designing Human Centered Software
All Semesters: 12 units
Why 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 an introduction to designing, prototyping, and evaluating user interfaces. If you take only one course in Human-Computer Interaction, this is the course for you. This class is a core course for undergrads in the HCI Minor but open to all undergrads and grad students, with either technical or non-technical backgrounds. We will cover theory as well as practical application of ideas from Human-Computer Interaction. Course work includes lectures, class discussion, homework, class presentations, and group project. Students will need a prerequisite of a fundamental computer programming course.
Prerequisites: 15-110 or 15-104 or 15-112
Course Website: http://www.hcii.cmu.edu/courses/designing-human-centered-software
05-392 Interaction Design Overview
Fall: 9 units
This studio course offers a broad overview of communication and interaction design. Students will learn design methodologies such as brainstorming, sketching, storyboarding, wire framing, and prototyping. Students learn to take a human-centered design approach to their work. Assignments include short in-class exercises as well as individual and team-based projects. Students take part in studio critiques, engaging in critical discussions about the strengths and weaknesses of their own work and the work of others. No coding is required.
05-395 Applications of Cognitive Science
Spring: 9 units
The goal of this course is to examine cases where basic research on cognitive science, including cognitive neuroscience, has made its way into application, in order to understand how science gets applied more generally. The course focuses on applications that are sufficiently advanced as to have made an impact outside of the research field per se; for example, as a product, a change in practice, or a legal statute. Examples are virtual reality (in vision, hearing, and touch), cognitive tutors, phonologically based reading programs, latent semantic analysis applications to writing assessment, and measures of consumers' implicit attitudes. The course will use a case-study approach that considers a set of applications in detail, while building a general understanding of what it means to move research into the applied setting. The questions to be considered include: What makes a body of theoretically based research applicable? What is the pathway from laboratory to practice? What are the barriers - economic, legal, entrenched belief or practice? The format will emphasize analysis and discussion by students. They should bring to the course an interest in application; extensive prior experience in cognitive science is not necessary. The course will include tutorials on basic topics in cognitive science such as perception, memory, and spatial cognition. These should provide sufficient grounding to discuss the applications.

Course Website: http://www.hcii.cmu.edu/courses/applications-cognitive-science
05-410 User-Centered Research and Evaluation
Fall: 12 units
This course provides and overview and introduction to the field of human-computer interaction (HCI). It introduces students to tools, techniques, and sources of information about HCI and provides a systematic approach to design. The course increases awareness of good and bad design through observation of existing technology, and teaches the basic skills of task analysis, and analytic and empirical evaluation methods. This is a companion course to courses in visual design (51-422) and software implementation (05-430, 05-431). When registering for this course, undergraduate students are automatically placed the wait list. Students will be then moved into the class, based on if they are in the BHCI second major and year in school e.g. seniors, juniors, etc This course is NOT open to students outside the HCI major. When registering for this course, undergraduate students are automatically placed the wait list. Students will be then moved into the class, based on if they are in the BHCI second major and year in school.
05-413 Human Factors
Fall: 9 units
This course uses theory and research from human factors, cognitive science, and social science to understand and design the interactions of humans with the built world, tools, and technology. The course emphasizes current work in applied domains such as automotive design, house construction, medical human factors, and design of information devices. The course also will emphasize not only individual human factors (e.g., visual response, anthropometry) but also the organizational arrangements that can amplify or correct human factors problems. Through reading, discussion, and projects, you will learn about human perceptual, cognitive, and physical processes that affect how people interact with, and use, technology and tools. You will learn why we have so many automobile accidents, voting irregularities, and injuries from prescription medication. You will learn some tried and true solutions for human factors problems, and some of the many problems in human factors that remain. You will also have gained experience in research in this field.

Course Website: http://www.hcii.cs.cmu.edu
05-417 Computer-mediated Communication
Spring: 6 units
This course examines fundamental aspects of interpersonal communication and considers how different types of computer-mediated communications (CMC) technologies affect communication processes. Among the topics we will consider are: conversational structure and CMC, tools to support nonverbal and paralinguistic aspects of communication such as gesture and eye gaze, and social and cultural dimensions of CMC. Students will be expected to post to weekly discussion lists, to write a paper on a specific aspect of CMC, and to present a talk on their final project to the class. The course should be appropriate for graduate students in all areas and for advanced undergraduates.
05-418 Design Educational Games
Spring: 12 units
The potential of digital games to improve education is enormous. However, it is a significant challenge to create a game that is both fun and educational. In this course, students will learn to meet this challenge by combining processes and principles from game design and instructional design. Students will also learn to evaluate their games for fun, learning, and the integration of the two. They will be guided by the EDGE framework for the analysis and design educational games. The course will involve a significant hands-on portion, in which students learn a design process to create educational games ? digital or non-digital. They will also read about existing educational games and discuss game design, instructional design, learning and transfer, and the educational effectiveness of digital games. They will analyze an educational game and present their analysis to the class.

Course Website: http://www.hcii.cmu.edu/courses/design-educational-games
05-430 Programming Usable Interfaces
Spring: 15 units
This course is combines lecture, and an intensive programming lab and design studio. It is for those who want to express their interactive ideas in working prototypes. It will cover the importance of human-computer interaction/interface design, iterative design, input/output techniques, how to design and evaluate interfaces, and research topics that will impact user interfaces in the future. In lab, you will learn how to design and program effective graphical user interfaces, and how to perform user tests. We will cover a number of prototyping tools and require prototypes to be constructed in each, ranging from animated mock-ups to fully functional programs. Assignments will require implementing UIs, testing that interface with users, and then modifying the interface based on findings. Some class sessions will feature design reviews of student work. This course is for HCII Masters students and HCI dual majors with a minimal programming background. Students will often not be professional programmers, but will need to interact with programmers. RECITATION SELECTION: Students taking this course can sign up for either Prototyping Lab recitation. PREREQUISITES: Proficiency in a programming language, program structure, algorithm analysis, and data abstraction. Normally met through an introductory programming course using C, C++, Pascal or Java, such as 15100, 15112, 15127 or equivalent. Students entering this course should be able to independently write a 300-line program in 48 hours.
Prerequisites: 15-127 or 15-104 or 15-110 or 15-112 or 15-100
05-431 Software Structures for User Interfaces
Fall: 15 units
SSUI (15-credit, combined lecture and lab) This course considers the basic and detailed concepts that go into building software to implement user interfaces. It considers factors of input, output, application interface, and related infrastructure as well as the typical patterns used to implement them. It will also consider how these components are organized and managed within a well-structured object oriented system. After considering these fundamental concepts in the first portion of the class, the later part will consider advanced topics related to emerging future concepts in user interface design. The course includes an intensive programming lab, either on the topic of mobile or web interfaces. This course is intended for HCII Master, BHCI dual majors and others who wish to understand the structures needed for professional development of interactive systems, and has a strong programming background. PREREQUISITES: Comfort in programming and related concepts equivalent to an undergraduate CS degree. Should be proficient in programming, and comfortable with abstract concepts relating to program structure, algorithm analysis, and data abstraction. WAITLIST LOGISTICS: Note that ALL students who register for this class will initially be placed on a waitlist. Your position on the waitlist is not an indication of whether you will be accepted into the class. Contacting the instructor will not move you off the waitlist. Priority for getting off the waitlist are MHCI students, BHCI students (more senior students first), and then others.
05-432 Personalized Online Learning
Fall: 12 units
Online learning has become widespread (e.g., MOOCs, online and blended courses, and Khan Academy) and many claim it will revolutionize higher education and K-12. How can we make sure online learning is maximally effective? Learners differ along many dimensions and they change over time. Therefore, advanced learning technologies must adapt to learners to provide individualized learning experiences. This course covers a number of proven personalization techniques used in advanced learning technologies. One of the techniques is the use of cognitive modeling to personalize practice of complex cognitive skills in intelligent tutoring systems. This approach, developed at CMU, may well be the most significant application of cognitive science in education and is commercially successful. We will also survey newer techniques, such as personalizing based on student meta-cognition, affect, and motivation. Finally, we will look at personalization approaches that are widely believed to be effective but have not proven to be so. The course involves readings and discussion of different ways of personalizing instruction, with an emphasis on cognitive modeling approaches. Students will learn to use the Cognitive Tutor Authoring Tools (CTAT, http://ctat.pact.cs.cmu.edu) to implement tutor prototypes that rely on computer-executable models of human problem solving to personalize instruction. The course is meant for graduate or advanced undergraduate students in Human-Computer Interaction, Psychology, Computer Science, Design, or related fields, who are interested in educational applications. Students should either have some programming skills or experience in the cognitive psychology of human problem solving, or experience with instructional design.

Course Website: http://www.hcii.cmu.edu/courses/personalized-online-learning
05-433 Programming Usable Interfaces OR Software Structures for Usable Interfaces
Fall: 6 units
Section A: Programming Usable Interfaces Section B: Software Structures for Usable Interfaces This is a lecture-only course (see 05-430/05-630 or 05-431/631 for the lecture + lab version of these courses) that is intended for those who want to learn how to design and evaluate user interfaces. We will cover the importance of human-computer interaction and interface design, the iterative design cycle used in HCI, an overview of input and output techniques, how to design and evaluate interaction techniques, and end with a discussion of hot topics in research that will impact user interfaces in the coming years. This course is only intended for HCII Masters students or HCI undergraduate majors who have already taken an associated User Interface lab, or non-MHCI/BHCI students interested in the design of user interfaces. PREREQUISITES: There are no prerequisites for this lecture-only course. WAITLIST LOGISTICS: Note that ALL students who register for this class will initially be placed on a waitlist. Your position on the waitlist is not an indication of whether you will be accepted into the class. Contacting the instructor will not move you off the waitlist. Priority for getting off the waitlist are MHCI students, BHCI students (more senior students first), and then others.
05-434 Machine Learning in Practice
Fall and Spring: 12 units
Machine Learning is concerned with computer programs that enable the behavior of a computer to be learned from examples or experience rather than dictated through rules written by hand. It has practical value in many application areas of computer science such as on-line communities and digital libraries. This class is meant to teach the practical side of machine learning for applications, such as mining newsgroup data or building adaptive user interfaces. The emphasis will be on learning the process of applying machine learning effectively to a variety of problems rather than emphasizing an understanding of the theory behind what makes machine learning work. This course does not assume any prior exposure to machine learning theory or practice. In the first 2/3 of the course, we will cover a wide range of learning algorithms that can be applied to a variety of problems. In particular, we will cover topics such as decision trees, rule based classification, support vector machines, Bayesian networks, and clustering. In the final third of the class, we will go into more depth on one application area, namely the application of machine learning to problems involving text processing, such as information retrieval or text categorization. 05-834 is the HCII graduate section. If you are an LTI student, please sign up for the LTI graduate course number (11-663) ONLY to count properly towards your degree requirements. 05-434 is the HCII undergraduate section. If you are an LTI student, please sign up for the LTI undergraduate course number (11-344) ONLY to count properly towards your degree requirements.

Course Website: http://www.hcii.cmu.edu/courses/applied-machine-learning
05-435 Advanced Fabrication Techniques for HCI
Fall: 12 units
This course will consider how new fabrication techniques such as 3D printing, laser cutting, CNC machining and related computer controlled technologies can be applied to problems in Human-Computer Interaction. Each offering will concentrate on a particular application domain for its projects. This year the course will consider assistive technology. This course will be very hands-on and skills-oriented, with the goal of teaching students the skills necessary to apply these technologies to HCI problems such as rapid prototyping of new device concepts. To this end? Every student in this course will build and take home a 3D printer. (There will be $400-$500 cost associated with this course to make that possible. Details on this are still to be determined.)
05-439 The Big Data Pipeline: Collecting and Using Big Data for Interactive Systems
Spring: 12 units
This course covers techniques and technologies for creating data driven interfaces. You will learn about the entire data pipeline from sensing to cleaning data to different forms of analysis and computation.

Course Website: http://data.cmubi.org
05-440 Interaction Techniques
Intermittent: 12 units
This course will provide a comprehensive study of the many ways to interact with computers and computerized devices. An "interaction technique" starts when the user does something that causes an electronic device to respond, and includes the direct feedback from the device to the user. Examples include physical buttons and switches, on-screen menus and scroll bars operated by a mouse, touch screen widgets and gestures such as flick-to-scroll, text entry on computers or touch screens, consumer electronic controls such as remote controls, game controllers, and adaptations of all of these for people with disabilities. We will start with a history of the invention and development of these techniques, discuss the various options used today, and continue on to the future with the latest research on interaction techniques presented at conferences such as ACM CHI and UIST. Guest lectures from inventors of interaction techniques are planned. Students will have a choice for final projects that can focus on historical or novel interaction techniques. For example, one option will be to create a novel technique, perform a user study of it, and write a paper about the result, which may be suitable for conference submission. Another option will be to investigate and write a paper or make a video about the history and various previous designs for widely used interaction techniques, possibly including an interview with the inventor(s).

Course Website: http://www.cs.cmu.edu/~bam/uicourse/05440inter/
05-452 Service Design
Fall: 12 units
In this course, we will collectively define and study services and product service systems, and learn the basics of designing them. We will do this through lectures, studio projects, and verbal and written exposition. Classwork will be done individually and in teams.
05-499 Special Topics in HCI
Fall and Spring: 12 units
The Special Topics in HCI is an opportunity for students interested in HCI to gain a deeper understanding of a specific area in this field. Each class is designed to cover an emerging research area within HCI, from designing large-scale peer learning systems to creating video games around audience agency. All sections will help students: (1) build a more comprehensive understanding of an area of study within HCI, (2) work closely with faculty and peers to create mini-projects or team assignments that help students master the course material, (3) explore evidence-based research methods and techniques in HCI. Sections will vary in topic and often change from semester to semester. Because of this, students can take multiple sections, as they are individual classes. The Undergraduate section is 499 and the graduate section is 899. For descriptions of specific sections for this academic year, visit the "Courses" section on the Human-Computer Interaction Institute website: http://hcii.cmu.edu/academics/courses
Course Website: http://www.hcii.cmu.edu/academics/courses
05-540 Rapid Prototyping of Computer Systems
Spring: 12 units
This is a project-oriented course, which will deal with all four aspects of project development: the application, the artifact, the computer-aided design environment, and the physical prototyping facilities. The class consists of students from different disciplines who must synthesize and implement a system in a short period of time. Upon completion of this course the student will be able to: generate systems specifications from a perceived need; partition functionality between hardware and software; produce interface specifications for a system composed of numerous subsystems; use computer-aided development tools; fabricate, integrate, and debug a hardware/software system; and evaluate the system in the context of an end user application. The class consists of students from different disciplines who must synthesize and implement a system in a short period of time.

Course Website: http://www.hcii.cmu.edu/courses/rapid-prototyping-computer-systems
05-571 Undergraduate Project in HCI
Spring: 12 units
Experiential learning is a key component of the MHCI program. Through a substantial team project, students apply classroom knowledge in analysis and evaluation, implementation and design, and develop skills working in multidisciplinary teams. Student teams work with Carnegie Mellon University-based clients or external clients to iteratively design, build and test a software application which people directly use.
Prerequisites: 05-610 Min. grade B or 05-630 Min. grade B or 05-631 Min. grade B or 05-431 Min. grade B or 05-430 Min. grade B or 05-410 Min. grade B

Course Website: http://www.hcii.cmu.edu/courses/undergraduate-project-hci
05-589 Independent Study in HCI-UG
All Semesters
In collaboration with and with the permission of the professor, undergraduate students may engage in independent project work on any number of research projects sponsored by faculty. Students must complete an Independent Study Proposal, negotiate the number of units to be earned, complete a contract, and present a tangible deliverable. The Undergraduate Program Advisor's signature is required for HCI undergraduate-level Independent Study courses.
05-600 HCI Pro Seminar
Fall: 6 units
Students will attend weekly HCII Seminar Series of talks given by national leaders in the field of Human-Computer Interaction, attend communication workshops and conflict management workshops. This course is for MHCI students only.

Course Website: http://www.hcii.cs.cmu.edu
05-610 User-Centered Research and Evaluation
Fall: 12 units
This course provides and overview and introduction to the field of human-computer interaction (HCI). It introduces students to tools, techniques, and sources of information about HCI and provides a systematic approach to design. The course increases awareness of good and bad design through observation of existing technology, and teaches the basic skills of task analysis, and analytic and empirical evaluation methods. This is a companion course to courses in visual design (05-650) and software implementation (05-630, 05-631). This course is NOT open to students outside of the MHCI program.

Course Website: http://www.hcii.cs.cmu.edu
05-650 Interaction Design Studio II
Spring: 12 units
This course follows Interaction Design Fundamentals (05-651). Students are expected to apply what they have learned about design thinking and methodologies as a starting point for all assignments. Students will work in teams to perform guerrilla research, synthesize data, and consider the needs of multiple stakeholders in their design of mobile services and other intelligent systems. Design concepts go beyond user interfaces to include sensors, controls, and ubiquitous computing. Emphasis is placed on the quality of the students ideas and their ability to give form to their design concepts. By completing and presenting their work, students will gain skills related to professional UX design practice.
Prerequisites: 05-651 or 51-761 or 51-228 or 51-261 or 51-262 or 51-228 or 51-248 or 51-268
Course Website: http://www.hcii.cmu.edu/courses/interaction-design-studio
05-651 Interaction Design Studio 1
Fall: 12 units
This studio course introduces students to design thinking and the basic practices of interaction design. We follow a human-centered design process that includes research, concept generation, prototyping, and refinement. Students must work effectively as individuals and in small teams to design mobile information systems and other interactive experiences. Assignments approach design on three levels: specific user interactions, contexts of use, and larger systems. Students will become familiar with design methodologies such as sketching, storyboarding, wire framing, prototyping, etc. No coding is required. This course serves as a prerequisite for Interaction Design Studio (05-650).
05-823 E-Learning Design Principles and Methods
Fall: 12 units
This course is about e-learning design principles, the evidence and theory behind them, and how to apply these principles to develop effective educational technologies. It is organized around the book "e-Learning and the Science of Instruction: Proven Guidelines for Consumers and Designers of Multimedia Learning" by Clark & Mayer with further readings drawn from cognitive science, educational psychology, and human-computer interaction. You will learn design principles 1) for combining words, audio, and graphics in multimedia instruction, 2) for combining examples, explanations, practice and feedback in online support for learning by doing, and 3) for balancing learner versus system control and supporting student metacognition. You will read about the experiments that support these design principles, see examples of how to design such experiments, and practice applying the principles in educational technology development.

Course Website: http://www.learnlab.org/research/wiki/index.php/E-learning_Design_Principles_2013#Course_Details
05-840 Tools for Online Learning
Fall: 12 units
In this course, we will explore issues that pertain to interaction and interface design. The class will focus on elements of the larger interaction design process including basic design principles, information architecture and navigation, planning and brainstorming methods, and techniques for developing rapid sketches and prototypes. Course Requirements: This class will not focus on learning specific software tools. Students are expected to have prior experience using a variety of design and programming tools. Please speak with the instructor if you have questions regarding these prerequisites. This course was design for students in the METALS program.

Institute for Software Research Courses

08-200 Ethics and Policy Issues in Computing
Spring: 9 units
In this course, students will study the social impacts of computing technology and systems. The course will provide a brief introduction to ethics and to the new and difficult ethical questions modern computing technology presents us with. It will focus on a number of areas in which computers and information technology are having an impact on society including data privacy, social media, and autonomous technologies.
08-722 Data Structures for Application Programmers
Fall and Spring: 6 units
This course is an introduction to Data Structures and a few fundamental algorithms for students with some prior programming experience (functions, loops and arrays mainly in Java). It covers the conceptual and implementation views of some common data structures and algorithms. It also goes over the Java Collections (such as List, ArrayList, LinkedList, Set, HashSet, TreeSet, Map, HashMap, TreeMap, PriorityQueue) to solidify the understanding of the data structures. There is an introduction to the analysis of algorithms that operate on them. Following learning-by-doing methodology, there will be many repetitions of writing code and reviews of the items covered in lectures. Students are required to be familiar with Java Programming before taking this course. Those who are not are encouraged to take 08-671 in mini 1 before taking this course. Students are required to have a reasonably modern laptop computer on which install the Java software used for this course.

SCS: Language Technologies Institute Courses

11-291 Applied Computational Intelligence Lab
Intermittent: 9 units
What would an "intelligent" picture on the wall do? What if it could see and hear you? What should it say if it could talk? What if your pantry, wardrobe or medicine cabinet could sense, think and act? What should they do and say? What should your cell phone be saying to you? These are not whimsical or theoretical questions...they inevitably arise as ordinary everyday objects around us acquire the ability to sense changes in their environment, think about their implications, and act in pursuit of their goals. These objects are connected to the web and become conduits for services, erasing the distinction between products and services. The ability to invent and build smart products/services is becoming a key skill in the new technology-driven services economy. The focus of the course will be on building "ordinary" objects that can sense, think and act in the real world and on exploring the implications of these capabilities. Students will select their own project and by the end of the semester will create a working prototype that will be exhibited in a public place. Prizes will be offered for the most creative projects. In the course of their projects, students will learn how to use state-of-the-art tools for: Object detection using video cameras, microphones and other sensors Movement and gesture detection Speech recognition and generation Reasoning and planning: While the course organizers have many ideas for specific projects, students will be encouraged to design their own projects. Students are expected to work in small groups on their own time and receive faculty advice as needed. There will be weekly meetings of the whole class.
Prerequisites: 21-127 Min. grade C and 15-122 Min. grade C
11-344 Machine Learning in Practice
Fall: 12 units
Machine Learning is concerned with computer programs that enable the behavior of a computer to be learned from examples or experience rather than dictated through rules written by hand. It has practical value in many application areas of computer science such as on-line communities and digital libraries. This class is meant to teach the practical side of machine learning for applications, such as mining newsgroup data or building adaptive user interfaces. The emphasis will be on learning the process of applying machine learning effectively to a variety of problems rather than emphasizing an understanding of the theory behind what makes machine learning work. This course does not assume any prior exposure to machine learning theory or practice. In the first 2/3 of the course, we will cover a wide range of learning algorithms that can be applied to a variety of problems. In particular, we will cover topics such as decision trees, rule based classification, support vector machines, Bayesian networks, and clustering. In the final third of the class, we will go into more depth on one application area, namely the application of machine learning to problems involving text processing, such as information retrieval or text categorization.
11-364 An Introduction to Knowledge-Based Deep Learning and Socratic Coaches
Spring: 12 units
The subject of this course will be deep learning, one of the most dynamic and exciting emerging areas of computer science. Deep learning deals with and is conquering the problems resulting from the enormous quantity of data that now surrounds us. Furthermore, the course will explore knowledge-based deep learning, a new methodology invented by the instructor that offers many potential advantages over conventional deep learning. This is a learn-by-doing, team-project based course, which will be divided into four phases. In phase one, each student will read and present a number of papers describing state-of-the-art deep learning systems and successful applications. In phase two, each team will implement the system described in one of the papers. In phase three, each team will scale that implementation to one of the large benchmark datasets. In phase four, each team will do a special research project implementing a knowledge-based deep learning system based on pending patent applications of Professor Baker. As a potential follow-on for successful projects, students may participate in a summer course on entrepreneurial applications of deep learning or work as interns in a bootstrap startup based on the knowledge-based deep learning projects. Prerequisite: Strong quantitative aptitude, programming skill, ability to quickly absorb new ideas, teamwork skills.
11-411 Natural Language Processing
Intermittent: 12 units
This course will introduce students to the highly interdisciplinary area of Artificial Intelligence known alternately as Natural Language Processing (NLP) and Computational Linguistics. The course aims to cover the techniques used today in software that does useful things with text in human languages like English and Chinese. Applications of NLP include automatic translation between languages, extraction and summarization of information in documents, question answering and dialog systems, and conversational agents. This course will focus on core representations and algorithms, with some time spent on real-world applications. Because modern NLP relies so heavily on Machine Learning, we'll cover the basics of discrete classification and probabilistic modeling as we go. Good computational linguists also know about Linguistics, so topics in linguistics (phonology, morphology, and syntax) will be covered when fitting. From a software engineering perspective, there will be an emphasis on rapid prototyping, a useful skill in many other areas of Computer Science. In particular, we will introduce some high-level languages (e.g., regular expressions and Dyna) and some scripting languages (e.g., Python and Perl) that can greatly simplify prototype implementation.
Prerequisite: 15-122
11-421 GRAMMARS & LEXICONS
Fall: 12 units
Grammars and Lexicons is an introductory graduate course on linguistic data analysis and theory, focusing on methodologies that are suitable for computational implementations. The course covers major syntactic and morphological phenomena in a variety of languages. The emphasis will be on examining both the diversity of linguistic structures and the constraints on variation across languages. Students will be expected to develop and defend analyses of data, capturing linguistic generalizations and making correct predictions within and across languages. The goal is for students to become familiar with the range of phenomena that occur in human languages so that they can generalize the insights into the design of computational systems. The theoretical framework for syntactic and lexical analysis will be Lexical Functional Grammar. Grades will be based on problem sets and take-home exams.
11-423 ConLanging: Lrng. Ling. & Lang Tech via Constru Artif. Lang.
Spring: 12 units
Students will work individually or in small groups to create artificial human(oid) languages for fictional human cultures or SciFi worlds. Students will implement language technologies for their languages. In the course of creating the languages, students will learn about the building blocks of human language such as phones, phonemes, morphemes, and morpho-syntactic constructions including their semantics and pragmatics. Class instruction will focus specifically on variation among human languages so that the students can make conlangs that are not just naively English-like. We will also touch on philosophical issues in philosophy of language and on real-world socio-political issues related to language policy. Students will be required to use at least one of the following technologies: language documentation tools that are used for field linguistics and corpus annotation, automatic speech recognition, speech synthesis, morphological analysis, parsing, or machine translation. Learning Objectives: 1. The building blocks (phonemes, morphemes, etc.) of language, how languages are built from them, and how they interact 2. Metalinguistic awareness and knowledge about variation in human language 3. Language, thought, and culture: how does language reflect thought and culture, and vice versa. Why wouldn't Elvish be a good language for Klingons? 4. Language policy in the real world: For students who want to manipulate real languages. 5. Historical linguistics and language change: for students who want to manipulate real languages or make families of related conlangs for fictional worlds. 6. Practical experience with a language technology. http://tts.speech.cs.cmu.edu/11-823/
Course Website: http://> http://tts.speech.cs.cmu.edu/11-823
11-441 Machine Learning for Text Mining
Fall and Spring: 9 units
This 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.
11-442 Search Engines
Fall: 9 units
This 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.

Course Website: http://boston.lti.cs.cmu.edu/classes/11-642/
11-485 Introduction to Deep Learning
Intermittent: 9 units
Neural 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.
Prerequisites: 15-112 and 21-120 and 21-241
11-492 Speech Processing
Fall: 12 units
Speech 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, build their own synthetic voice and build a complete telephone spoken dialog system. 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.
Prerequisite: 15-211 Min. grade B
11-630 MCDS Practicum Internship
Fall
The MCDS Practicum course is used for recording CDS students summer internships for the MCDS Program. Section A is used for 7-month internship opportunities Section B is used for Returning Fall Analytic students who DO NOT attain a 7-mo Internships. Section R is used to record MCDS students Internship Requirements
11-661 Language and Statistics
Fall: 12 units
Language technologies (search, text mining, information retrieval, speech recognition, machine translation, question answering, biological sequence analysis...) are at the forefront of this century's information revolution. In addition to their use of machine learning, these technologies rely centrally on classic statistical estimation techniques. Yet most CS and engineering undergraduate programs do not prepare students in this area beyond an introductory prob&stats course. This course is designed to plug this hole. The goal of "Language and Statistics" is to ground the data-driven techniques used in language technologies in sound statistical methodology. We start by formulating various language technology problems in both an information theoretic framework (the source-channel paradigm) and a Bayesian framework (the Bayes classifier). We then discuss the statistical properties of words, sentences, documents and whole languages, and the computational formalisms used to represent language. These discussions naturally lead to specific concepts in statistical estimation. Topics include: Zipf's distribution and type-token curves; point estimators, Maximum Likelihood estimation, bias and variance, sparseness, smoothing and clustering; interpolation, shrinkage, and backoff; entropy, cross entropy and mutual information; decision tree models applied to language; latent variable models and the EM algorithm; hidden Markov models; exponential models and maximum entropy; semantic modeling and dimensionality reduction; probabilistic context-free grammars and syntactic language models. The course is designed for LTI & SCS graduate students, but others are welcome. CS UG upperclassmen who've taken it have done well, though they found it challenging. The 11-661 version does not require the course project. Prerequisites: Strong quantitative aptitude. Comfort with basic UG-level probability. Some programming skill.

Course Website: http://www.cs.cmu.edu/~roni/11661/
11-696 MIIS Capstone Planning Seminar
Spring: 6 units
The MIIS Capstone Planning Seminar prepares students to complete the MIIS Capstone Project in the following semester. Students are organized into teams that will work together to complete the capstone project. They define project goals, requirements, success metrics, and deliverables; and they identify and acquires data, software, and other resources required for successful completion of the project. The planning seminar must be completed in the semester prior to taking the capstone project.
11-711 Algorithms for NLP
All Semesters: 12 units
Algorithms for NLP is an introductory graduate-level course on the computational properties of natural languages and the fundamental algorithms for processing natural languages. The course will provide an in-depth presentation of the major algorithms used in NLP, including Lexical, Morphological, Syntactic and Semantic analysis, with the primary focus on parsing algorithms and their analysis.
11-716 Graduate Seminar on Dialog Processing
All Semesters: 6 units
Dialog systems and processes are becoming an increasingly vital area of interest both in research and in practical applications. The purpose of this course will be to examine, in a structured way, the literature in this area as well as learn about ongoing work. The course will cover traditional approaches to the problem, as exemplified by the work of Grosz and Sidner, as well as more recent work in dialog, discourse and evaluation, including statistical approaches to problems in the field. We will select several papers on a particular topic to read each week. While everyone will do all readings, a presenter will be assigned to overview the paper and lead the discussion. On occasion, a researcher may be invited to present their own work in detail and discuss it with the group. A student or researcher taking part in the seminar will come away with a solid knowledge of classic work on dialog, as well as familiarity with ongoing trends.
11-721 Grammars and Lexicons
All Semesters: 12 units
Grammars and Lexicons is an introductory graduate course on linguistic data analysis and theory, focusing on methodologies that are suitable for computational implementations. The course covers major syntactic and morphological phenomena in a variety of languages. The emphasis will be on examining both the diversity of linguistic structures and the constraints on variation across languages. Students will be expected to develop and defend analyses of data, capturing linguistic generalizations and making correct predictions within and across languages. The goal is for students to become familiar with the range of phenomena that occur in human languages so that they can generalize the insights into the design of computational systems. The theoretical framework for syntactic and lexical analysis will be Lexical Functional Grammar. Grades will be based on problem sets and take-home exams.
11-722 Grammar Formalisms
Intermittent: 12 units
The goal of this course is to familiarize students with grammar formalisms that are commonly used for research in computational lingusitics, language technologies, and lingusitics. We hope to have students from a variety disciplines (linguistics, computer science, psychology, modern languages, philosophy) in order to cover a broad perspective in class discussions. Comparison of formalisms will lead to a deeper understanding of human language and natural language processing algorithms. The formalisms will include: Head Driven Phrase Structure Grammar, Lexical Functional Grammar, Tree Adjoining Grammar and Categorial Grammar. If time permits, we will cover Penn Treebank, dependency grammar, and Construction Grammar. We will cover the treatment of basic syntactic and semantic phenomena in each formalism, and will also discuss algorithms for parsing and generating sentences for each formalism. If time permits, we may discuss formal language theory and generative capacity. The course is taught jointly by the following faculty of the Language Technologies Institute: Alan Black Alon Lavie Lori Levin (main coordinator)
11-731 Machine Translation and Sequence-to-Sequence Models
Spring: 12 units
Instructors: Graham Neubig. Prerequisites: This course has no official pre-requisites, although 11-711 "Algorithms for NLP" or 10-701 "Machine Learning" would be helpful. Course Description: Machine Translation and Sequence-to-Sequence Models is an introductory graduate-level course surveying the primary approaches and methods for developing systems to translate between human languages, or other sequential data. The main objective of the course is to obtain basic understanding and implementation skills for modern methods for MT and sequence transduction, including how to design models, how to learn the model parameters, how to search for the best output, and how to create training data. The course will focus on machine translation, but also briefly cover tasks such as dialog response generation, image caption generation, and others.
11-741 Machine Learning for Text Mining
Fall and Spring: 12 units
This course studies the theory, design, and implementation of text-based information systems. The Information Retrieval core components of the course include statistical characteristics of text, representation of information needs and documents, several important retrieval models (Boolean, vector space, probabilistic, inference net, language modeling), clustering algorithms, automatic text categorization, and experimental evaluation. The software architecture components include design and implementation of high-capacity text retrieval and text filtering systems. A variety of current research topics are also covered, including cross-lingual retrieval, document summarization, machine learning, topic detection and tracking, and multi-media retrieval. Prerequisites: Programming and data-structures at the level of 15-212 or higher. Algorithms comparable to the undergraduate CS algorithms course (15-451) or higher. Basic linear algebra (21-241 or 21-341). Basic statistics (36-202) or higher.
11-751 Speech Recognition and Understanding
All Semesters: 12 units
The technology to allow humans to communicate by speech with machines or by which machines can understand when humans communicate with each other is rapidly maturing. This course provides an introduction to the theoretical tools as well as the experimental practice that has made the field what it is today. We will cover theoretical foundations, essential algorithms, major approaches, experimental strategies and current state-of-the-art systems and will introduce the participants to ongoing work in representation, algorithms and interface design. This course is suitable for graduate students with some background in computer science and electrical engineering, as well as for advanced undergraduates. Prerequisites: Sound mathematical background, knowledge of basic statistics, good computing skills. No prior experience with speech recognition is necessary. This course is primarily for graduate students in LTI, CS, Robotics, ECE, Psychology, or Computational Linguistics. Others by prior permission of instructor.
11-752 Speech II: Phonetics, Prosody, Perception and Synthesis
Spring: 12 units
The goal of the course is to give the student basic knowledge from several fields that is necessary in order to pursue research in automatic speech processing. The course will begin with a study of the acoustic content of the speech signal. The students will use the spectrographic display to examine the signal and discover its variable properties. Phones in increasingly larger contexts will be studied with the goal of understanding coarticulation. Phonological rules will be studied as a contextual aid in understanding the spectrographic display. The spectrogram will then serve as a first introduction to the basic elements of prosody. Other displays will then be used to study the three parts of prosody: amplitude, duration, and pitch. Building on these three elements, the student will then examine how the three interact in careful and spontaneous speech. Next, the students will explore perception. Topics covered will be: physical aspects of perception, psychological aspects of perception, testing perception processes, practical applications of knowledge about perception. The second part of this course will cover all aspects of speech synthesis. Students need only have a basic knoweldge of speech and language processing. Some degree of programming and statistical modelling will be beneficial, but not required. Taught every other year
11-755 Machine Learning for Signal Processing
Fall: 12 units
Signal Processing is the science that deals with extraction of information from signals of various kinds. This has two distinct aspects — characterization and categorization. Traditionally, signal characterization has been performed with mathematically-driven transforms, while categorization and classification are achieved using statistical tools. Machine learning aims to design algorithms that learn about the state of the world directly from data. A increasingly popular trend has been to develop and apply machine learning techniques to both aspects of signal processing, often blurring the distinction between the two. This course discusses the use of machine learning techniques to process signals. We cover a variety of topics, from data driven approaches for characterization of signals such as audio including speech, images and video, and machine learning methods for a variety of speech and image processing problems.
11-761 Language and Statistics
Fall: 12 units
Language technologies (search, text mining, information retrieval, speech recognition, machine translation, question answering, biological sequence analysis...) are at the forefront of this century's information revolution. In addition to their use of machine learning, these technologies rely centrally on classic statistical estimation techniques. Yet most CS and engineering undergraduate programs do not prepare students in this area beyond an introductory prob&stats course. This course is designed to plug this hole. The goal of "Language and Statistics" is to ground the data-driven techniques used in language technologies in sound statistical methodology. We start by formulating various language technology problems in both an information theoretic framework (the source-channel paradigm) and a Bayesian framework (the Bayes classifier). We then discuss the statistical properties of words, sentences, documents and whole languages, and the computational formalisms used to represent language. These discussions naturally lead to specific concepts in statistical estimation. Topics include: Zipf's distribution and type-token curves; point estimators, Maximum Likelihood estimation, bias and variance, sparseness, smoothing and clustering; interpolation, shrinkage, and backoff; entropy, cross entropy and mutual information; decision tree models applied to language; latent variable models and the EM algorithm; hidden Markov models; exponential models and maximum entropy; semantic modeling and dimensionality reduction; probabilistic context-free grammars and syntactic language models. The course is designed for LTI & SCS graduate students, but others are welcome. CS UG upperclassmen who've taken it have done well, though they found it challenging. The 11-661 version does not require the course project. Prerequisites: Strong quantitative aptitude. Comfort with basic UG-level probability. Some programming skill.

Course Website: http://www.cs.cmu.edu/~roni/11761/
11-762 Language and Statistics II
Fall: 12 units
This course will cover modern empirical methods in natural language processing. It is designed for language technologies students who want to understand statistical methodology in the language domain, and for machine learning students who want to know about current problems and solutions in text processing. Students will, upon completion, understand how statistical modeling and learning can be applied to text, be able to develop and apply new statistical models for problems in their own research, and be able to critically read papers from the major related conferences (EMNLP and ACL). A recurring theme will be the tradeoffs between computational cost, mathematical elegance, and applicability to real problems. The course will be organized around methods, with concrete tasks introduced throughout. The course is designed for SCS graduate students. Prerequisite: Language and Statistics (11-761) or permission of the instructor. Recommended: Algorithms for Natural Language Processing (11-711), Machine Learning (15-681, 15-781, or 11-746).
Prerequisite: 11-761
11-763 Structured Prediction for Language and other Discrete Data
Fall: 12 units
This course seeks to cover statistical modeling techniques for discrete, structured data such as text. It brings together content previously covered in Language and Statistics 2 (11-762) and Information Extraction (10-707 and 11-748), and aims to define a canonical set of models and techniques applicable to problems in natural language processing, information extraction, and other application areas. Upon completion, students will have a broad understanding of machine learning techniques for structured outputs, will be able to develop appropriate algorithms for use in new research, and will be able to critically read related literature. The course is organized around methods, with example tasks introduced throughout.

Course Website: http://www.cs.cmu.edu/~nasmith/SPFLODD/
11-777 Advanced Multimodal Machine Learning
Spring: 12 units
Multimodal machine learning (MMML) is a vibrant multi-disciplinary research field which addresses some of the original goals of artificial intelligence by integrating and modeling multiple communicative modalities, including linguistic, acoustic and visual messages. With the initial research on audio-visual speech recognition and more recently with language & vision projects such as image and video captioning, this research field brings some unique challenges for multimodal researchers given the heterogeneity of the data and the contingency often found between modalities. This course will teach fundamental mathematical concepts related to MMML including multimodal alignment and fusion, heterogeneous representation learning and multi-stream temporal modeling. We will also review recent papers describing state-of-the-art probabilistic models and computational algorithms for MMML and discuss the current and upcoming challenges. The main technical topics are: (1) multimodal representation learning, including multimodal auto-encoder and deep learning, (2) multimodal component analysis and fusion, including deep canonical correlation analysis and multi-kernel learning, (3) multimodal alignment and multi-stream modeling, including multi-instance learning and multimodal recurrent neural networks, and (4) multi-sensory computational modeling, including nonparametric Bayesian networks and multimodal hierarchical Dirichlet processes. The course will also discuss many of the recent applications of MMML including multimodal affect recognition, image and video captioning and cross-modal multimedia retrieval.

Course Website: https://piazza.com/cmu/fall2018/11777/home
11-792 Intelligent Information Systems Project
Spring: 12 units
The Software Engineering for IS sequence combines classroom material and assignments in the fundamentals of software engineering (11-791) with a self-paced, faculty-supervised directed project (11-792). The two courses cover all elements of project design, implementation, evaluation, and documentation. Students may elect to take only 11-791; however, if both parts are taken, they should be taken in proper sequence. Prerequisite: 11-791. The course is required for VLIS students.
Prerequisites: 11-791 or 15-393
11-927 MIIS Capstone Project
Fall: 36 units
The capstone project course is a group-oriented demonstration of student skill in one or more areas covered by the degree. Typically the result of the capstone project is a major software application. The capstone project course consists of two components. The classroom component guides students in project planning, team management, development of requirements and design specifications, and software tools for managing group-oriented projects. The lab component provides project-specific technical guidance and expertise, for example in the development of a question answering system, dialog, or sentiment analysis application. Thus, each project receives two types of supervision, often from two separate members of the faculty.

SCS: Machine Learning Courses

10-401 Introduction to Machine Learning (Undergrad)
Fall and Spring: 12 units
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. Topics. 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.
Prerequisites: 15-122 Min. grade C and (15-151 Min. grade C or 21-128 Min. grade C or 21-127 Min. grade C) and (36-217 Min. grade C or 36-225 Min. grade C or 15-359 Min. grade C or 21-325 Min. grade C or 36-218 Min. grade C)
10-403 Deep Reinforcement Learning & Control
Spring: 12 units
TBD
10-405 Machine Learning with Large Datasets (Undergraduate)
Intermittent: 12 units
Large datasets are difficult to work with for several reasons. They are difficult to visualize, and it is difficult to understand what sort of errors and biases are present in them. They are computationally expensive to process, and often the cost of learning is hard to predict - for instance, and algorithm that runs quickly in a dataset that fits in memory may be exorbitantly expensive when the dataset is too large for memory. Large datasets may also display qualitatively different behavior in terms of which learning methods produce the most accurate predictions. This course is intended to provide a student practical knowledge of, and experience with, the issues involving large datasets. Among the issues considered are: scalable learning techniques, such as streaming machine learning techniques; parallel infrastructures such as map-reduce; practical techniques for reducing the memory requirements for learning methods, such as feature hashing and Bloom filters; and techniques for analysis of programs in terms of memory, disk usage, and (for parallel methods) communication complexity. The class will include programming assignments, and a one-month short project chosen by the student. The project will be designed to compare the scalability of variant learning algorithms on datasets. An introductory course in machine learning, like 10-401, 10-601, or 10-701, is a prerequisite or a co-requisite. If you plan to take this course and the introductory machine learning course concurrently please tell the instructor. The course will include several substantial programming assignments, so an additional prerequisite is 15-211, or 15-214, or comparable familiarity with Java and good programming skills.
Prerequisites: 15-211 or 15-214 or 15-210
10-500 Senior Research Project
All Semesters
Register for this course if you are minoring in Machine Learning. This course is intended for research with a faculty member that would count towards the minor.
10-600 Mathematical background for Machine Learning
Fall and Spring: 12 units
This course provides a place for students to practice the necessary mathematical background for further study in machine learning — particularly for taking 10-601 and 10-701. Topics covered include probability, linear algebra (inner product spaces, linear operators), multivariate differential calculus, optimization, and likelihood functions. The course assumes some background in each of the above, but will review and give practice in each. (It does not provide from-scratch coverage of all of the above, which would be impossible in a course of this length.) Some coding will be required: the course will provide practice with translating the above mathematical concepts into concrete programs. This course supersedes the two mini-courses 10-606 and 10-607.
10-601 Introduction to Machine Learning (Masters)
Fall and Spring: 12 units
Machine Learning (ML) develops computer programs that automatically improve their performance through experience. This includes learning many types of tasks based on many types of experience, e.g. spotting high-risk medical patients, recognizing speech, classifying text documents, detecting credit card fraud, or driving autonomous vehicles. 10601 covers all or most of: concept learning, decision trees, neural networks, linear learning, active learning, estimation & the bias-variance tradeoff, hypothesis testing, Bayesian learning, the MDL principle, the Gibbs classifier, Naive Bayes, Bayes Nets & Graphical Models, the EM algorithm, Hidden Markov Models, K-Nearest-Neighbors and nonparametric learning, reinforcement learning, bagging, boosting and discriminative training. Grading will be based on weekly or biweekly assignments (written and/or programming), a midterm, a final exam. 10601 is recommended for CS Seniors & Juniors, quantitative Masters students, & non-MLD PhD students. Prerequisites (strictly enforced): strong quantitative aptitude, college probability & statistics course, and programming proficiency. For learning to apply ML practically & effectively, without the above prerequisites, consider 11344/05834 instead. You can evaluate your ability to take the course via a self-assessment exam (http://bit.ly/2fkddDN). Also, be sure to read the ML course comparison (http://bit.ly/2eV3UaD).
Prerequisites: 15-122 Min. grade C and (21-127 Min. grade C or 21-128 Min. grade C or 15-151 Min. grade C) and (15-359 Min. grade C or 36-225 Min. grade C or 36-217 Min. grade C or 21-325 Min. grade C)
10-605 Machine Learning with Large Datasets
Spring: 12 units
Large datasets are difficult to work with for several reasons. They are difficult to visualize, and it is difficult to understand what sort of errors and biases are present in them. They are computationally expensive to process, and often the cost of learning is hard to predict - for instance, and algorithm that runs quickly in a dataset that fits in memory may be exorbitantly expensive when the dataset is too large for memory. Large datasets may also display qualitatively different behavior in terms of which learning methods produce the most accurate predictions. This course is intended to provide a student practical knowledge of, and experience with, the issues involving large datasets. Among the issues considered are: scalable learning techniques, such as streaming machine learning techniques; parallel infrastructures such as map-reduce; practical techniques for reducing the memory requirements for learning methods, such as feature hashing and Bloom filters; and techniques for analysis of programs in terms of memory, disk usage, and (for parallel methods) communication complexity. The class will include programming assignments, and a one-month short project chosen by the student. The project will be designed to compare the scalability of variant learning algorithms on datasets. An introductory course in machine learning, like 10-601 or 10-701, is a prerequisite or a co-requisite. If you plan to take this course and 10-601 concurrently please tell the instructor. The course will include several substantial programming assignments, so an additional prerequisite is 15-211, or 15-214, or comparable familiarity with Java and good programming skills.
Prerequisites: 15-210 or 15-214
Course Website: http://goo.gl/W2kPqO
10-606 Mathematical Foundations for Machine Learning
Fall and Spring: 6 units
This course provides a place for students to practice the necessary mathematical background for further study in machine learning. Topics covered include probability (random variables, modeling with continuous and discrete distributions), linear algebra (inner product spaces, linear operators), and multivariate differential calculus (partial derivatives, matrix differentials). The course assumes some background in each of the above, but will review and give practice in each. (It does not provide from-scratch coverage of all of the above, which would be impossible in a course of this length.) Some coding will be required: the course will provide practice with translating the above mathematical concepts into concrete programs. This course is one of two minis intended to prepare students for further study in machine learning — particularly for taking 10-601 and 10-701. One of the courses 10-606 focuses on mathematical background, and the other course 10-607 focuses on computational background. Most students take both mini courses, but this is not required. 10-606 is not a prerequisite of 10-607.
10-607 Computational Foundations for Machine Learning
Fall and Spring: 6 units
This course provides a place for students to practice the necessary computational background for further study in machine learning. Topics covered include computational complexity, analysis of algorithms, proof techniques, optimization, dynamic programming, recursion, and data structures. The course assumes some background in each of the above, but will review and give practice in each. (It does not provide from-scratch coverage of all of the above, which would be impossible in a course of this length.) Some coding will be required: the course will provide practice with translating the above computational concepts into concrete programs. This course is one of two minis intended to prepare students for further study in machine learning — particularly for taking 10-601 and 10-701. One of the courses 10-606 focuses on mathematical background, and the other course 10-607 focuses on computational background. Most students take both mini courses, but this is not required. 10-606 is not a prerequisite of 10-607.
10-608 Conversational Machine Learning
Intermittent: 12 units
Machine Learning today is largely about finding patterns in large amounts of data. But as personal devices that interact with us in natural language become ubiquitous (e.g., Siri, Google Now), they open an amazing possibility of letting users teach machines in natural language, similar to how we teach each other. Conversation, as an interface to machine learning systems, opens a new paradigm that both unifies several existing machine learning paradigms (e.g., active learning, supervised learning), but also brings a unique set of advantages and challenges that lie at the intersection of machine learning and natural language processing. This course will be structured as a well-defined mini-challenge (project) course. We will present you with several well-defined open problems and provide you with recently collected datasets that can get you started immediately! But you will be free to define your own problem using that data as well, or come up with your own problem entirely. There are no other constraints, and since this is a new area of research, you can (and should) be creative and as crazy in coming up with methods to tackle them. At the same time, we will provide guidance via readings and class-based hacking sessions. This course is a great way to get introduced to open problems in a collaborative and structured environment. Challenges Building a classifier with zero examples. Telling sequence to sequence models about their mistakes Letting machine learning models ask questions
Prerequisites: 10-701 Min. grade C or 10-601 Min. grade C or 10-401 Min. grade C or 10-715 Min. grade C
10-701 Introduction to Machine Learning (PhD)
Fall and Spring: 12 units
Machine learning studies the question "How can we build computer programs that automatically improve their performance through experience?" This includes learning to perform many types of tasks based on many types of experience. For example, it includes robots learning to better navigate based on experience gained by roaming their environments, medical decision aids that learn to predict which therapies work best for which diseases based on data mining of historical health records, and speech recognition systems that learn to better understand your speech based on experience listening to you. This course is designed to give PhD students a thorough grounding in the methods, mathematics and algorithms needed to do research and applications in machine learning. Students entering the class with a pre-existing working knowledge of probability, statistics and algorithms will be at an advantage, but the class has been designed so that anyone with a strong numerate background can catch up and fully participate. You can evaluate your ability to take the course via a self-assessment exam that will be made available to you after you register. If you are interested in this topic, but are not a PhD student, or are a PhD student not specializing in machine learning, you might consider the master's level course on Machine Learning, 10-601." This class may be appropriate for MS and undergrad students who are interested in the theory and algorithms behind ML. You can evaluate your ability to take the course via a self-assessment exam at: https://qna-app.appspot.com/view.html?aglzfnFuYS1hcHByGQsSDFF1ZXN0aW9uTGlzdBiAgICgpO-KCgw ML course comparison: https://docs.google.com/document/d/1Y0Jx_tcINWQrWJx31WGEQSsUs059OUMmPIVSeyxNdeM/edit
Prerequisites: 15-122 Min. grade C and (21-128 Min. grade C or 15-151 Min. grade C or 21-127 Min. grade C) and (36-217 Min. grade C or 15-359 Min. grade C or 36-225 Min. grade C or 21-325 Min. grade C)
10-702 Statistical Machine Learning
Spring: 12 units
Statistical Machine Learning is a second graduate level course in advanced machine learning, assuming that students have taken Machine Learning (10-701) or Advanced Machine Learning (10-715), and Intermediate Statistics (36-705). The term ?statistical? in the title reflects the emphasis on statistical theory and methodology. This course is mostly focused on methodology and theoretical foundations. It treats both the ?art? of designing good learning algorithms and the ?science? of analyzing an algorithm?s statistical properties and performance guarantees. Theorems are presented together with practical aspects of methodology and intuition to help students develop tools for selecting appropriate methods and approaches to problems in their own research. Though computation is certainly a critical component of what makes a method successful, it will not receive the same central focus as methodology and theory. We will cover topics in statistical theory that are important for researchers in machine learning, including consistency, minimax estimation, and concentration of measure. We will also cover statistical topics that may not be covered in as much depth in other machine learning courses, such as nonparametric density estimation, nonparametric regression, and Bayesian estimation.
Prerequisites: (36-705 or 10-705) and (10-701 or 10-715)

Course Website: http://www.stat.cmu.edu/~larry/=sml/
10-703 Deep Reinforcement Learning & Control
Spring: 12 units
This course will cover latest advances in Reinforcement Learning and Control, such as, deep Q learning, actor-critic methods, learning and planning, concurrent trajectory optimization and policy learning, inverse reinforcement learning, hierarchical reinforcement learning methods, forward predictive models, deep model predictive control, exploration strategies, adaptive control, applications to deep robotic learning. By the end of the course you should be able to: 1) code up a suitable reinforcement learning method in simulation or on robotic platform for a task 2) identify what are easy and hard problems in RL and learning for robotics The course will have a final project which will involve design of a reinforcement learning method in simulation or robotic platform. The homeworks will be in OpenAI gym. Pre-requisites: Students should have a basic background in algorithms, linear algebra, machine Learning, deep learning.
Prerequisites: 10-701 Min. grade B or 10-601 Min. grade B or 10-715 Min. grade B
10-707 Topics in Deep Learning
Fall: 12 units
Building intelligent machines that are capable of extracting meaningful representations from high-dimensional data lies at the core of solving many AI related tasks. In the past few years, researchers across many different communities, from applied statistics to engineering, computer science and neuroscience, have developed deep (hierarchical) models — 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. This is an advanced graduate course, designed for Master's and Ph.D. level students, and will assume a reasonable degree of mathematical maturity. The goal of this course is to introduce students to the recent and exciting developments of various deep learning methods. Some topics to be covered include: restricted Boltzmann machines (RBMs) and their multi-layer extensions Deep Belief Networks and Deep Boltzmann machines; sparse coding, autoencoders, variational autoencoders, convolutional neural networks, recurrent neural networks, generative adversarial networks, and attention-based models with applications in vision, NLP, and multimodal learning. We will also address mathematical issues, focusing on efficient large-scale optimization methods for inference and learning, as well as training density models with intractable partition functions. Prerequisite: ML: 10-701 or 10-715, and strong programming skills.
Prerequisites: 10-715 Min. grade C or 10-601 Min. grade C or 10-401 Min. grade C or 10-701 Min. grade C
10-715 Advanced Introduction to Machine Learning
Fall: 12 units
The rapid improvement of sensory techniques and processor speed, and the availability of inexpensive massive digital storage, have led to a growing demand for systems that can automatically comprehend and mine massive and complex data from diverse sources. Machine Learning is becoming the primary mechanism by which information is extracted from Big Data, and a primary pillar that Artificial Intelligence is built upon. This course is designed for Ph.D. students whose primary field of study is machine learning, or who intend to make machine learning methodological research a main focus of their thesis. It will give students a thorough grounding in the algorithms, mathematics, theories, and insights needed to do in-depth research and applications in machine learning. The topics of this course will in part parallel those covered in the general graduate machine learning course (10-701), but with a greater emphasis on depth in theory and algorithms. The course will also include additional advanced topics such as privacy in machine learning, interactive learning, reinforcement learning, online learning, Bayesian nonparametrics, and additional material on graphical models. Students entering the class are expected to have a pre-existing strong working knowledge of algorithms, linear algebra, probability, and statistics. If you are interested in this topic, but do not have the required background or are not planning to work on a PhD thesis with machine learning as the main focus, you might consider the general graduate Machine Learning course (10-701) or the Masters-level Machine Learning course (10-601). ML course comparison: https://goo.gl/mmR2eL

Course Website: https://sites.google.com/site/107152016f/
10-805 Machine Learning with Large Datasets
Spring: 12 units
Large datasets are difficult to work with for several reasons. They are difficult to visualize, and it is difficult to understand what sort of errors and biases are present in them. They are computationally expensive to process, and often the cost of learning is hard to predict - for instance, and algorithm that runs quickly in a dataset that fits in memory may be exorbitantly expensive when the dataset is too large for memory. Large datasets may also display qualitatively different behavior in terms of which learning methods produce the most accurate predictions. This course is intended to provide a student practical knowledge of, and experience with, the issues involving large datasets. Among the issues considered are: scalable learning techniques, such as streaming machine learning techniques; parallel infrastructures such as map-reduce; practical techniques for reducing the memory requirements for learning methods, such as feature hashing and Bloom filters; and techniques for analysis of programs in terms of memory, disk usage, and (for parallel methods) communication complexity. An introductory course in machine learning, like 10-601 or 10-701, is a prerequisite or a co-requisite. The class will include programming assignments, presentation of relevant research papers to the class, and a research project chosen by the student, to be presented to the class, and written up in a conference-paper format. 10-805 will share lectures with 10-605, but 10-805 students need to make class presentations and complete a research project, and will do fewer programming assignments, so 10-805 students are expected to be capable of surveying recent literature and conducting research. Four lecture sessions for 10-605 will also be reserved for 10-805 students' presentations. If there is sufficient interest we will introduce a mechanism for 10-605 students to collaborate of 10-805 students on projects.
Prerequisites: 15-214 or 15-210
Course Website: http://goo.gl/W2kPqO
10-806 Foundations of Machine Learning and Data Science
Fall: 12 units
This course will cover fundamental topics in Machine Learning and Data Science, including powerful algorithms with provable guarantees for making sense of and generalizing from large amounts of data. The course will start by providing a basic arsenal of useful statistical and computational tools, including generalization guarantees, core algorithmic methods, and fundamental analysis models. We will examine questions such as: Under what conditions can we hope to meaningfully generalize from limited data? How can we best combine different kinds of information such as labeled and unlabeled data, leverage multiple related learning tasks, or leverage multiple types of features? What can we prove about methods for summarizing and making sense of massive datasets, especially under limited memory? We will also examine other important constraints and resources in data science including privacy, communication, and taking advantage of limited interaction. In addressing these and related questions we will make connections to statistics, algorithms, linear algebra, complexity theory, information theory, optimization, game theory, and empirical machine learning research. Topics to be covered will include: - Fundamental measures of complexity for generalization, including VC-dimension and Rademacher complexity. - Core algorithmic tools including boosting, regularization, and online optimization with connections to game theory. - Spectral methods, streaming algorithms and other approaches for handling massive data. - Foundations and algorithms for addressing important constraints or externalities such as privacy, limited memory, and communication constraints. - Foundations for modern learning paradigms including semi-supervised learning, never-ending learning, interactive learning, and deep learning.

Course Website: http://www.cs.cmu.edu/~ninamf/courses/806/10-806-index.html
10-807 Topics in Deep Learning
Fall: 12 units
Building intelligent machines that are capable of extracting meaningful representations from high-dimensional data lies at the core of solving many AI related tasks. In the past few years, researchers across many different communities, from applied statistics to engineering, computer science and neuroscience, have developed deep (hierarchical) models — 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. This is an advanced graduate course, designed for Master's and Ph.D. level students, and will assume a reasonable degree of mathematical maturity. The goal of this course is to introduce students to the recent and exciting developments of various deep learning methods. Some topics to be covered include: restricted Boltzmann machines (RBMs) and their multi-layer extensions Deep Belief Networks and Deep Boltzmann machines; sparse coding, autoencoders, variational autoencoders, convolutional neural networks, recurrent neural networks, generative adversarial networks, and attention-based models with applications in vision, NLP, and multimodal learning. We will also address mathematical issues, focusing on efficient large-scale optimization methods for inference and learning, as well as training density models with intractable partition functions. Prerequisite: ML: 10-701 or 10-715, and strong programming skills.
Prerequisites: 10-715 Min. grade C or 10-701 Min. grade C
10-822 Presentation Skills
Fall and Spring: 6 units
This course provides a forum for students to learn and refine public speaking and technical reading skills. The course will include brief workshops embedded throughout the semester to cover such things as effective structure of presentations and papers, how to give a short talk (think NIPS spotlights), "elevator" talks, structure of a research paper, conference presentations, proposal writing (think thesis and beyond), slide crafting, posters, critical evaluation, and public communications for research. Students will be expected to prepare and present a number of practice talks throughout the semester.
10-830 Machine Learning in Policy
Spring: 12 units
Machine learning, a field derived primarily from computer science and statistics, has matured and gained wide adoption over past decades. Alongside exponential increases in data measurement and availability, the ability to develop appropriate and tailored analyses is in demand. As practitioners in the social sciences consider machine learning methods, however, we are identifying limitations and externalities of the applications of machine learning techniques, such as overconfidence in settings with concept drift, lack of generalizability due to selection bias, and magnification of inequities. Machine Learning and Policy seeks to (1) demonstrate motivations and successes of machine learning, to (2) contrast them with more classical methods, and to (3) investigate the promise and cautions of machine learning for public policy. The course will cover variety of topics, including: Basics of machine learning; probability/Bayes/likelihood/conjugacy, terminology, code/algorithm design, evaluation, mathematical formulations Popular and well-performing methods; random forests/trees/ensembles, neural networks/backpropagation/embeddings/generalized adversarial networks, generalized linear models/shrinkage/convexity/basis functions, support vector machines/kernels/optimization/Lagrangian Leveraging other data sources; natural language processing/topic modeling/relational (non-i.i.d.)/relational (Markov logic networks)/temporal data Additional topics: causality/confounding/propensity scoring/inverse weighting/causal directed acyclic graphs, fairness/ethics, interpretation/explanation/visualization, anomaly detection, semi-supervised and active learning, reinforcement learning <a href='http://www.heinz.cmu.edu/academic-resources/course-results/course-details/index.aspx?cid=163'>

Course Website: https://www.andrew.cmu.edu/user/jweiss2/mlp/
10-831 Special Topics in Machine Learning and Policy
Spring: 6 units
Special Topics in Machine Learning and Policy (90-921/10-831) is intended for Ph.D. students in Heinz College, MLD, and other university departments who wish to engage in detailed exploration of a specific topic at the intersection of machine learning and public policy. Qualified master's students may also enroll with permission of the instructor; all students are expected to have some prior background in machine learning and data mining (10-601, 10-701, 90-866, 90-904/10-830, or a similar course). We will explore state-of-the-art methods for detection of emerging events and other relevant patterns in massive, high-dimensional datasets, and discuss how such methods can be applied usefully for the public good in medicine, public health, law enforcement, security, and other domains. The course will consist of lectures, discussions on current research articles and future directions, and course projects. Specific topics to be covered may include: anomaly detection, change-point detection, time series monitoring, spatial and space-time scan statistics, pattern detection in graph data, submodularity and LTSS properties for efficient pattern detection, combining multiple data sources, scaling up pattern detection to massive datasets, applications to public health, law enforcement, homeland security, and health care. A sample syllabus is available at: http://www.cs.cmu.edu/~neill/courses/90921-S10.html
Course Website: http://www.cs.cmu.edu/~neill/courses/90921-S10.html

SCS: Robotics Courses

16-161 ROB Freshman Seminar: Artificial Intelligence and Humanity
Fall and Spring: 9 units
In 1965 British mathematician I.J. Good wrote, An ultraintelligent machine could design even better machines; there would then unquestionably be an intelligence explosion, and the intelligence of man would be left far behind. As we enter an age where companies like Uber are testing driverless cars in Pittsburgh and innovative interfaces like IBMs Watson can play jeopardy and learn techniques for medical diagnoses, how are we to negotiate an intelligence explosion that for many individuals might threaten the very notions of what it means to be human? The future of human-to-machine relationships will likely define our historical epoch and yet, many young technologists and humanists underestimate the downstream impact of technological innovations on human society. Presently, we have little choice but to attend to this rapidly anxiety-ridden question. This seminar will attend to the challenge of present existential questions on what it means to be human (read not machine) in the context of a rapidly advancing technological age. We will consider human narratives throughout history that exam how governments and individual citizens defined humanity in the context of slavery and colonialism as a framework for exploring and projecting what it means to be human in the age of rapidly advancing intelligent machines. We will trace the technological advancements of the recent five decades and identify historical precedents and speculative narratives that help us to consider issues like labor, economic disparity, negotiations of power, human dignity and ethical responsibility within the context of human relations with advancing technological tools that are now coined, artificial intelligence.
16-223 IDeATe Portal: Creative Kinetic Systems
Fall: 10 units
The art and science of machines which evoke human delight through physical movement is founded on a balance of form and computation. This introductory physical computing course addresses the practical design and fabrication of robots, interactive gadgets, and kinetic sculptures. The emphasis is on creating experiences for human audiences through the physical behavior of devices which embody computation with mechanism, sensing, and actuation. Specific topics include basic electronics, elementary mechanical design, embedded programming, and parametric CAD. A key objective is gaining an intuitive understanding of how information and energy move between the physical, electronic, and computational domains to create a compelling behavior. The final projects are tested in the field on children and adults. This interdisciplinary course is an IDeATe Portal Course open to students from all colleges. For students choosing to follow an IDeATe program it is an entry into either Physical Computing or Intelligent Environments. The structure of the class revolves around collaborative exercises and projects which introduce core physical computing and system engineering techniques in a human-centric context. Students apply system and design thinking across multiple domains, work together to make and test several devices, and participate in wide-ranging critique which considers both technical and artistic success.

Course Website: https://courses.ideate.cmu.edu/16-223
16-264 Humanoids
Spring: 12 units
This course surveys perception, cognition, and movement in humans, humanoid robots, and humanoid graphical characters. Application areas include more human-like robots, video game characters, and interactive movie characters.

Course Website: http://www.cs.cmu.edu/~cga/humanoids-ugrad/
16-299 Introduction to Feedback Control Systems
Spring: 12 units
This course is designed as a first course in feedback control systems for computer science majors. Course topics include classical linear control theory (differential equations, Laplace transforms, feedback control), linear state-space methods (controllability/observability, pole placement, LQR), nonlinear systems theory, and an introduction to control using computer learning techniques. Priorities will be given to computer science majors with robotics minor.
Prerequisites: 21-122 and 15-122
Course Website: https://piazza.com/class/j8unqbhmwa3t
16-311 Introduction to Robotics
Spring: 12 units
This course presents an overview of robotics in practice and research with topics including vision, motion planning, mobile mechanisms, kinematics, inverse kinematics, and sensors. In course projects, students construct robots which are driven by a microcontroller, with each project reinforcing the basic principles developed in lectures. Students nominally work in teams of three: an electrical engineer, a mechanical engineer, and a computer scientist. This course will also expose students to some of the contemporary happenings in robotics, which includes current robot lab research, applications, robot contests and robots in the news.
Prerequisites: 21-260 Min. grade C or 24-311 Min. grade C or 18-202 Min. grade C or 21-240 Min. grade C or 21-241 Min. grade C

Course Website: http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/16311/www/current/
16-350 Planning Techniques for Robotics
Spring: 12 units
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.

Course Website: http://www.cs.cmu.edu/~maxim/classes/robotplanning/
16-362 Mobile Robot Algorithms Laboratory
Fall: 12 units
This course is a comprehensive hands-on introduction to the concepts and basic algorithms needed to make a mobile robot function reliably and effectively. We will work in small groups with small robots that are controlled over wireless from your laptop computers. The robots are custom-designed mini forktrucks that can move pallets from place to place just like commercial automated guided vehicles do today. The robots are programmed in the modern MATLAB programming environment. It is a pretty easy language to learn, and a very powerful one for prototyping robotics algorithms. You will get a lot of experience in this course in addition to some theory. Lectures are focused on the content of the next lab. There is a lab every week and they build on each other so that a complete robot software system results. The course will culminate with a class-wide robot competition that tests the performance of all of your code implemented in the semester. In order to succeed in the course, students must have a 1) 2nd year science/engineering level background in mathematics (matrices, vectors, coordinate systems) and 2) have already mastered at least one procedural programming language like C or Java, and 3) have enough experience to be reasonably prepared to write a 5000 line software system in 13 weeks with the help of one or two others. When the course is over, you will have written a single software system that has been incrementally extended in functionality and regularly debugged throughout the semester.

Course Website: http://www.frc.ri.cmu.edu/~alonzo/teaching/16x62/16x62.html
16-371 Personalized Responsive Environments
Spring: 9 units
[IDeATe collaborative course]. Environmental factors have a significant impact on mood and productivity. Creating responsive environments necessitates the design of surroundings that are able to metamorphose in order to optimize user strengths and available resources and evolve in stride with user needs. This course will investigate the development of spaces that adapt to user preferences, moods, and task specific demands. Both the design and engineering of such personalized environments will be explored. Central course concepts will include, understanding the user, integrating various modalities (e.g., light, heat, sound) to support the changing needs of task and user, and the creation of adaptive environments that learn user preferences over time. Please note that there may be usage/materials fees associated with this course.
Prerequisites: 62-150 Min. grade C or 60-223 Min. grade C or 18-090 Min. grade C or 15-104 Min. grade C
16-374 IDeATe: Art of Robotic Special Effects
Spring: 12 units
Inspired by the early "trick" films of George Melies, this project-oriented course brings together robotics and film production technique to infuse cinema with the wonder of live magic. Students will learn the basics of film production using animatronics, camera motion control, and compositing. The projects apply these techniques to create innovative physical effects for short films, all the way from concept to post-production. The course emphasizes real-time practical effects to explore the immediacy and interactivity of improvisation and rehearsal. The robotics topics include animatronic rapid prototyping and programming human-robot collaborative performance. The course includes a brief overview of the history of special effects and robotics to set the work in context.

Course Website: https://courses.ideate.cmu.edu/16-374
16-375 IDeATe: Robotics for Creative Practice
Fall: 10 units
Robots come in all shapes and sizes: it is the integration of software and hardware that can make any machine surprisingly animate. This project-oriented course brings art and engineering together to build performance systems using embodied behavior as a creative medium. Students learn skills for designing, constructing and programming automated systems for storytelling and human interaction, then explore the results through exhibition and performance. Technical topics include closed-loop motion control, expressive physical and computational behavior, machine choreography, and performance conceptualization. Discussion topics include both contemporary kinetic sculpture and robotics research. This interdisciplinary course is part of IDeATe Physical Computing but is open to any student.
Prerequisites: 62-150 or 60-223 or 16-223 or 15-104
Course Website: https://courses.ideate.cmu.edu/16-375
16-384 Robot Kinematics and Dynamics
Fall: 12 units
Foundations 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.
Prerequisites: 18-202 or 21-241 or 24-311 or 15-122 Min. grade C or 16-311
16-385 Computer Vision
Spring: 9 units
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.
Prerequisites: (18-202 Min. grade C and 15-122 Min. grade C) or (15-122 Min. grade C and 21-241 Min. grade C and 21-259 Min. grade C)

Course Website: http://www.cs.cmu.edu/~16385/
16-397 Art, Conflict and Technology in Northern Ireland
Spring: 12 units
Art, Conflict and Technology in Northern Ireland is a 12-unit course cross-listed between the School of Art, the Department of English, and the Robotics Institute. Throughout the term students will be introduced to a history of social strife in the North of Ireland from the 1960s to the present, and efforts to reconcile such differences in the contemporary period. We will consider the influence of advancing technology on how narratives are shared within a community and worldwide. We will reflect upon and analyze a variety of literary and visual art sources from the chosen time period, while also learning how to create mixed-media projects using Gigapan and Hear Me systems from Carnegie Mellon?s CREATE Lab in the Robotics Institute. If you have ever considered how artists explore societal strife through their writing or visual arts practice, if you are interested in the social and political influences of evolving technology, or if you are a practicing artist who uses advancing technology as a tool for individual expression, this integrative course is for you. Throughout the semester we will examine the practice of a range of visual artists that include Rita Duffy, John Kindness and Willie Doherty and writers and dramatists like Dermot Healy, Patrick McCabe, and Christina Reid. Students will learn how to use CREATE Lab?s Gigapan and Hear Me systems as platforms for exploring the content presented in the class for the development of final projects. We will travel to Belfast for spring break 2015, to meet a variety of writers and artists whose work we will study, and stakeholders in the reconciliation efforts throughout the region. In addition to weekly lectures on Thursdays throughout the term, students will have a six-week lab on Tuesdays. Lab sessions begin in the second week of classes (January 20).
16-421 Vision Sensors
Spring: 12 units
This 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.
Prerequisites: 21-241 and 21-111
Course Website: http://www.cs.cmu.edu/~ILIM/courses/vision-sensors/
16-423 Designing Computer Vision Apps
Fall: 12 units
Computer vision is a discipline that attempts to extract information from images and videos. Nearly every smart device on the planet has a camera, and people are increasingly interested in how to develop apps that use computer vision to perform an ever expanding list of things including: 3D mapping, photo/image search, people/object tracking, augmented reality etc. This course is intended for students who are not familiar with computer vision, but want to come up to speed rapidly with the latest in environments, software tools and best practices for developing computer vision apps. No prior knowledge of computer vision or machine learning is required although a strong programming background is a must (at a minimum good knowledge of C/C++). Topics will include using conventional computer vision software tools (OpenCV, MATLAB toolboxes, VLFeat, CAFFE), and development on iOS devices using mobile vision libraries such as GPUImage and fast math libraries like Armadillo and Eigen. For consistency, all app development will be in iOS and it is expected that all students participating in the class have access to an Intel-based MAC running OS X Mavericks or later. Although the coursework will be focussed on a single operating system, the knowledge gained from this class is intended to generalize to other mobile platforms such as Android etc.
Prerequisites: (21-240 and 15-213) or (21-241 and 15-213) or (18-202 and 18-213)

Course Website: http://16423.courses.cs.cmu.edu
16-425 Medical Image Analysis
Spring: 12 units
Students will gain theoretical and practical skills in 2D, 3D, and 4D biomedical image analysis, including skills relevant to general image analysis. The fundamentals of computational medical image analysis will be explored, leading to current research in applying geometry and statistics to segmentation, registration, visualization, and image understanding. Additional and related covered topics include de-noising/restoration, morphology, level sets, and shape/feature analysis. Students will develop practical experience through projects using the latest version of the National Library of Medicine Insight Toolkit ( ITK ) and SimpleITK, a popular open-source software library developed by a consortium of institutions including Carnegie Mellon University and the University of Pittsburgh. In addition to image analysis, the course will include interaction with radiologists and pathologist(s). *** Lectures are at CMU and students will visit clinicians at UPMC. Some or all of the class lectures may also be videoed for public distribution, but students may request to be excluded from distributed video. 16-725 is a graduate class, and 16-425 is a cross-listed undergraduate section. 16-425 is new this year, and has substantially reduced requirements for the final project and for the larger homework assignments, nor does it require shadowing the clinicians. Prerequisites: Knowledge of vector calculus, basic probability, and either C++ or python, including basic command-line familiarity and how to pass arguments to your own command-line programs. Extensive expertise with C++ and templates is not necessary, but some students may find it helpful.

Course Website: http://www.cs.cmu.edu/~galeotti/methods_course/
16-441 Advanced CP/SIS: Urban Intervention
Fall and Spring: 12 units
This course introduces students to theories, practices, and communities for critical investigation of urban spaces and play within them. The course unfolds along two parallel trajectories: research (literature review, lectures, readings, demonstrations) and design (three iterated individualized projects and a fourth larger scale final project). The first half of the course will introduce students to a wide range of theories and techniques within urban intervention that draw from fluxus, the situationist international, activism and hacktivism, as well as public policy, philosophy, psychology and economics. Students will study theoretical and practical frameworks for artistic intervention into public urban spaces, while concurrently researching actual sites and communities within Pittsburgh for experimentation. Students are required to conceptualized projects on larger (urban) scales, and find ways to implement their projects safely and legally by pursuing the necessary administrative, social, technical, financial steps required to create meaningful interventions in public spaces. This class will specifically explore three media for urban intervention: Sound Outdoor video projection Robotics, Autonomy and Mobility in the way of remote control vehicles (e.g. cars, quad-copters, etc.). For each theme, students are required to produce one project that is iterated twice or more. The undergraduate (60441) and graduate (60741) sections of the course meet concurrently and follow the same syllabus and assignments. In addition to the coursework documented in the syllabus, Graduate level students are expected to write a research paper suitable for submission to a notable relevant academic conference. This process includes a rough draft, revisions and a completed and formatted paper ready for submission
16-450 Robotics Systems Engineering
Fall: 12 units
Systems engineering examines methods of specifying, designing, analyzing and testing complex systems. In this course, principles and processes of systems engineering are introduced and applied to the development of robotic devices. The focus is on robotic system engineered to perform complex behavior. Such systems embed computing elements, integrate sensors and actuators, operate in a reliable and robust fashion, and demand rigorous engineering from conception through production. The course is organized as a progression through the systems engineering process of conceptualization, specification, design, and prototyping with consideration of verification and validation. Students completing this course will engineer a robotic system through its compete design and initial prototype. The project concept and teams can continue into the Spring-semester (16-474 Robotics Capstone) for system refinement, testing and demonstration.
Prerequisites: 16-311 Min. grade B and (18-370 Min. grade B or 16-299 Min. grade B or 24-451 Min. grade B)
16-455 IDeATe: Human-Machine Virtuosity
Spring: 12 units
[IDeATe course] Human dexterous skill embodies a wealth of physical understanding which complements computer-based design and machine fabrication. This project-oriented course explores the duality between hand and machine through the practical development of innovative design and fabrication systems. These systems fluidly combine the expressivity and intuition of physical tools with the scalability and precision of the digital realm. Students will develop novel hybrid design and production workflows combining analog and digital processes to support the design and fabrication of their chosen projects. Specific skills covered include 3D scanning, 3D modeling (CAD), 3D printing (additive manufacturing), computer based sensing, and human-robot interaction design. Areas of interest include architecture, art, and product design.
Prerequisites: 16-223 Min. grade C or 60-223 Min. grade C

Course Website: https://courses.ideate.cmu.edu/16-455
16-456 Reality Computing Studio
Fall: 12 units
[IDeATe collaborative course] Reality computing encompasses a constellation of technologies focused around capturing reality (laser scanning, photogrammetry), working with spatial data (CAD, physical modeling, simulation), and using data to interact with and influence the physical world (augmented / virtual reality, projector systems, 3d printing, robotics). Taught in collaboration with the school of architecture, this studio asks students to apply these technologies to real world problems such as residential design, sustainability, and infrastructure monitoring.

Course Website: http://ideate.cmu.edu/about-ideate/departments/robotics-institute/reality-computing/
16-457 Reality Computing II
Spring: 12 units
[IDeATe collaborative course] Reality computing encompasses a constellation of technologies focused around capturing reality (laser scanning, photogrammetry), working with spatial data (CAD, physical modeling, simulation), and using data to interact with and influence the physical world (augmented / virtual reality, projector systems, 3d printing, robotics). This iteration of the reality computing course will focus on "design realization": the translation from digital design to fully realized tangible artifact. Collaborating with the UDBS design studio, and within the context of a full-scale residential prototype, students will investigate how reality computing technologies can be used to accelerate and advance the process of design realization by using reality computing to understand existing homes, map design data into the real world, and highlight conflicts between design and reality. Topics of special focus within the course are residential design (John Folan) and augmented reality and robotics (Pyry Matikainen).

Course Website: http://ideate.cmu.edu/about-ideate/departments/robotics-institute/reality-computing/
16-461 Experimental Capture
Fall: 9 units
Performance capture is used in applications as varied as special effects in movies, animation, sports training, physical rehabilitation, and human-robot/human-computer interaction. This course will survey state-of-the-art techniques and emerging ideas, in the industry and in academia, to capture, model, and render human performances. The course will be a mix between lectures and discussion of recent progress in human motion capture and analysis. The course evaluation will be project-based, in which students will capture their own body and face motion, and build projects around the data they collect individually and as a group. We will cover: 1. Capture Techniques: We will describe and use various systems including motion capture, video-based capture, depth sensors, scanners, and eye-gaze trackers; 2. Modeling and Representation: We will cover classic and contemporary representations of face and body pose and motion, including statistical and physics-based techniques; 3. Rendering Applications: As new rendering paradigms emerge, new applications continue to develop. We will study recent progress in animation, synthesis, classification, and rehabilitation on new forms of displays. Please note that there may be usage/materials fees associated with this course.
Prerequisites: 15-365 or 60-422
16-465 Game Engine Programming
Spring: 10 units
This course is designed to help students understand, modify, and develop game engines. Game engines consist of reusable runtime and asset pipeline code. They provide game-relevant abstractions of low-level system services and libraries, making it easier to write bug-free games that work across multiple platforms. Game engines also handle artistic content, providing or integrating with authoring tools to ease the process of creating high-fidelity games. In this course, we will discuss the problems game engines attempt to solve, examine how current state-of-the-art engines address these problems, and create our own engines based on what we learn. We will cover both the content authoring and runtime aspects of engines. Coursework will consist of frequent, tightly-scoped programming and system design assignments; expeditions through game engine source code; and two group projects — one in an engine created from scratch, and one that requires modification of an existing engine. Prerequisites: Students will be expected to be fluent in at least one programming language. We will be working with C++, Javascript, and a smattering of Python. We will be using git for version control and code sharing. The assignments in the course will be designed to be completed on an OSX or Linux workstation (e.g. the IDeATe "virtual cluster"). Working with Windows will be possible, but might require extra effort. We will be building a 3D model pipeline around Blender, but no prior knowledge of the tool will be assumed.
Prerequisites: 15-213 Min. grade C or 15-112 Min. grade C or 62-150 Min. grade C or 15-104 Min. grade C
16-467 Human Robot Interaction
Spring: 12 units
The 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. This course has no prerequisites, but some basic familiarity with robots is recommended (programming knowledge is not necessary, but is useful for the term project).

Course Website: http://harp.ri.cmu.edu/courses
16-474 Robotics Capstone
Spring: 12 units
In this course students refine the design, build, integrate, test, and demonstrate the performance of the robot they designed in the pre-requisite Systems Engineering Course (16-450). The students are expected to continue to apply the process and methods of Systems Engineering to track requirements, evaluate alternatives, refine the cyberphysical architectures, plan and devise tests, verify the design, and validate system performance. In addition, the students learn and apply Project Management techniques to manage the technical scope, schedule, budget, and risks of their project. The course consists of lectures, class meetings, reviews, and a final demonstration. Lectures cover core topics in Project Management and special topics in Systems Engineering. During class meetings the students and instructor review progress on the project and discuss technical and project-execution challenges. There are three major reviews approximately at the end of each of the first three months of the semester. For each review, the students give a presentation and submit an updated version of the System Design and Development Document. The course culminates in a System Performance Validation Demonstration at the end of the semester. In addition to that the students hold a special demonstration of their robotic system for the broader Robotics community.
Prerequisite: 16-450 Min. grade C
16-595 Undergraduate Independent Study
All Semesters
For students to pursue an independent study with a Robotics Institute faculty member.
16-597 Undergraduate Reading and Research
Fall and Spring
Missing Course Description - please contact the teaching department.
16-621 MSCV Project I
Fall and Spring: 12 units
TBD
16-622 MSCV Capstone
Fall: 12 units
TBA
16-623 Advanced Computer Vision Apps.
Fall: 12 units
Computer vision is a discipline that attempts to extract information from images and videos. Nearly every smart device on the planet has a camera, and people are increasingly interested in how to develop apps that use computer vision to perform an ever expanding list of things including: 3D mapping, photo/image search, people/object tracking, augmented reality etc. This course is intended for graduate students who are familiar with computer vision, and are keen to learn more about the applying state of the art vision methods on smart devices and embedded systems. A strong programming background is a must (at a minimum good knowledge of C/C++), topics will include using conventional computer vision software tools (OpenCV, MATLAB toolboxes, VLFeat, CAFFE, Torch 7), and development on iOS devices using mobile vision libraries such as GPUImage, Metal and fast math libraries like Armadillo and Eigen. For consistency, all app development will be in iOS and it is expected that all students participating in the class have access to an Intel-based MAC running OS X Mavericks or later. Although the coursework will be focused on a single operating system, the knowledge gained from this class will easily generalize to other mobile platforms such as Android etc.
Prerequisites: 16-720 or 16-385
Course Website: http://16623.courses.cs.cmu.edu
16-627 MSCV Seminar
Fall
(Only open to MSCV students.) MSCV students will be required to participate in this one-semester seminar course which will prepare them for the MSCV project starting in the Spring semester. The first part of this course will cover talks by computer vision and related faculty about the ongoing research, development programs related to Computer Vision at CMU. The second part of this course will include student/faculty tutorial on topics such as OpenCV, Dataset Creation, Mechanical Turk etc. The goal of this series is to get students acquainted with practical knowledge for a successful project. In the last month of the course, each lecture will cover upto four possible MSCV projects pitched by faculty or industrial sponsors. At the end of the course students will turn in their choices, and a faculty committee will assign them the final projects.
16-665 Robot Mobility on Air, Land, & Sea
Fall: 12 units
Many robots are designed to move through their environments. Three prevalent environments on earth are land, air, and water. This course will explore the modeling, control, and navigation of ground-based (wheeled and legged), air-based (rotorcraft such as quadcopters), and water-based robots.
16-720 Computer Vision
Fall and Spring: 12 units
This course introduces the fundamental techniques used in computer vision, that is, the analysis of patterns in visual images to reconstruct and understand the objects and scenes that generated them. Topics covered include image formation and representation, camera geometry, and calibration, computational imaging, multi-view geometry, stereo, 3D reconstruction from images, motion analysis, physics-based vision, image segmentation and object recognition. The material is based on graduate-level texts augmented with research papers, as appropriate. Evaluation is based on homeworks and a final project. The homeworks involve considerable Matlab programming exercises. Texts recommended but not required: Title: "Computer Vision Algorithms and Applications" Author: Richard Szeliski Series: Texts in Computer Science Publisher: Springer ISBN: 978-1-84882-934-3 Title: "Computer Vision: A Modern Approach" Authors: David Forsyth and Jean Ponce Publisher: Prentice Hall ISBN: 0-13-085198-1

Course Website: http://www.andrew.cmu.edu/course/16-720/
16-725 Medical Image Analysis
Spring: 12 units
Students will gain theoretical and practical skills in 2D, 3D, and 4D biomedical image analysis, including skills relevant to general image analysis. The fundamentals of computational medical image analysis will be explored, leading to current research in applying geometry and statistics to segmentation, registration, visualization, and image understanding. Additional and related covered topics include de-noising/restoration, morphology, level sets, and shape/feature analysis. Students will develop practical experience through projects using the latest version of the National Library of Medicine Insight Toolkit ( ITK ) and SimpleITK, a popular open-source software library developed by a consortium of institutions including Carnegie Mellon University and the University of Pittsburgh. In addition to image analysis, the course will include interaction with radiologists and pathologist(s). *** Lectures are at CMU and students will visit clinicians at UPMC. Some or all of the class lectures may also be videoed for public distribution, but students may request to be excluded from distributed video. 16-725 is a graduate class, and 16-425 is a cross-listed undergraduate section. 16-425 is new this year, and has substantially reduced requirements for the final project and for the larger homework assignments, nor does it require shadowing the clinicians. Prerequisites: Knowledge of vector calculus, basic probability, and either C++ or python, including basic command-line familiarity and how to pass arguments to your own command-line programs. Extensive expertise with C++ and templates is not necessary, but some students may find it helpful.

Course Website: http://www.cs.cmu.edu/~galeotti/methods_course/
16-735 Robotic Motion Planning
Intermittent: 12 units
The robot motion field and its applications have become incredibly broad and theoretically deep at the same time. The goal of the course is to provide an up-to-date foundation in the motion planning field, make the fundamentals of motion planning accessible to the novice and relate low-level implementation to high-level algorithmic concepts. We cover basic path planning algorithms using potential functions, roadmaps and cellular decompositions. We also look at the recent advances in sensor-based implementation and probabalistic techniques, including sample-based roadmaps, rapidly exploring random trees, Kalman filtering, and Bayesian estimation.
16-740 Learning for Manipulation
Spring: 12 units
Manipulation is the process of changing the state of objects through direct physical interactions. To perform manipulation tasks in unstructured environments, autonomous robots will need to learn about the objects in their surroundings as well as the skills required to manipulate and change the state of these objects. In this course, we explore the use of machine learning and data-driven algorithms for robot manipulation. The course introduces students to the wide variety of challenges posed by manipulation tasks, and how these challenges can be formulated as learning problems. Students are taught how these problems can be solved using machine learning techniques. The types of machine learning methods covered in this course include supervised, unsupervised, active, and reinforcement learning methods. The course includes both lectures and guided paper discussions.

Course Website: http://none
16-741 Mechanics of Manipulation
Fall: 12 units
Kinematics, statics, and dynamics of robotic manipulator's interaction with a task, focusing on intelligent use of kinematic constraint, gravity, and frictional forces. Automatic planning based on mechanics. Application examples drawn from manufacturing and other domains.

Course Website: http://www.cs.cmu.edu/afs/cs/academic/class/16741-s07/www/index.html
16-742 Geometry of Locomotion
Fall: 12 units
This course introduces geometric methods for the analysis of locomoting systems. Focusing on the kinematics of locomoting systems, the course covers topics from differential geometry, geometric mechanics, and motion planning . Specific topics include configuration spaces, manifolds, groups, Lie groups, representations of velocity, holonomic and nonholonomic constraints, constraint curvature, response to cyclic inputs and distance metrics. The primary goal of this class is to develop an intuitive understanding of these concepts and how they are used in locomoting systems, rather than working through a set of formal proofs and derivations. We do, however, incorporate enough mathematical formalism for this class to serve as a starting point for further investigation into this topic area. We also call upon biological data, when available, and relate to the mathematical formalisms in the class.
16-745 Dynamic Optimization
Spring: 12 units
This course surveys the use of optimization (especially optimal control) to design behavior. We will explore ways to represent policies including hand-designed parametric functions, basis functions, tables, and trajectory libraries. We will also explore algorithms to create policies including parameter optimization and trajectory optimization (first and second order gradient methods, sequential quadratic programming, random search methods, evolutionary algorithms, etc.). We will discuss how to handle the discrepancy between models used to create policies and the actual system being controlled (evaluation and robustness issues). The course will combine lectures, student-presented material, and projects. The goal of this course will be to help participants find the most effective methods for their problems.

Course Website: http://www.cs.cmu.edu/~cga/dynopt/
16-748 Underactuated Robots
Fall: 12 units
People and animals move through and interact with the world in a fundamentally dynamic way. In the vast majority of cases the same cannot be said for robots. In fact, many conventional approaches to motion planning and robot control attempt to explicitly cancel out the dynamics associated with different tasks. This class will consider underactuated robots, systems that do not have full control over their state and therefore cannot be planned for or controlled via conventional methods. Our goal will be to make novel locomoting robots act more "naturally." This class will highlight the relationship between conventional ideas from deterministic motion planning and control design (e.g., dynamic programming and linear-quadratic regulators) and their contemporary counterparts, many of which help form the analytical basis for the probabilisitic reasoning that underlies contemporary AI systems (e.g., POMDPs). Note that this course is inspired by and, for the most part, will follow the format of "Underactuated Robotics: Learning, Planning, and Control for Efficient and Agile Machines" created by Prof. Russ Tedrake at MIT. We will take several tangents, but the course materials provided by Prof. Tedrake through MIT Open Courseware are an incredible resource for this course (and really just in general).

Course Website: http://TBD
16-761 Mobile Robots
Spring: 12 units
This course covers all aspects of mobile robot systems design and programming from both a theoretical and a practical perspective. The basic subsystems of control, localization, mapping, perception, and planning are presented. For each, the discussion will include relevant methods from applied mathematics. aspects of physics necessary in the construction of models of system and environmental behavior, and core algorithms which have proven to be valuable in a wide range of circumstances.

Course Website: http://www.frc.ri.cmu.edu/~alonzo/teaching/16-761/16-761.html
16-778 Mechatronic Design
Spring: 12 units
Mechatronics is the synergistic integration of mechanism, electronics, and computer control to achieve a functional system. This course is a semester-long multidisciplinary capstone hardware project design experience in which small (typically four-person) teams of electrical and computer engineering, mechanical engineering and robotics students deliver an end-of-course demonstration of a final integrated system capable of performing a mechatronic task. Throughout the semester, the students design, configure, implement, test and evaluate in the laboratory devices and subsystems culminating in the final integrated mechatronic system. Lectures will complement the laboratory experience with comparative surveys, operational principles, and integrated design issues associated with the spectrum of mechanism, microcontroller, electronic, sensor, and control components.

Course Website: http://www.ece.cmu.edu/courses/items/18578.html
16-782 Planning and Decision-making in Robotics
Fall: 12 units
Planning and Decision-making are critical components of autonomy in robotic systems. These components are responsible for making decisions that range from path planning and motion planning to coverage and task planning to taking actions that help robots understand the world around them better. This course studies underlying algorithmic techniques used for planning and decision-making in robotics and examines case studies in ground and aerial robots, humanoids, mobile manipulation platforms and multi-robot systems. The students will learn the algorithms and implement them in a series of programming-based projects.
16-785 Integrated intelligence in robotics: language, vision and planning
Spring: 12 units
This course covers the topics on building cognitive intelligence for robotic systems. Cognitive capabilities constitute high-level, humanlike intelligence that exhibits reasoning or problem solving skills. Such capabilities as semantic perception, language understanding, and task planning can be built on top of low-level robot autonomy that enables autonomous control of physical platforms. The topics generally bridge across multiple technical areas, for example, vision-language intersection and language-action/plan grounding. This course is composed of 50% lectures and 50% seminar classes. There are no explicit prerequisites for this class, but a general background knowledge in AI and machine learning is assumed.

Course Website: http://www.cs.cmu.edu/~jeanoh/16-785/
16-791 Applied Data Science
Spring: 12 units
This course explores the rapidly developing field of data science in the context of its pragmatic applications. Applied Data Science strives to achieve three main goals. The first is to optimize the efficacy of decision making by human managers. The second is to maximize the utilization of available data, so that no important clue is ever missed. The third is to improve understanding of data and the underlying processes that produce it. This course aims at building skills required to systematically achieve those goals in practice. The students will gain and solidify awareness of the most prevalent contemporary methods of Data Science, and develop intuition needed for assessing practical utility of the studied topics in application scenarios. They will be able to learn how to formulate analytic tasks in support of project objectives, how to define successful analytic projects, and how to evaluate utility of existing and potential applications of the discussed technologies in practice.

Course Website: http://TBD
16-823 Physics-based Methods in Vision (Appearance Modeling)
Intermittent: 12 units
Everyday we observe an extraordinary array of light and color phenomena around us, ranging from the dazzling effects of the atmosphere, the complex appearances of surfaces and materials and underwater scenarios. For a long time, artists, scientists and photographers have been fascinated by these effects, and have focused their attention on capturing and understanding these phenomena. In this course, we take a computational approach to modeling and analyzing these phenomena, which we collectively call as "visual appearance". The first half of the course focuses on the physical fundamentals of visual appearance, while the second half of the course focuses on algorithms and applications in a variety of fields such as computer vision, graphics and remote sensing and technologies such as underwater and aerial imaging. This course unifies concepts usually learnt in physical sciences and their application in imaging sciences, and will include the latest research advances in this area. The course will also include a photography competition. <P> Prerequisites: The prerequisite will be an undergraduate or graduate class in Computer Vision or in Computer Graphics.
Prerequisites: 15-385 or 15-462 or 16-720
Course Website: http://www.cs.cmu.edu/afs/cs/academic/class/16823-f06/
16-824 Visual Learning and Recognition
Spring: 12 units
A graduate seminar course in Computer Vision with emphasis on representation and reasoning for large amounts of data (images, videos and associated tags, text, gps-locations etc) toward the ultimate goal of Image Understanding. We will be reading an eclectic mix of classic and recent papers on topics including: Theories of Perception, Mid-level Vision (Grouping, Segmentation, Poselets), Object and Scene Recognition, 3D Scene Understanding, Action Recognition, Contextual Reasoning, Image Parsing, Joint Language and Vision Models, etc. We will be covering a wide range of supervised, semi-supervised and unsupervised approaches for each of the topics above. <P> Prerequisites: Graduate Computer Vision or Machine Learning
Prerequisites: 15-781 Min. grade B or 16-720 Min. grade B or 10-701 Min. grade B or 16-722 Min. grade B

Course Website: http://graphics.cs.cmu.edu/courses/16-824/2017_spring/
16-831 Statistical Techniques in Robotics
Fall: 12 units
Data-driven learning techniques are now an essential part of building robotic systems designed to operate in the real world. These systems must learn to adapt to changes in the environment, learn from experience, and learn from demonstration. In particular we will cover three important sub-fields of Machine Learning applied to robotic systems: (1) We will cover Online Learning, which can be used to give robotic systems the ability to adapt to changing environmental conditions. (2) We will cover Reinforcement Learning, which takes into account the tradeoffs between exploration and exploitation to learn how to interact with the environment. We will also cover Deep Reinforcement Learning techniques in the context of real-world robotic systems. (3) We will cover Apprenticeship Learning (Imitation Learning and Inverse Reinforcement Learning) which is critical for teaching robotic systems to learn from expert behavior. Prerequisites: Linear Algebra, Multivariate Calculus, Probability theory.
16-833 Robot Localization and Mapping
Spring: 12 units
Robot localization and mapping are fundamental capabilities for mobile robots operating in the real world. Even more challenging than these individual problems is their combination: simultaneous localization and mapping (SLAM). Robust and scalable solutions are needed that can handle the uncertainty inherent in sensor measurements, while providing localization and map estimates in real-time. We will explore suitable efficient probabilistic inference algorithms at the intersection of linear algebra and probabilistic graphical models. We will also explore state-of-the-art systems.

Course Website: http://frc.ri.cmu.edu/~kaess/teaching/16833/Spring2018
16-848 Hands: Design and Control for Dexterous Manipulation
Spring: 12 units
Research related to hands has increased dramatically over the past decade. Hands are in focus in computer graphics and virtual reality, new robot hands have been popping up in great variety, and manipulation has been featured in widely publicized programs such as the DARPA Robotics Challenge. With all of this attention on hands, are we close to a breakthrough in dexterity, or are we still missing some things needed for truly competent manipulation? In this course, we will survey robotic hands and learn about the human hand with the goal of pushing the frontiers on hand design and control for dexterous manipulation. We will consider the necessary kinematics and dynamics for dexterity, what sensors are required to carry out dexterous interactions, the importance of reflexes and compliance, and the challenge of uncertainty. We will examine the human hand: its structure, sensing capabilities, human grasp choice and control strategies for inspiration and benchmarking. Students will be asked to present one or two research papers, participate in discussions and short research or design exercises, and carry out a final project.

Course Website: http://graphics.cs.cmu.edu/nsp/course/16899-s18/
16-899 Special Topics
Fall and Spring: 12 units
Section D: This course will develop a robot capable of inspecting and mapping nuclear facilities. This course will investigate robot mobility, energetics, sensing, and computing relevant to navigating narrow, underground environments. These environments are often GPS and communications denied and depend on reliable autonomous capability. Relevant skills include robotics, electronics, software, mechanical design, fabrication, testing, documentation, and systems engineering. Students will be required to formulate and develop robotic technologies, justify design choices and tradeoffs, and communicate accomplishments and objectives. Students in this class will benefit from operating in a group setting to create a working system from inception to demonstration of required capabilities.

Course Website: https://sites.google.com/site/cmuunderactuatedrobotics/

SCS: Institute for Software Research Courses

17-200 Ethics and Policy Issues in Computing
Spring: 9 units
Note: Previously offered as 08-200. In this course, students will study the social impacts of computing technology and systems. The course will provide a brief introduction to ethics and to the new and difficult ethical questions modern computing technology presents us with. It will focus on a number of areas in which computers and information technology are having an impact on society including data privacy, social media, and autonomous technologies.
17-214 Principles of Software Construction: Objects, Design, and Concurrency
Fall and Spring: 12 units
Note: This course previously offered as 15-214. Software engineers today are less likely to design data structures and algorithms from scratch and more likely to build systems from library and framework components. In this course, students engage with concepts related to the construction of software systems at scale, building on their understanding of the basic building blocks of data structures, algorithms, and program and computer structures. The course covers technical topics in four areas: (1) concepts of design for complex systems, (2) object-oriented programming, (3) static and dynamic analysis for programs, and (4) concurrency. At the conclusion of this course, students will have substantial experience building medium-sized software systems in Java.
Prerequisites: (15-121 Min. grade C or 15-122 Min. grade C) and (21-128 Min. grade C or 21-127 Min. grade C or 15-151 Min. grade C)
17-224 Influence, Persuasion, and Manipulation Online
Fall: 9 units
This course will introduce the fundamental behavioral science of influence, persuasion, and manipulation, and the application of these scientific principles to online campaigns to influence attitudes and behavior. In particular, we will discuss the psychology of persuasion, nudging, social influence, bias, persuasive design, and the ethics of persuasion. Against this background, we will analyze case studies drawn from recent, high profile events such as election campaigns, targeted advertising, sowing political division, memes and virality, impact of social media, and propagation of "fake news." Countermeasures to these tactics will be explored, including personal measures, technologies, and policy.
17-303 Cryptocurrencies, Blockchains and Applications
Spring
Note: Previously offered as 08-303. Cryptocurrencies such as Bitcoin have gained large popularity in recent years, in no small part due to the fantastic potential applications they could facilitate. This course will first provide an overview of the technological mechanisms behind cryptocurrencies and distributed consensus and distributed ledgers ("blockchains"), introducing along the way the necessary cryptographic tools. It will then focus on more advanced blockchain applications, such as "smart contracts," that is, contracts written as code. Finally, the course will also introduce some of the legal and policy questions surrounding cryptocurrencies. Prerequisites: 15-213 or equivalent strongly recommended
17-313 Foundations of Software Engineering
Fall: 12 units
Note: This course previously offered as 15313.Students gain exposure to the fundamental principles of software engineering. This includes both core CS technical knowledge and the means by which this knowledge can be applied in the practical engineering of complex software in real-world settings. Topics related to software artifacts include coding, software architecture, measurement, and quality assurance of various qualities (e.g., robustness, security, performance, maintainability) with static and dynamic analysis, testing, code review, and inspection. Topics related to software process include requirements engineering, process models and evaluation, personal and team development, and supply chain issues including outsourcing and open source. This course has a strong technical focus, a strong focus on developing team skills, and will include both written and programming assignments. Students will get experience with the latest software engineering tools and practices.

Course Website: https://www.cs.cmu.edu/~ckaestne/17313/
17-331 Information Security, Privacy, and Policy
Fall: 12 units
Note: This course previously offered as 15-421. As layers upon layers of technology mediate increasingly rich business processes and social interactions, issues of information security and privacy are growing more complex too. This course takes a multi-disciplinary perspective of information security and privacy, looking at technologies as well as business, legal, policy and usability issues. The objective is to prepare students to identify and address critical security and privacy issues involved in the design, development and deployment of information systems. Examples used to introduce concepts covered in the class range from enterprise systems to mobile and pervasive computing as well as social networking. Format: Lectures, short student presentations on topics selected together with the instructor, and guest presentations. Target Audience: Primarily intended for motivated undergraduate and masters students with CS background. Also open to PhD students interested in a more practical, multi-disciplinary understanding of information security and privacy.
17-333 Privacy Policy, Law, and Technology
Fall and Spring: 9 units
Note: Previously offered as 08-533. This course focuses on policy issues related to privacy from the perspectives of governments, organizations, and individuals. We will begin with a historical and philosophical study of privacy and then explore recent public policy issues. We will examine the privacy protections provided by laws and regulations, as well as the way technology can be used to protect privacy. We will emphasize technology-related privacy concerns and mitigation, for example: social networks, smartphones, behavioral advertising (and tools to prevent targeted advertising and tracking), anonymous communication systems, big data, and drones. This is part of a series of courses offered as part of the MSIT-Privacy Engineering masters program. These courses may be taken in any order or simultaneously. Foundations of Privacy (Fall semester) offers more in-depth coverage of technologies and algorithms used to reason about and protect privacy. Engineering Privacy in Software (Spring semester) focuses on the methods and tools needed to design systems for privacy. This course is intended primarily for graduate students and advanced undergraduate students with some technical background. Programming skills are not required. 8-733, 19-608, and 95-818 are 12-unit courses for PhD students. Students enrolled under these course numbers will have extra assignments and will be expected to do a project suitable for publication. 8-533 is a 9-unit course for undergraduate students. Masters students may register for any of the course numbers permitted by their program. This course will include a lot of reading, writing, and class discussion. Students will be able to tailor their assignments to their skills and interests. However, all students will be expected to do some writing and some technical work.
17-334 Usable Privacy and Security
Spring: 9 units
Note: Previously offered as 08-734. There is growing recognition that technology alone will not provide all of the solutions to security and privacy problems. Human factors play an important role in these areas, and it is important for security and privacy experts to have an understanding of how people will interact with the systems they develop. This course is designed to introduce students to a variety of usability and user interface problems related to privacy and security and to give them experience in designing studies aimed at helping to evaluate usability issues in security and privacy systems. The course is suitable both for students interested in privacy and security who would like to learn more about usability, as well as for students interested in usability who would like to learn more about security and privacy. Much of the course will be taught in a graduate seminar style in which all students will be expected to do a weekly reading assignment and each week different students will prepare a presentation for the class. Students will also work on a group project throughout the semester. The course is open to all graduate students who have technical backgrounds. The 12-unit course numbers (08-734 and 5-836) are for PhD students and masters students. Students enrolled in these course numbers will be expected to play a leadership role in a group project that produces a paper suitable for publication. The 9-unit 500-level course numbers (08-534 and 05-436) are for juniors, seniors, and masters students. Students enrolled in these course numbers will have less demanding project and presentation requirements.
17-340 Green Computing
Intermittent: 9 units
Note: Previously offered as 08-340. Energy is a key societal resource. However, our energy usage is rising at an alarming rate and therefore it has become critical to manage its consumption more efficiently for long term sustainability. This course introduces students to the exciting area of "Green Computing", and is organizationally divided into two tracks. The first track is "Energy-Efficient Computing", which considers the state of the art techniques for improving the energy efficiency of mobile devices, to laptop and desktop class computers and finally to data centers. We will cover energy efficiency across the hardware/software stack, starting from the individual components like processors and radio interfaces to system level architectures and optimizations. The second track is "Applying Computing towards Sustainability", covering topics that leverage computing to reduce the energy footprint of our society. In particular, we will focus on Smart Buildings and the Smart Grid, covering topics such as sensing, modeling and controlling the energy usage of buildings, new operating systems or software stacks for the smart infrastructure, as well as the privacy and security issues with the new "internet of things". The goal of this course is to help students acquire some of the knowledge and the skills needed to do research in this space of "Green Computing". Although the course is listed within SCS, it should be of interest to students in several departments, including ECE, MechE, CEE, EPP and Architecture.
17-355 Program Analysis
Spring: 12 units
Instructors: Jonathan Aldrich and Claire Le Goues This course covers both foundations and practical aspects of the automated analysis of programs, which is becoming increasingly critical to find software errors and assure program correctness. The theory of abstract interpretation captures the essence of a broad range of program analyses and supports reasoning about their correctness. Building on this foundation, the course will describe program representations, data flow analysis, alias analysis, interprocedural analysis, dynamic analysis, Hoare Logic, and symbolic execution. Through assignments and projects, students will design and implement practical analysis tools that find bugs and verify properties of software. This course satisfies the Logic and Languages constrained elective category of the Computer Science major, and the Technical Software Engineering requirement for the Software Engineering minor. Prerequisites: 15-251 and (15-150 or 15-214). Related URL: 17-355-18sp/">http://www.cs.cmu.edu/~aldrich/courses/17-355-18sp/
Prerequisites: 15-251 Min. grade C and (15-214 Min. grade C or 15-150 Min. grade C)

Course Website: http://www.cs.cmu.edu/~aldrich/courses/17-355-18sp/
17-356 Software Engineering for Startups
Spring: 12 units
Startup engineering is critical to innovation. The skills required to effectively prototype, launch, and scale products are vital to engineers everywhere, from fledgling companies founded in dorm rooms to local mid-size companies to internal startups from multi-national tech giants. However, developing software in a startup environment poses unique engineering challenges. These challenges include making and justifying foundational architectural and technical decisions despite extreme uncertainty; rapidly prototyping and evaluating new ideas and features, while building minimum viable products; prioritizing engineering effort in severely constrained environments; and communicating effectively both within a small engineering team and with internal and external non-technical stakeholders. This course teaches the skills necessary to engineer successfully in a startup environment, through lectures, group projects, case study discussions, and guest speakers drawn from experienced, practicing startup engineers. This is an engineering-focused course; no entrepreneurship background is required or expected. Students do not need to have a startup idea to participate fully. Prerequisites: 15-214 OR 15-213
Prerequisites: 15-213 or 15-214
17-413 Software Engineering Practicum
Spring: 12 units
Note: This course previously offered as 15413. This course is a project-based course in which students conduct a semester-long project for a real client in small teams. This is not a lecture-based course; after the first few weeks the course consists primarily of weekly team meetings with the course instructors, with teams making regular presentations on their software development process. Students will leave the course with a firsthand understanding of the software engineering realities that drive SE practices, will have concrete experience with these practices, and will have engaged in active reflection on this experience. After the course, students will have the teamwork, process, and product skills to be immediately competent in a software engineering organization, and will be able to evaluate the new processes and techniques they will encounter in the workplace.
17-415 Software Engineering Reflection
Fall: 6 units
Note: This course previously offered as 17-413. This course is an opportunity to reflect on a software engineering experience you have had in industry. It is structured as a writers workshop, in which you will work with the instructor and other students to identify and flesh out a software engineering theme that is illustrated by your industry experience. You will prepare a 10-page report on this theme, comparable to a practitioner's report at a conference like ICSE or OOPSLA, and a 30-minute presentation to match. This course fulfills a requirement of the Software Engineering Minor program, but students in other programs may take the course if they meet the prerequisite industry experience and if space is available.
17-422 Building User-Focused Sensing Systems
Fall and Spring: 12 units
These days we are surrounded by sensing and computation. Smart devices, such as smartphones, smartwatches, are packed with sensors. While they are already very useful devices, we have only started to scratch the surface here. The aim of this class will be to introduce the students to building and understanding smart sensing devices. The course will include discussion into contribution of various fields, including human-computer interaction, embedded computing, computer vision, distributed systems, machine learning, signal processing, security, and privacy. We will discuss how these various disciplines are coming together to form an end-to-end system that generates useful and user-actionable data. We will take a hands-on approach towards building and evaluating these systems. The students will gain practical experience in developing sensing systems in different application domains, such as activity recognition, health sensing, gestural interaction, etc. You will learn about embedded systems and understand the advantages and limitations of different platforms. You will learn about sensors and how to interface them with the real world to be able to get useful and actionable data. You will learn how to build a network of sensors that can communicate with each other. You will also learn about storing the sensor data for visualization, analysis and presentation both locally and to the cloud. The course will be a combination of lectures, tutorials, class discussions, and demonstrations. Students will be evaluated based on 5 mini-projects/assignments, class participation, weekly reading summaries, and a final project. All hardware resources will be provided to the students and they will be given an option to take their final prototypes with them for the cost of the hardware components. The only requirement for the class is that the students should have reasonable programming experience and an interest in tinkering.
17-428 Machine Learning and Sensing
Fall: 12 units
Machine learning and sensors are at the core of most modern computing devices and technology. From Amazon Echo to Apple Watch to Google Photos to self-driving cars, making sense of the data coming from powerful but noisy sensors is the key challenge. The aim of the course will be to explore this intersection of sensors and machine learning, understand the inner workings on modern computing technologies, and design the future ones. We will cover data collection, signal processing, data processing, data visualization, feature engineering, machine learning tools, and some prototyping technologies. The course will focus on class discussions, hands-on demonstrations, and tutorials. Students will be evaluated on their class participation, multiple mini projects, and a final team project.
17-437 Web Application Development
Fall and Spring: 12 units
Note: This course previously offered as 15437. This course will introduce concepts in programming web application servers. We will study the fundamental architectural elements of programming web sites that produce content dynamically. The primary technologies introduced will be the Django framework for Python and Java Servlets, but we will cover related topics as necessary so that students can build significant applications. Such topics include: HTTP, HTML, CSS, Javascript, XML, Design Patterns, Relational and Non-relational Databases, Object-Relation Mapping tools, Security, Web Services, Cloud Deployment, Internationalization, and Scalability and Performance Issues. Students must be comfortable programming in Java and/or Python to register for this course. Students must provide their own computer hardware for this course. Please see the Related URL above for more information.
Prerequisites: 15-214 or 17-214
17-480 API Design and Implementation
Fall: 12 units
This class focuses on the design of programming interfaces, the APIs, within larger real-world software and ecosystems. We discuss the history and importance of APIs, and the principles behind designing good APIs. This includes study of specific examples of APIs, both good and bad, for inspiration and precaution. Students gain experience with the major steps of API design: gathering requirements, documenting, testing, implementing, refining, evolving, and reimplementing APIs. The principles taught are largely language-independent, though most examples are in Java or C. Students may be able to do assignments in other languages, within reason.
Prerequisites: 17-214 or 15-213
17-514 Principles of Software Construction: Objects, Design, and Concurrency
Fall and Spring: 12 units
Software engineers today are less likely to design data structures and algorithms from scratch and more likely to build systems from library and framework components. In this course, students engage with concepts related to the construction of software systems at scale, building on their understanding of the basic building blocks of data structures, algorithms, and program and computer structures. The course covers technical topics in four areas: (1) concepts of design for complex systems, (2) object-oriented programming, (3) static and dynamic analysis for programs, and (4) concurrency. At the conclusion of this course, students will have substantial experience building medium-sized software systems in Java.
Prerequisites: (15-121 Min. grade C or 15-122 Min. grade C) and (21-127 Min. grade C or 15-151 Min. grade C or 21-128 Min. grade C)
17-536 Pervasive and Ubiquitous Computing
Intermittent: 12 units
Note: Previously offered as 08530. The aim of the class will be to explore the area of Ubiquitous Computing (ubicomp) and allow students to work on a variety of small technology projects. Students will be exposed to the basics of building ubicomp systems, emerging new research topics, and advanced prototyping techniques. This course will focus more on class discussions and hands on demonstrations, while formal lectures will be conducted only as needed. Students will be evaluated on their class participation, reading summaries, and mini projects.
17-537 Artificial Intelligence Methods for Social Good
Spring: 9 units
Note: Previously offered as 08-537. The rapid advance in artificial intelligence (AI) has opened up new possibilities of using AI to tackle the most challenging societal problems today. This course brings together a set of advanced AI methods that allow us to address societal challenges and promote social good: 1) Machine Learning: supervised learning, deep learning 2) Game Theory and Mechanism Design: security games, human behavior modeling, scheduling and pricing, citizen science 3) Sequential Decision Making: Markov Decision Processes (MDPs), partially observable MDPs 4) Planning and Optimization: influence maximization, online planning, combinatorial optimization In addition to providing a deep understanding of these methods, the course will introduce which societal challenges they can tackle and how, in the areas of (i)healthcare, (ii)social welfare, (iii)security and privacy, (iv)environmental sustainability. The course will also cover special topics such as AI and Ethics and Safety of AI. Example research projects and social good outcomes can be found at http://aiandsocialgood.org. The course content is designed to not have too much overlap with other AI courses offered at CMU. Although the course is listed within SCS, it should be of interest to students in several other departments, including ECE, EPP, and SDS. The students in this 9-unit course are expected to have taken at least two mathematics courses covering linear algebra and probability. The students will work in groups on a systematic literature review or a project exploring the possibility of applying existing AI tools to a societal problem, with a survey paper or technical report and presentation delivered at the end of the semester. Please see the instructor if you are unsure of whether your background is suitable for the course.
17-562 Law of Computer Technology
Fall: 9 units
NOTE: Previously offered as 08-532. A survey of how legislatures and courts cope with rapidly advancing computer technologies and how scientific information is presented to, and evaluated by, civil authorities. The course is also an introduction to the legal process generally and the interaction between the legal system and technology organizations. Topics include: patents, copyrights in a networked world, law of the Internet, free speech, data security, technology regulation, international law, and trans-border crime. Open to juniors, seniors and graduate students in any school. Open to sophomores by permission of the instructor. Prerequisites: none.
17-615 Software Process Definition
Intermittent: 9 units
A software process definition is the cornerstone of implementing and improving a software process. The objective of this course is to prepare students to understand how processes work within the context of an operational, day-to-day engineering company, and most importantly how they can, as an individual within an engineering environment, change a process for the betterment of all. Although the focus is on software process, this course will be useful to all students who will be executing, improving, or defining most any type of process. An incremental methodology and modular approach to software process definition is used and covers: * guidelines for early success and building a sound foundation * organizing the process definition as it develops * approaches to avoid unnecessarily elaborate or formal notations * developing the process using organizational goals and constraints * using the environmental context that the process resides within and builds upon Although the focus is on software process, this course will be useful to all students who will be executing, improving, or defining most any type of process. Requirement: This course is intended for individuals who have operational software engineering experience or a comprehensive undergraduate coursework in software engineering.
17-619 Introduction to Real-Time Software and Systems
Intermittent: 12 units
Introduction to Real-Time Software and Systems presents an overview of time as it relates engineering complex systems. Any system that responds at the pace of relevant events has real-time constraints whether the timescale is short, like the flight controls for an aircraft, or longer, like the flight reservation system for an airline. Fundamental concepts, terminology, and issues of real-time systems are introduced in this course. The focus is on software solutions to real-time problems-solutions that must be both correct and timely. Software development is examined with emphasis on real-time issues during each phase of the software lifecycle. Real-time requirements analysis, architecting real-time systems, designing and modeling system timing, and implementation and testing strategies are studied. Modeling techniques using UML 2.0 are applied. Particular emphasis is placed on real-time scheduling to achieve desired timing, reliability, and robustness. Languages and operating systems for real-time computing, and real-time problems in concurrent and distributed systems are explored. This course provides a comprehensive view of real-time systems with theory, techniques and methods for the practitioner. After successfully completing this course, the student will be able to identify constraints and understand real-time issues in system development, and propose approaches to typical real-time problems. The aim of this course is to motivate and prepare students to pursue more in-depth study of specific problems in real-time computing and systems development. REQUIREMENT: Proficiency with a high-level programming language such as C or Ada and basic concepts of computing systems. Familiarity with software engineering concepts and system development lifecycle.
17-621 Computational Modeling of Complex Socio-Technical Systems
Intermittent: 12 units
NOTE: Previously offered as 08-621. Social and cultural systems are complex. Whether considering world transforming events such as the Arab Spring or the impact of health care reforms, the interactions among people, technology, and organizations can generate unanticipated outcomes. Computer simulation is a critical methodology for explaining and predicting these events. In this course, the basics of simulation modeling, design, testing and validation are covered. Different simulation approaches are contrasted such as agent-based modeling and system dynamics.
17-635 Software Measurement
Fall: 9 units
Sections D and PP are NOT available for on-campus students. The purpose of this course is to introduce students to software measurement — from need identification through analysis and feedback and into the process. Much of the course material demonstrates concepts of software measurement that are used by managers and practitioners in industry today. The course is taught within the framework of the software engineering process. Required text: Selected Readings handed out in class Requirement: This course is intended for individuals who have industrial software engineering experience with a large project, or a comprehensive undergraduate course in software engineering.
17-643 Hardware for Software Engineers
Intermittent
The goal of this course is to provide an understanding of electronics beyond the average computer organization course. Its purpose is to enable software engineers to be more effective in domains where software and hardware are closely coupled. Examples of such domains include robotics, avionics, automotive, process control, and many others. Students successfully completing this course will be better prepared to communicate with hardware-oriented engineers, understand the hardware environment, and the subtle regions where software and hardware meet. Requirement: Students need not have a hardware background, but they should have a solid computer science background including languages, data structures, discrete math, operating systems, and computer organization. It is highly desirable that students have project experience, preferably real-world experience, although project course work and/or internships will suffice. Undergraduates need instructor approval (lattanze@cs.cmu.edu).
17-648 Engineering Data Intensive Scalable Systems
Intermittent: 12 units
Internet services companies such as Google, Yahoo!, Amazon, and Facebook have pioneered systems that have achieved unprecedented scale while still providing high level availability and a high cost-performance. These systems differ from mainstream high performance systems in fundamental ways. They are data intensive rather than compute intensive as we see with mainstream super computers spending the bulk of their time performing data I/O and manipulation rather than computation. They need to inherently support scalability, typically having high reliability and availability demands as well. Given that they often operate in the commercial space the cost-performance of these systems needs to be such that the organizations dependent on such systems can turn a profit. Designing and building these systems require a specialized set of skills. This course will cover the set of topics needed in order to design and build data intensive scalable systems. In this domain engineers not only need to know how to architect systems that are inherently scalable, but to do so in a way that also supports high availability, reliability, and performance. Given the large distributed nature of these systems basic distributed systems concepts such as consistency and time and synchronization are also important. These systems largely operate around the clock, placing an emphasis on operational concerns. This course will introduce students to these concerns with the intent that they understand the extent to which things like deploying, monitoring, and upgrading impact the design. The course will be a hands-on project oriented course. The basic concepts will be given during the lectures and applied in the project. The students will gain exposure to the core concepts needed to design and build such systems as well as current technologies in this space. Class size will be limited.
17-651 Models of Software Systems
Fall: 12 units
Scientific foundations for software engineering depend on the use of precise, abstract models for describing and reasoning about properties of software systems. This course considers a variety of standard models for representing sequential and concurrent systems, such as state machines, algebras, and traces. It shows how different logics can be used to specify properties of systems, such as functional correctness, deadlock freedom, and internal consistency. Concepts such as compositionality, abstraction, invariants, non-determinism, and inductive definitions are recurrent themes throughout the course. After completing this course, students will: 1. Understand the strengths and weaknesses of certain models and logics including state machines, algebraic and process models, and temporal logic; 2. Be able to select and describe appropriate abstract formal models for certain classes of systems, describe abstraction relations between different levels of description, and reason about the correctness of refinements; 3. Be able to prove elementary properties about systems described by the models introduced in the course; and 4. Understand some of the strengths and weakness of formal automated reasoning tools. Prerequisites: Undergraduate discrete math including first-order logic, sets, functions, relations, and simple proof techniques such as induction. Sections D, PP and G are NOT available for on-campus students. Admission to the class is by approval from the instructor: If you are not MSE/MSIT-SE/MITS, send email to garlan@cs.cmu.edu for permission to enroll. The email should briefly describe your background, whether you have taken an undergraduate discrete math course, and why you would like to take the course. The course must be taken for a letter grade (not pass/fail). This is a graduate level course.
17-652 Methods: Deciding What to Design
Fall: 12 units
Sections D and PP are NOT available for on-campus students. Practical development of software requires an understanding of successful methods for bridging the gap between a problem to be solved and a working software system. In this course you will study a variety of ways of understanding the problem to be solved by the system you're developing and of framing an appropriate solution to that problem. After completing this course, you will be able to: identify different classes of problems and their structures; analyze technical, organizational, usability, business, and marketing constraints on solutions; apply engineering approaches to frame solutions; understand how your understanding of the problem should be reflected in the software design. PREREQUISITE: minimum of 3 months hands-on software development experience in industry. Students not accepted into the MSE program must present a current resume showing relevant industrial experience to department coordinator. This course is offered to only MSE/MITS and MSIT-SE students for fall semester. This course is for graduate students only. This course is for letter grade only (no pass/fail grades). To register for Methods course, you will need a requirement of a minimum of 3 mos hands-on software development experience in industry. Please submit a statement that gives the company, the dates, and a sentence or two about what you were actually doing during that time (i.e. programming, testing, other things actually involved in software development)to jdh@cs.cmu.edu. This is a graduate course. Only undergrad SE minors may take this course.

Course Website: http://spoke.compose.cs.cmu.edu/methods-fall-05/res/bib.htm
17-653 Managing Software Development
Fall: 12 units
Sections D, F, PP and G are NOT available for on-campus students. Large scale software development requires the ability to manage resources - both human and computational - through control of the development process. This course provides the knowledge and skills necessary to lead a project team, understand the relationship of software development to overall product engineering, estimate time and costs, and understand the software process. After completing this course, students will: 1. be able to write a software project management plan, addressing issues of risk analysis, schedule, costs, team organization, resources, and technical approach 2. be able to define the key process areas of the Capability Maturity Model and the technology and practices associated with each and a variety of software development life cycle models and explain the strengths, weaknesses, and applicability of each 3. understand the relationship between software products and overall products (if embedded), or the role of the product in the organizational product line 4. understand the legal issues involved in liability, warranty, patentability, and copyright 5. understand the purpose and limitations of software development standards and be able to apply sensible tailoring where needed 6. be able to use software development standards for documentation and implementation 7. be able to apply leadership principles 8. be able to perform requirements elicitation REQUIREMENT: Students must have had industrial software engineering experience with a large project, or a comprehensive undergraduate course in software engineering. This course is for letter grade only. Contact the instructor (droot@cs.cmu.edu) for permission to join the class. This is a course for graduate students. Only undergrad SE minors may take this course.

Course Website: http://mse.isri.cmu.edu/software-engineering/documents/syllabi/17-653_F15_MSD_Syllabus.pdf
17-654 Analysis of Software Artifacts
Spring: 12 units
Analysis is the systematic examination of an artifact to determine its properties. This course will focus on analysis of software artifacts—primarily code, but also including analysis of designs, architectures, and test suites. We will focus on functional properties, but also cover non-functional properties like performance and security. In order to illustrate core analysis concepts in some depth, the course will center on static program analysis; however, the course will also include a breadth of techniques such as testing, model checking, theorem proving, dynamic analysis, and type systems. The course will balance theoretical discussions with lab exercises in which students will apply the ideas they are learning to real artifacts. After completing this course, students will: * know what kinds of analyses are available and how to use them * understand their scope and power,when they can be applied and what conclusions can be drawn from their results * have a grasp of fundamental notions sufficient to evaluate new kinds of analysis when they are developed * have some experience selecting and writing analyses for a real piece of software, applying them and interpreting the results Ph.D. students taking the 17-754 version of the course will gain a broad overview of the analysis research literature and in-depth knowledge of a particular sub-area through a course project. Requirement: A recent discrete math course and programming experience. Strongly Recommended: Models of SW Development course (17-651) before taking this course. This course is for letter grade only (no pass/fail grades). This is a graduate course. Only undergrad SE minors may take this course with the instructor's permission.

Course Website: http://www-2.cs.cmu.edu/~aldrich/courses/654/
17-655 Architectures for Software Systems
Spring: 12 units
Successful design of complex software systems requires the ability to describe, evaluate, and create systems at an architectural level of abstraction. This course introduces architectural design of complex software systems. The course considers commonly-used software system structures, techniques for designing and implementing these structures, models and formal notations for characterizing and reasoning about architectures, tools for generating specific instances of an architecture, and case studies of actual system architectures. It teaches the skills and background students need to evaluate the architectures of existing systems and to design new systems in principled ways using well-founded architectural paradigms. After completing this course, students will be able to: 1. describe an architecture accurately 2. recognize major architectural styles in existing software systems 3. generate architectural alternatives for a problem and choose among them 4. construct a medium-sized software system that satisfies an architectural specification 5. use existing definitions and development tools to expedite such tasks 6. understand the formal definition of a number of architectures and be able to reason about the properties of those architectures 7. use domain knowledge to specialize an architecture for a particular family of applications REQUIREMENT: Experience with at least one large software system, either through industrial software development experience or an undergraduate course in software engineering, compilers, operating sys., or the like. This course is for letter grade only. Instructor wants each student who wants to take his Architectures class to have worked on a significant software system in your courses or in industry. Write to (garlan@cs.cmu.edu) for admission into the course stating the experience you have had. This is a graduate course. Only undergrad SE minors may take this course
17-685 Dynamic Network Analysis
Spring: 12 units
Who knows who? Who knows what? Who communicates with whom? Who is influential? How do ideas, diseases, and technologies propagate through groups? How do social media, social, knowledge, and technology networks differ? How do these networks evolve? How do network constrain and enable behavior? How can a network be compromised or made resilient? Such questions can be addressed using Network Science. Network Science, a.k.a. social network analysis and link analysis, is a fast-growing interdisciplinary field aimed at understanding simple & high dimensional networks, from both a static and a dynamic perspective. Across an unlimited application space, graph theoretic, statistical, & simulation methodologies are used. An interdisciplinary perspective on network science is provided, with an emphasis on high-dimensional dynamic data. The fundamentals of network science, methods, theories, metrics & confidence estimation, constraints on data collection & bias, and key research findings & challenges are examined. Illustrative networks discussed include social media based (e.g., twitter), disaster response, organizational, semantic, political elite, crises, terror, & P2P networks. Critical procedures covered include: basic centralities and metrics, group and community detection, link inference, network change detection, comparative analytics, and big data techniques. Applications from business, science, art, medicine, forensics, social media & numerous other areas are explored. Key issues addressed: Conceptualization, measurement, comparison & evaluation of networks. Identification of influential nodes and hidden groups. Network emergence, evolution, change & destabilization. Graduate course taught every other year. Prerequisite: Undergraduate-level statistics course or instructor permission. Linear algebra is recommended. Students are encouraged to bring & use their own data, or to use provided data.
17-702 Current Topics in Privacy Seminar
Fall and Spring: 3 units
Note: Previously offered as 08-602. In this seminar course students will discuss recent papers and current public policy issues related to privacy. Privacy professionals from industry, government, and non-profits will deliver several guest lectures each semester.
17-781 Mobile and IoT Computing Services
Spring: 12 units
With over 6 billion mobile phone users worldwide, including well over a billion smart phone users, new wireless and pervasive computing applications and services are changing the way enterprises interact with customers and employees. The explosion in smart phone ownership along with the deployment of 4G networks is leading to a slew of new mobile apps and services. They range from mobile commerce services to wireless enterprise apps and mobile social networking apps, all the way to more futuristic pervasive computing scenarios where phones interact with a number of other everyday objects (e.g. smart homes, smart cars, smart glasses, health/fitness sensors). These apps and services are emerging as part of an increasingly rich ecosystem where context awareness and intelligent predictive technologies are used to offer increasingly personalized experiences to users. This same ecosystem has emerged as the engine behind increasingly targeted marketing and advertising scenarios that also raise challenging privacy issues. The course objective is to introduce participants to the technologies, services and business models associated with Mobile and Pervasive Commerce. It also provides an overview of future trends and ongoing research. You will learn to evaluate critical design tradeoffs associated with different mobile technologies, architectures, interfaces and business models and how they impact the usability, security, privacy and commercial viability of mobile and pervasive computing services and apps. Topics include Mobile Communications, Mobile OS, Mobile Web technologies ­ including app development, Mobile Security, Mobile Payments, Mobile Web Apps and Services (e.g. Mobile Entertainment, Mobile Banking, Mobile, Mobile Social Networking, Mobile Health, etc.), Location-Based Services, RFID, Mobile Enterprise Apps, Pervasive Computing Applications, Context awareness, intelligent assistant technologies, and privacy.
17-801 Dynamic Network Analysis
Spring: 12 units
Note: Previously offered as 08-801. Who knows who? Who knows what? Who communicates with whom? Who is influential? How do ideas, diseases, and technologies propagate through groups? How do social media, social, knowledge, and technology networks differ? How do networks evolve? How do networks constrain and enable behavior? How can a network be destroyed or made resilient? Such questions can be addressed using network science. Network Science, also referred to as social network analysis and link analysis, is an interdisciplinary field aimed at understanding complex behavior using networks. Graph theoretic, statistical and simulation techniques are used. Applications areas are limited only be your imagination. This course covers the basics of network science from an interdisciplinary perspective. Key methods, theories, constraints on data collection, research findings and challenges are examined. Application areas discussed include: social media (e.g. twitter), disaster response, organizational networks, citation networks, semantic networks, political elite networks and crises, terror networks, disease and health networks, nation-state networks, and cyber networks. Methods covered include: basic centralities, group and community detection, link inference, network change detection, comparative analytics and big data techniques. Questions addressed include:How do we conceptualize, measure, compare and evaluate various types of networks? How do we evaluate the impact of policies and technology on networks? What nodes, relations, groups, or motifs stand out or are influential in a network? How do networks emerge, evolve, and change? Prerequisite: Undergraduate-level statistics course or permission of instructor. Linear algebra is recommended but not required. Students are encouraged to bring and use their own data, or to use publicly available network dataset for assignments.

Course Website: http://lorrie.cranor.org/courses/sp04/