General Information
A student may register for as many of the below courses as they would like, however students cannot repeat a specific section.
CS Workshops are 1 credit, Pass/Fail courses which meet for ~1 hour per week and focus on topics not traditionally covered through typical 4 credit courses. CS Workshop courses do not count toward CS major requirements.
CS Practicum courses are project-focused and are intended for students to apply the knowledge and skills they learn through their foundational coursework. CS Practicum courses must be taken for letter grades.
CS Topics courses are research-focused and are intended for students to develop their depth of knowledge in a specific area of computer science. CS Topics courses must be taken for letter grades.
Fall 2025 CS Topics Course Descriptions
CS 391 P1: Accelerated Probability in Computing
This course satisfies the same CS major and minor requirements as CAS CS 237!
Students who wish to go deeper into the topics of probability should consider taking this course instead of CS237.
Prerequisites: CAS CS 131 with a B+ or better and CAS CS 111; OR consent of the instructor
Content: This course covers fundamental tools from probability necessary to study applications of randomness in computing. Randomness is used in designing efficient algorithms and has numerous applications in computer science. Emphasis on rigorous reasoning, analysis, and algorithmic thinking.
Students can take either CS237 or CS391 P1 but not both.
Instructor: Sofya Raskhodnikova
CS391 A1: Web Application Development (must also enroll in A2, A3, A4, or A5 discussion section)
Prerequisites: CS111, CS112, CS210
Content: Web Application Development is a comprehensive course empowering students to build dynamic web apps. Through hands-on projects, they learn essential code management with Git/GitHub, frontend languages like HTML/CSS, and interactive app development with JavaScript. React is introduced to simplify UI creation and promote code reusability. Students will explore industry-standard tools like Next.js, Vercel, and MongoDB.
Instructor: Prof. Taymaz Davoodi
CS 391 BA/BB: Responsible AI
Prerequisites: Probability (e.g., CS 237 or DS 122), algorithms (e.g., CS 330 or DS 320), and the basics of machine learning (e.g., CS 365 or DS 340). Additional background in AI, machine learning, or statistics is helpful but not required. Students from programs outside CS and DS are welcome but should contact the instructors regarding prerequisites.
Content: Technological advances in how information is generated, collected, managed, and analyzed raise a variety of societal concerns. This course will explore how to use mathematical methods to articulate some of these challenges formally, reason about them rigorously, and design algorithms to mitigate them. Topics include data privacy, fairness in algorithmic learning and decision-making, evaluation and interpretation of complex machine learning models, feedback loops in data-driven systems, and strategic behavior. An emphasis will be placed on understanding the challenges arising from modern machine learning, such as through large language models.
The course, which is aimed at advanced undergraduates in computer science, data science, ECE, or statistics, will engage with both technical components of the problem area (involving programming and theoretical problems) as well as questions in policy and ethics (involving reading, discussing, and writing about papers from those areas).
Instructors: Mark Bun and Adam Smith.
CS391 R1: Computer and Memory Architectures (must also enroll in R2 or R3 discussion section)
Prerequisites: CS350
Content: Want to build a computer processor? This course is a hands-on approach to the design of modern computing and memory architectures, with an emphasis on implementation and quantitative evaluation. Topics include digital logic and arithmetic-logic units (ALU); in-order pipelined central processing unit (CPU) microarchitecture; multi-level cache hierarchies and cache coherence protocols; and multicore processor systems. Additional topics may include advanced memory technologies, bus protocols, and hardware accelerators. The practical laboratory component of the course includes development of modules using a modern hardware description language (HDL), and assignments may include implementing designs on an FPGA.
Course Site: https://sites.google.com/bu.edu/cs391r1-fall2025
Instructor: Sabrina Neuman
CS391 S1 Spark! Software Engineering Immersion (must also enroll in S2 or S3 discussion section)
Prerequisites: CS111, prior knowledge of Python & Javascript helpful
Content: Students will be introduced to all concepts required to work on a modern web development project. This course is intentionally taught with very little prerequisite knowledge to enable students to begin learning these skills earlier in their college path. Students begin by learning basic skills required to build a functioning web application. During the second half of the course, students will be allocated to teams and assigned a project to work on over the course of the semester. Students will submit their final application as their final project on the last day of classes.
Instructors: Michael Levinger, Uwe Meding, Langdon White
CS 392 D2: Competitive Programming II
Prerequisites: CS112, CS131 required (CS330 is recommended) or permission of the instructor.
Content: The second Competitive Programming course is designed for computer science majors and anyone seeking advanced topics covered in programming competitions and technical interviews. It covers advanced programming techniques and data structures with C++, Python, and Java examples. Topics include number theory, probability theory, string processing, square root algorithms, computational geometry, advanced dynamic programming techniques, and graph algorithms. More information can be found on the course website: https://cs-people.bu.edu/januario/teaching/cs392/fa25/
Instructor: Tiago Januario
CS392 E1 – Intermediate Application Development
Prerequisites: CAS CS 112 and CS210; or consent of instructor
Content: Students will model agile software engineering practices used in industry to design and implement data driven applications primarily using C# and the .NET Framework and a front end of their choosing, which can include Angular, React or .NET Maui. The goal is to develop a Novel Final App that can be used to showcase student learning. Final Apps can either be mobile or pc based.
The course will not solely be taught in C#, several other languages will be utilized and compared and contrasted. Students will start by implementing several simple programs, focusing on data driven UI components and event based programming, after which students will be grouped into small teams, collaborating on their Final App.
As the course proceeds students will begin looking at more complex topics including fundamental design patterns, while implementing more complex applications. Topics will include: working with databases, authentication, multithreading, layered exception handling, dependency injection, delegates, lambda expressions and language integrated queries.
As the course proceeds into its second half, students will be required to perform their own research and development as they choose which RESTful 3rd party APIs to incorporate into their final project.
No previous application development experience is required, but creativity and a willingness to perform independent research is required. A strong understanding of object-oriented programming is also required.
This will be a highly interactive, project oriented and team based course. Attendance, participation and collaboration are mandatory and part of your grade.
Instructor: Shereif El-Sheikh
CS392 M1 Rust, in Practice and in Theory
Prerequisites: CS210, CS320
Content: Rust is a type-safe, memory-safe programming language that is becoming a popular alternative to C and C++ in settings where performance and memory usage are major concerns. It’s self-described as having “high-level ergonomics” and “low-level control.” Practically speaking, this means clear, concise code with fewer memory bugs. Theoretically speaking, this means the use of a rich type system based on the notion of linearity to enforce memory-safety before any code has actually been run. Despite its popularity, Rust is still daunting to learn, even for experienced programmers. There are several concepts in Rust that don’t appear in any other popular languages. And even if you become a proficient Rust programmer, it doesn’t mean you have a deep understanding of how Rust works, or why it is a better alternative to other low-level languages. In this course, we’ll spend the first half of the semester learning Rust. This can include topics like borrowing, lifetimes, traits, smart pointers, and concurrency. We’ll spend the second half implementing a subset of Rust. This will help us better understand the details of Rust’s type system and borrow checker.
Instructor: Nathan Mull
CS391 X1: Advanced Data Structures in Java
Prerequisites: CS111 and proficiency in Java. You are expected to be familiar with a text editor (e.g., VIM and EMACS).
Content: This course starts by quickly revisiting and then building upon basic programming concepts in Java. Then, the main focus of the course is on the design, analysis and implementation of fundamental data structures used throughout computer science. These include linked lists, stacks, queues, trees, hash tables, graphs, as well as specialized methods for searching and sorting. All of our implementations will be in the the object-oriented programming language Java. The emphasis in teaching this course centers around the following:
- Developing elegant and efficient code from an abstract specification;
- Literate programming (writing programs that can be read by humans as well as machines);
- Developing a toolbox of advanced data structures for use in your future programming tasks, and an awareness of various design patterns that recur frequently in advanced programming;
- Critical thinking about programs and the programming process, which involves:
4.1. Thinking about the best way to plan out the design using object-oriented design and appropriate features of Java;
4.2. Methodical and efficient development of the implementation using step-wise refinement and incremental testing and debugging (using appropriate debugging tools);
4.3. Being able to convince yourself of the correctness of the implementation by mathematical reasoning;
4.4. Analyzing the running time (efficiency) of programs by inspection and mathematical reasoning; and
4.5. Evaluating the efficiency and correctness of programs empirically, by using various tools in properly designed experiments.
This course is designed as a faster-paced version of CS112; it suits those who have already had considerable experience with programming in general and Java programming in particular.
Instructor: Hongwei Xi
CS501 E1 or E2: Topics in Computer Science: Mobile Application Development
Prerequisites: No previous mobile application development experience is required, but a strong understanding of object-oriented programming
Content: Students will utilize agile software engineering practices in this hands-on course to design and implement mobile applications using Kotlin, JetPack, and the Android SDK. Students will initially implement several small mobile applications utilizing core android technologies, after which students will be grouped into small teams of 2-3, collaborating on a larger final project. Topics will include UI development, navigation, using third party APIs, data persistence, and gestures. Note: Students should register for either the E1 or E2 section other, but not both
Instructor: Ron Czik
CS 599 A1: Programming Massively Parallel Multiprocessors and Heterogeneous Systems
Prerequisites: This course is designed for CS PhD students interested in exploring the programming and optimization of GPU software. You must have a basic understanding of the C/C++ programming language (especially its use of pointers) and an undergraduate level knowledge of computer architecture.
Content: This graduate course aims to provide hands-on experience in developing applications software for graphics processors with massively parallel computing resources. The target audiences of the course are those who want to develop exciting applications for these processors, those who want to develop programming tools and future implementations for these processors, and those who want to understand how to program these devices at the level of C/C++. The initial part
of the course focuses on popular programming interfaces for these processors. The course continues with a closer view of the internal organization of graphics processors and how it impacts performance. Finally, implementations of applications and algorithms on these processors will be discussed. Students will be encouraged to use a problem from their research as the topic of their course project.
Instructor: Jonathan Appavoo
CS 599B1: Networks and Markets
Prerequisites: This course is designed for declared CS and DS majors who are fulfilling 400-level electives. For CS students: CS 112, CS 131, and some knowledge of probability and statistics is required. CS 330 or equivalent is suggested as a co-requisite. For DS students: DS210, DS122 is required. DS320 is suggested as a co-requisite.
While students’ backgrounds will vary, it is expected that students are nearing completion of an undergraduate CS or DS major.
Content: The concept of a network has expanded beyond interconnected machines to encompass diverse applications emphasizing connectedness. Biological networks, social networks, online advertising networks, and networks involving hyperlinks are all examples of domains which now apply the theory and practice of network science. In parallel, online markets have emerged as key facilitators of commercial activity, from early platforms like eBay with online auctions to modern markets such as pay-per-click advertising, prediction markets, and two-sided platforms like Uber and Airbnb. These application domains draw deeply on established methodologies that are familiar to computer scientists, notably graph theory and algorithms. However, they also build on theoretical foundations that are less familiar to most computer scientists, such as auction design, mechanism design, and the theory of matching markets. Finally, many modern technologies integrate both networks and markets, such as information networks and recommender systems.
In this class, we will build upon the undergraduate text of Easley and Kleinberg to learn about the underlying theory of networks and markets, understand how modern-day digital applications connect to these foundations, and conduct our own independent projects to explore an aspect of a digital market more deeply.
Instructor: John Byers
CS 599 E1: Algorithms for Machine Learning
Prerequisites: Strong undergraduate-level knowledge of algorithms, probability, multivariate calculus and linear algebra. It is recommended but not required to have taken a graduate-level algorithms or machine learning course such as CS 530, 531, 537, 542, or 523.
Description: This is a special topics course focused on the design of efficient algorithms for building modern machine learning models at scale. We will aim to cover topics such as adaptive gradient descent algorithms, dimensionality reduction techniques, algorithms for nearest neighbor search and retrieval augmented generation, and algorithms for training and fine-tuning foundational models. The course will emphasize recent algorithmic developments for state of the art deep learning models and highlight directions for future research.
Instructor: Alina Ene
CS599 G1: Advanced Topics in Computer Vision
Content: This is a graduate seminar course in computer vision and machine learning. As part of the course, students will survey and discuss current vision papers relating to advancements made in varied topics like deep-learning based architectures, generative vision models, multimodal learning, 3D vision, fairness and safety, reinforcement learning, and so on. The goals of the course will be to understand current approaches to some important problems, to actively analyze their strengths and weaknesses, and to identify interesting open questions and possible directions for future research. The majority of the course will consist of student presentations, experiments, and paper discussions interspersed with some lectures. Students will be responsible for writing two paper reviews each week, participating in discussions during class, presenting one experiment from assigned papers, presenting an assigned paper in depth, and completing a research-oriented final project with a partner.
Instructor: Deepti Ghadiyaram
CS 599 M1: Interpretable Machine Learning
Prerequisites: CS542 or CS541 or equivalent
Content: AI systems have advanced remarkably in recent years, but they have also grown more opaque. For example, ChatGPT and DeepSeek seem intelligent on the surface, but what have they really learned? Why and how do they make the decisions that they do? The ability to answer questions like these is critical in applications like healthcare or legal systems. This research seminar course explores the field of interpretable machine learning, which seeks to understand the internal computational processes of machine learning models—and sometimes, to precisely control these processes. We will cover foundational and cutting-edge topics, including distributed representations, attribution methods, and the emerging field of mechanistic interpretability. We will also cover open problems, such as interpretability illusions and challenges in evaluation. Students will read and present research papers, lead and participate in discussions on these topics, and conduct an interpretability research project.
Instructor: Aaron
CS 599 P1: Introduction to Quantum Computation
Prerequisite: B+ or higher in CS 132 or MA 242; or permission of instructor.
Content: This course explores the fundamental principles of quantum computation, an emerging area at the intersection of quantum mechanics and computer science. Students will be introduced to key concepts in quantum theory, including superposition and entanglement, and computation, such as circuits and logical gates. The curriculum will cover essential algorithms such as Grover’s and Shor’s, and selected additional topics as time permits.
Designed for beginners, this course requires no prior knowledge of quantum physics or advanced mathematics—making it accessible to graduate students and advanced undergraduates who are curious about the potential of quantum technologies. Nevertheless, a solid background in linear algebra is strongly recommended.
By the end of the course, students will grasp how quantum computers differ from classical ones, and how they can solve complex problems in science, cryptography, and beyond.
Instructor: Alexander Poremba
Archive
Spring 2025 Course Descriptions
CS391 A1: Web Application Development (must also enroll in A2, A3, A4, or A5 discussion section)
Prerequisites: CS111, CS112, CS210
Web Application Development is a comprehensive course empowering students to build dynamic web apps. Through hands-on projects, they learn essential code management with Git/GitHub, frontend languages like HTML/CSS, and interactive app development with JavaScript. React is introduced to simplify UI creation and promote code reusability. Students will explore industry-standard tools like Next.js, Vercel, and MongoDB.
Instructor: Prof. Taymaz Davoodi
CS391 R1: Computer & Memory Architectures (must also enroll in R2 or R3 discussion section)
Prerequisites: CS350
This course covers key concepts concerning the design and operation of modern computing and memory architectures, with an emphasis on hands-on experimentation and evaluation. The course first covers the design of central processing units (CPU), going from single-cycle designs to pipelined architectures. Next, multi-core CPUs are reviewed, along with private caches and cache coherence protocols. The course then dives into the design of high-performance memory subsystems. We, therefore, review modern multi-level cache hierarchies, bus architectures, and protocols. Finally, we study the design of main memory technologies such as DRAM. The course also touches on the interaction between processing units and Input/Output (I/O) devices through modern high-throughput interfaces such as USB and PCI-Express. The practical component of the course will cover the development of hardware modules using System Verilog.
Instructor: Prof. Renato Mancuso
CS391 S1 Spark! Software Engineering Immersion (must also enroll in S2 or S3 discussion section)
Prerequisites: CS111, prior knowledge of Python & Javascript helpful
Students will be introduced to all concepts required to work on a modern web development project. This course is intentionally taught with very little prerequisite knowledge to enable students to begin learning these skills earlier in their college path. Students begin by learning basic skills required to build a functioning web application. During the second half of the course, students will be allocated to teams and assigned a project to work on over the course of the semester. Students will submit their final application as their final project on the last day of classes.
Instructors: Michael Levinger, Uwe Meding, Langdon White
CS391 T1: Algorithms to live by (must also enroll in T2 or T3 discussion section)
Prerequisites: CS112, CS131, CS237
The course will be based on the algorithmic principles described in the popular science book “Algorithms to Live By: The Computer Science of Human Decisions” by Brian Christian and Tom Griffiths. We will cover concepts such as (1) optimal stopping (2) Explore vs. Exploit (3) Sorting and Searching (4) Caching and Memory (5) Game theory and Decision making (6) Handling overwhelm and staying sane. We will discuss the main algorithmic techniques and results related to these concepts and how we can apply them to everyday life.
Instructor: Evimaria Terzi
CS392 C1: Competitive Programming I
**Previously posted as CS392 B1**
Prerequisites: CS111, prior knowledge in C/C++ or Java
This course covers advanced algorithms necessary to compete in the ACM International Collegiate Programming Contest (ICPC) and similar contests. Active involvement in weekly contests is a mandatory component of the course. Topics covered include standard library classes and data structures, competitive programming contest strategies, string manipulation, divide and conquer, dynamic programming, graph algorithms, number theory, computational geometry, and combinatorics.
Professor: Tiago Januario
Course Website: https://cs-people.bu.edu/januario/teaching/CS392/sp25/index.html
CS392 E1: Windows .NET Application Programming with C#
Prerequisites: CAS CS112
Students will utilize agile software engineering practices in this hands-on course to design and implement data driven applications using C# and the .NET Framework. We will start by comparing and contrasting the .NET framework with other frameworks as well as native code, exploring the advantages and drawbacks of running code in managed vs. unmanaged environments. Students will subsequently design and implement several simple C# programs, focusing on data driven UI components and event based programming, after which students will be grouped into small teams, collaborating on a larger final project. As the course proceeds students will begin looking at more complex topics including fundamental design patterns, while implementing more complex applications. Topics will include: reading and writing from files/streams/databases, exception handling, multithreading, memory management, networking, delegates, generics and LINQ. Students will also perform their own research and development as they choose which 3rd party APIs to incorporate into their final project. No previous application development experience is required, but a very strong understanding of object-oriented programming is required. The syntax for C#, Java, and C++ are nearly identical. Students will be expected to leverage their understanding of Java and/or C++ syntax to help pivot to C#. This will be a highly interactive, project oriented and team based course. Attendance, participation and collaboration are mandatory and part of your grade.
Instructor: Shereif El-Sheikh
CS392 M1 Rust, in Practice and in Theory
Prerequisites: CS210, CS320
Rust is a type-safe, memory-safe programming language that is becoming a popular alternative to C and C++ in settings where performance and memory usage are major concerns. It’s self-described as having “high-level ergonomics” and “low-level control.” Practically speaking, this means clear, concise code with fewer memory bugs. Theoretically speaking, this means the use of a rich type system based on the notion of linearity to enforce memory-safety before any code has actually been run. Despite its popularity, Rust is still daunting to learn, even for experienced programmers. There are several concepts in Rust that don’t appear in any other popular languages. And even if you become a proficient Rust programmer, it doesn’t mean you have a deep understanding of how Rust works, or why it is a better alternative to other low-level languages. In this course, we’ll spend the first half of the semester learning Rust. This can include topics like borrowing, lifetimes, traits, smart pointers, and concurrency. We’ll spend the second half implementing a subset of Rust. This will help us better understand the details of Rust’s type system and borrow checker.
Instructor: Nathan Mull
CS392 X1: Modern Compiler Construction in Python
Prerequisites: CS111 and CS320 (or something equivalent to CS320)
Modern Compiler Construction in Python is a course that introduces students to some basics in the design and implementation of compilers. In this course, we teach the theory behind various components of a compiler as well as the programming techniques involved to put the theory into practice. In particular, we adopt a style of modern compiler construction that builds a compiler by stringing a sequence of translations sharing a common closure-based interpreter-like structures. The chosen programming language for implementation is Python 3. However, you can seek the instructor’s approval to choose a functional programming language as your implementation language if you so wish.
Instructor: Prof. Hongwei Xi
CS501 E1 or E2: Topics in Computer Science: Mobile Application Development
Prerequisites: No previous mobile application development experience is required, but a strong understanding of object-oriented programming
Students will utilize agile software engineering practices in this hands-on course to design and implement mobile applications using Kotlin, JetPack, and the Android SDK. Students will initially implement several small mobile applications utilizing core android technologies, after which students will be grouped into small teams of 2-3, collaborating on a larger final project. Topics will include UI development, navigation, using third party APIs, data persistence, and gestures. Note: Students should register for either the E1 or E2 section other, but not both
Instructor: Ron Czik
CS598 G1 Introduction to Information Security (must also enroll in G2 or G3 discussion section
Prerequisites: For graduate students the prerequisite is CS 611 or programming maturity. For undergraduates, the prerequisite is CS210.
Provides basic concepts needed for understanding information security. Discusses vulnerabilities, design principles, basic algorithms, security definitions, and analytical methods. Covers web security, cryptography, networking, network security and data privacy. Also addresses social, ethical, and policy aspects of security.
Instructor: Sharon Goldberg
CS 599 A1: Programming Language Foundations for Concurrency
Prerequisites: CS 210 and CS 320
Software systems around us are getting more and more complex by the day with multi-processor systems, microservices, and distributed programming. At the center of all this complexity lies concurrency, i.e., processes can execute in arbitrary orders and failures (e.g., network faults, node crashes, etc.) are pervasive. Building software systems is no longer straightforward (probably never was) and the issues introduced by concurrency cannot be ignored. This course will study the foundations of where these challenges arise from and will equip students with tools to handle these challenges.
The ultimate goal is for students to build robust concurrent software systems using state-of-the-art PL tools and techniques. This course satisfies both the MS and PhD Software breadth requirement.
Instructor: Prof. Ankush Das
Course Website: https://ankushdas.github.io/CS599.html
CS599 D1: Artificial General Intelligence
Prerequisites: Any one of the following classes or an equivalent courses
- GRS CS 640 Artificial Intelligence
- CAS CS 542 Machine Learning
- CAS CS 585 Image and Video Computing
- CAS CS 505 Introduction to Natural Language Processing
- CAS CS 523: Deep Learning
The Artificial General Intelligence course provides the mathematical foundations and definitions of robust, responsible, and safe AGI systems. The class addresses reasoning, decision-making, consciousness, and intelligence. It covers foundation models, attention mechanisms, optimization, pre-training, fine-tuning, and inference, integration of language, vision, and action, self-supervised methods for alignment and reasoning by reinforcement learning and chain-of-thought training. Topics include video analysis and synthesis, autonomous agents and world models, self and social models, multi-agent systems, collective intelligence, self-improvement, genetic and evolutionary methods, continuous learning, and open exploration. The course emphasizes robustness, safety, and control by examining misuse, risks, and mitigation strategies. It concludes with discussions on applications of AGI and their societal impact in the fields of climate science, education, quantum computing, finance, and robotics. The class covers recent work published in Nature, Science, PNAS, ICLR, NeurIPS, ICML, and AAAI, and commercial AI systems, and is based on the instructor’s new book in progress titled Artificial General Intelligence: Mathematical Foundations with Cambridge University Press.
Professor: Prof. Iddo Drori
CS599 N1: Robot Brains! Designing Computing Systems for Robotics
Prerequisites: Recommended for undergraduates in their junior or senior year, and graduate students. Undergraduates must have taken CS210 or equivalent.
Robots that can safely interact with people can help us in our everyday lives, with applications such as elder care and assistive technologies. Achieving this will require addressing critical challenges including real-time performance; limited power and energy budgets; and strict safety, security, and reliability guarantees. Good news: designing computing hardware and software systems for robotics is a promising solution to this “moonshot” technological goal! In this research seminar class, we will survey current work in the emerging subfield of computing systems for robotics. Students will read academic research papers, lead and participate in class discussions, complete short written response assignments, and collaborate in small groups on a final project. Students from all backgrounds and disciplines are welcome and encouraged– diverse viewpoints and ideas are essential to the success of this fundamentally interdisciplinary new subfield.
Instructor: Sabrina Neuman
CS599 P1: Multimodal Machine Learning (must also enroll in P2-P3 discussion section)
Prerequisites: CS542 (Machine Learning) or equivalent
Many applications of artificial intelligence rely on reasoning about data from many different sources (e.g., images, video, language, sound, infrared, Lidar, etc). This course serves as an introduction to methods that aim at using the fusion of these data sources to accomplish downstream tasks. For example, automatically captioning an image requires reasoning about visual and text data, a robot searching for a person lost in a cave may rely on infrared and sound, and autonomous vehicles may use Lidar and video information. This class will explore machine learning and statistical techniques that aim to understand the relationship between modalities. Students will also learn about some of the common issues that arise when dealing with multiple modalities such as data scarcity, positive-unlabeled learning, structured prediction, and the challenges in evaluating these systems.
Professor: Bryan Plummer
Course site: See link on https://www.bryanplummer.com/
CS599 R1: Sublinear Algorithms
Prerequisites: CS 537 and proficiency in understanding and writing mathematical proofs
This course will cover the design and analysis of algorithms that are restricted to run in sublinear time. Such algorithms are typically randomized and produce only approximate answers. A characteristic feature of sublinear algorithms is that they do not have time to access the entire input. Therefore, input representation and the model for accessing the input play an important role. We will study different models appropriate for sublinear algorithms. The course will cover sublinear algorithms discovered in a variety of areas, including graph theory, algebra, geometry, and discrete mathematics, and introduce many techniques that are applied to analyzing sublinear algorithms.
Professor: Sofya Raskhodnikova
Course site: https://cs-people.bu.edu/sofya/sublinear-course/
CS599 S1: Private Data Analysis, Learning, and Inference
Prerequisites: Probability (CS 537 or equivalent)
How can we learn from a data set of sensitive information while providing meaningful privacy to the individuals whose information it contains? The course explores this question, starting from the problems faced by straightforward solutions and moving on to rigorous state-of-the-art solutions using differential privacy. The class will focus on foundations, but also delve into some applied work and on some of the social, ethical, and legal context for the subject. The coursework involves mathematical and programming assignments, as well as a final course project.
Professor: Adam Smith
Course site: https://dpcourse.github.io/
Fall 2024 Course Descriptions
CS391 A1 – Web Application Development
Prerequisites: CS 111, CS 112, and CS 210
Web Application Development is a comprehensive course empowering students to build dynamic web apps. Through hands-on projects, they learn essential code management with Git/GitHub, frontend languages like HTML/CSS, and interactive app development with JavaScript. React is introduced to simplify UI creation and promote code reusability. Students explore industry-standard tools like Next.js for efficient API handling and Vercel for deployment. MongoDB ensures secure data storage. Advanced topics include React Native with GraphQL/Apollo for mobile app development and React-VR with Three.js for immersive web experiences. Graduates master full-stack development and deployment.
Professor: Taymaz Davoodi
CS599 D1 – Artificial General Intelligence
Prerequisites: Any one of the following courses at Boston University or an equivalent (Principles of Machine Learning CS 542, Artificial Intelligence CS 640, Deep Learning CS 523. Image and Video Computing CS 585, Introduction to Natural Language Processing CS 505)
The Artificial General Intelligence course includes three parts: (1) Decision Making and Con- sciousness, (2) Human Intelligence, and (3) Artificial General Intelligence. The first part covers the elements required for a conscious neural network. Consciousness does not mean intelligence, does not require biology, and only requires combining existing machine learning and AI capabili- ties of: (1) self-report, (2) conversational ability available in language models, (3) domain-general abilities available in a generalist agent, (4) sensory processing available in vision-language trans- formers, (5) the ability to act available in vision-language-action transformers, (6) world models, (7) self models, (8) recurrent processing available in sequence models, (9) a global workspace, and (10) a unified agency. The second part of the class covers human intelligence from a neuroscience perspective, including synaptic transmission, perception, movement, emotion, and motivation. We then describe human development and emergent behavior, followed by the neural mech- anisms of learning, memory, language, and cognition. The third part presents a path toward artificial general intelligence including foundation models including mixture of experts and state space models, multi-agent systems, latent space processing, and their mathematical foundations, quality-diversity, open ended exploration, self-improvement, social models, and safety. Topics covered include pre-training, fine-tuning, and inference of an open source foundation model and agents, AI diversity and open ended exploration, and meta, multi-task, few-shot, continual, and lifelong learning. The class covers recent work published in Nature, Science, PNAS, ICLR, NeurIPS, ICML, and AAAI, and is based on notes for a book in progress titled Artificial General Intelligence: Mathematical Foundations by Iddo Drori, with Cambridge University Press.
Professor: Iddo Drori
CS 599 A1: Rounding Techniques in Approximation Algorithms
Prerequisites: Strong undergraduate-level knowledge of algorithms, linear algebra, and probability. Some familiarity with linear programming and at least one of CS 530, 531, or 537 is recommended but not required. Motivated, mathematically mature undergraduate students who have excelled in CS 237 and CS 330 are also welcome.
Description: We will survey a simple but powerful framework for designing approximation algorithms known as “Relax and Round.” Given a (possibly NP-Hard) discrete optimization problem, this framework first relaxes it into a polynomial time solvable one over a continuous domain. It then solves this easier problem, whose solution can have fractional coordinates: for example, it could assign a variable to be half true and half false in a SAT formula.
In the final step, we round this fractional solution to an integer one. Our goal will be to find a rounding procedure that, like a good translator, finds an integer solution that approximately preserves the key properties of the fractional one such as cost. There are many beautiful methods known for performing this rounding step, which will be our main focus. We will discuss many of them, such as the use of integral polytopes, iterative rounding, iterative relaxation, and independent and dependent randomized rounding. The course will emphasize graph problems as well as results from the past decade with exciting open directions.
Spring 2024 Course Descriptions
CS391 A1 – Web Application Development
Prerequisites: CAS CS 210; or consent of instructor
Web Application Development is a comprehensive course that equips students with practical skills to build dynamic and immersive web applications. Through hands-on exercises and projects, students learn to structure and style web pages using HTML and CSS, create interactive experiences with JavaScript, develop reusable components with React, interact with relational databases using decoupling tools such as ORM and DAO. Additionally, students explore the exciting world of Web-XR, enabling them to build virtual reality experiences with React-VR. By the end of the course, students have the necessary tools and knowledge to develop robust web applications with seamless integration of databases, interactive functionality, and immersive VR experiences. Students are expected to have basic knowledge of OOP principles, coding conventions, and I/O subsystems.
Professor: Taymaz Davoodi
CS392 C1 – Algorithms for Competitive Programming
**Previously posted as CS392 B1**
Prerequisites: CS112 and CS131. Strong performance in CS 112 and CS 131 is expected. An assessment test might be administered in the first week to provide feedback on readiness to take this class.
This course covers essential algorithms necessary to compete in the ACM International Collegiate Programming Contest (ICPC) and similar contests. Active involvement in weekly contests is a mandatory component of the course. Topics covered include standard library classes and data structures, competitive programming contest strategies, string manipulation, divide and conquer, dynamic programming, graph algorithms, number theory, computational geometry, and combinatorics.
Professor: Tiago Januario
CS392 E1 – Intermediate Application Development in C#
Prerequisites: CAS CS 112 and CS210; or consent of instructor
Students will utilize agile software engineering practices in this hands-on course to design and implement data driven applications using C# and the .NET Framework. We will start by comparing and contrasting the .NET framework with other frameworks as well as native code, exploring the advantages and drawbacks of running code in managed vs. unmanaged environments. Students will subsequently design and implement several simple C# programs, focusing on data driven UI components and event based programming, after which students will be grouped into small teams, collaborating on a larger final project.
As the course proceeds students will begin looking at more complex topics including fundamental design patterns, while implementing more complex applications. Topics will include: reading and writing from files/streams/databases, exception handling, multithreading, memory management, networking, delegates, generics and LINQ. Students will also perform their own research and development as they choose which 3rd party APIs to incorporate into their final project.
No previous application development experience is required, but a strong understanding of object-oriented programming is required.
The syntax for C#, Java, and C++ are nearly identical. Students will be expected to leverage their understanding of Java and/or C++ syntax to help pivot to C#.
This will be a highly interactive, project oriented and team based course. Attendance, participation and collaboration are mandatory and part of your grade.
Professor: Shereif El-Sheikh
CS391 S1/S2 – Spark! Software Engineering Immersion
Students will be introduced to all concepts required to work on a modern web development project. This course is intentionally taught with very little prerequisite knowledge to enable students to begin learning these skills earlier in their college path. Students begin by learning basic skills required to build a functioning web application. During the second half of the course, students will be allocated to teams and assigned a project to work on over the course of the semester. Students will submit their final application as their final project on the last day of classes.
Professor: James Kunstle, Langdon White
CS400 A1 – Type Theory and Mechanized Reasoning
**Previously posted as CS491 A1**
Prerequisites: CS131, CS330, CS320 (CS 332 recommended but not required)
Introduction to basic concepts in type theory as it relates to programming languages, mathematics, philosophy, and linguistics. Possible topics include constructive logic, the lambda calculus, simple type theory, polymorphism, type inference, normalization, evaluation, substitution, functional programming, the Curry-Howard isomorphism, dependent type theory, type universes, mechanized mathematics and proof assistants, Kripke semantics and category theoretic semantics, Girard’s paradox.
Professor: Nathan Mull
CS595 T1/T2 Blockchains and their Applications
**Previously posted as CS599 T1/T2**
Prerequisites: One of the following:
A. Students with substantial Computer Science background: graduate or advanced undergraduate students in Computer Science or Computing & Data Sciences
Prerequisites: CAS CS 330 or CDS DS 320 or equivalent, CAS CS 237 or CDS DS 122 or equivalent
B. Business School graduate students (MBA, masters, or PhD) who have also taken at least one course that included substantial hands-on programming in a general-purpose programming language such as Python, Java, C, or JavaScript.
Law School students with a suitable background are also welcome. Exceptions, such as equivalent industry or informal experience, will be considered.
Blockchain technology amalgamates technical tools, economic mechanisms, and system design patterns. It facilitates the construction of information systems with novel combinations of robustness, decentralization, privacy, cost, and flexibility. Beyond their initial use in cryptocurrencies such as Bitcoin, blockchains have become a promising and powerful technology in business, financial services, law, and other areas.
This course covers blockchain technology in a comprehensive, systematic, and interdisciplinary way. It surveys major approaches, variants, and applications of blockchains in these areas. Beyond a solid grasp of the principles, the course aims to build familiarity with practice through numerous case studies and hands-on projects.
To facilitate its interdisciplinary perspective, this course will be open to two categories of students: students with Computer Science background (graduate or advanced undergraduate), and graduate students with a substantial Business or Law background and a working knowledge of computer programming.
Projects will be done in heterogeneous teams combining these categories, and will center on devising and analyzing sample applications of blockchain technology, including both prototype implementations and analysis of its business/legal implications.
Topics covered: disentangling “blockchain”; cryptographic prerequisites; assets and their representations; on-chain programming; state consensus; deployments; decentralized applications (Dapps/Web3); protocol governance; protocol revenue and business models; market structure; privacy and authorization; regulation.
More information can be found at this link.
Notes for Questrom students
1. While this course is explicitly designed to accommodate Questrom students, its formal listing this year is as a Computer Science. Thus, to count as an elective towards Questrom graduate degree requirements, you need to submit aGraduate Elective Request.
2. This is a 4 credit course, unlike Questrom’s usual 3 credits. To avoid extra tuition cost, full-time MBA students can have their tuition cap adjusted by their academic advisor. Professional Evening MBA may contact the instructor for alternative solutions.
Professor: Eran Tromer
CS599 D1 Programming Language Foundations for Concurrency
Prerequisites: CAS CS 320 (Concepts of Programming Languages) or equivalent; CAS CS 210 (Computer Systems) or equivalent; or consent of instructor.This course is aimed at viewing concurrent and distributed software systems from a programmer’s perspective.
We will begin with mathematically defining a programming language using its syntax, type system, and semantics. The course will then cover programming abstractions that are usually used for concurrency, i.e., shared-memory and message-passing. While discussing these abstractions, the course will introduce a variety of type systems and languages that would help us write safe concurrent programs. While discussing these type systems, the course will introduce the unique challenges that concurrency poses to type systems and how they can be addressed. The course will also dive into the deep rooted logical foundations for these type systems via Curry-Howard isomorphism. In this course, students would learn about substructural logics, session types and advanced concepts such as refinement and probabilistic types.
The course would involve a combination of theoretical assignments, fun programming exercises, and paper reading where students would build their own prototypical languages, both in theory and implementation.
More information can be found on the course webpage, linked here.
Professor: Ankush Das
CS 599 G1 Formal Methods in Security and Privacy
Prerequisites: The course has a significant component based on analysis of algorithms, and formal techniques. So, the following are required classes: CAS CS 237 or equivalent; CAS CS 320 or equivalent; CAS CS 330 or equivalent; or consent of instructor. Additionally, some rudimentary understanding of probability and statistics is expected.
Security and privacy breaches are constantly on the news. Often these breaches are due to vulnerabilities in the design and implementations of software components. In this class we will study some of the formal tools that have been developed to formally support the correctness of software with respect to security and privacy requirements. We will focus on a few security and privacy properties such as: information flow control and non-interference, provable security, and differential privacy.
The course consists of a series of lectures on different formalisms that have been developed to reason about security and privacy properties. The basic formalism we will use is the one provided by relational program logics. We will first study a deterministic logic which is useful for reasoning about information flows and non-interference. Then, we will study a probabilistic extension of this logic which supports reasoning about cryptographic security and differential privacy. We will see how different natural proofs from cryptography and differential privacy can be expressed using this formalism. We will also experiment practically with these topics on different examples by using the EasyCrypt tool.
Professor: Marco Gaboardi and Alley Stoughton
CS599 L1 Fine Grained Complexity: An Introduction
Prerequisites: Mathematical maturity, a familiarity with reductions and a familiarity with reductions (e.g. NP hardness reductions) will be expected for this class.
In this course we will introduce fine-grained complexity. Fine-grained complexity studies the constants in the exponents of algorithms. We will give techniques for achieving conditional lower bounds on problems like: diameter, sparse all-pairs shortest paths, longest common subsequence, and more. This class will also cover techniques for worst-case to average case reductions in fine-grained complexity. Mathematical maturity, a familiarity with reductions and a familiarity with reductions (e.g. NP hardness reductions) will be expected for this class.
Professor: Andrea Lincoln
Fall 2023 Course Descriptions
CS392 D1 – Web Application Development
Prerequisites: CAS CS 210; or consent of instructor
Web Application Development is a comprehensive course that equips students with practical skills to build dynamic and immersive web applications. Through hands-on exercises and projects, students learn to structure and style web pages using HTML and CSS, create interactive experiences with JavaScript, develop reusable components with React, interact with relational databases using decoupling tools such as ORM and DAO. Additionally, students explore the exciting world of Web-XR, enabling them to build virtual reality experiences with React-VR. By the end of the course, students have the necessary tools and knowledge to develop robust web applications with seamless integration of databases, interactive functionality, and immersive VR experiences. Students are expected to have basic knowledge of OOP principles, coding conventions, and I/O subsystems.
Professor: Taymaz Davoodi
CS392 E1 – Intermediate Application Development in C#
Prerequisites: CAS CS 112; or consent of instructor
Students will utilize agile software engineering practices in this hands-on course to design and implement data driven applications using C# and the .NET Framework. We will start by comparing and contrasting the .NET framework with other frameworks as well as native code, exploring the advantages and drawbacks of running code in managed vs. unmanaged environments. Students will subsequently design and implement several simple C# programs, focusing on data driven UI components and event based programming, after which students will be grouped into small teams, collaborating on a larger final project.
As the course proceeds students will begin looking at more complex topics including fundamental design patterns, while implementing more complex applications. Topics will include: reading and writing from files/streams/databases, exception handling, multithreading, memory management, networking, delegates, generics and LINQ. Students will also perform their own research and development as they choose which 3rd party APIs to incorporate into their final project.
No previous application development experience is required, but a strong understanding of object-oriented programming is required.
The syntax for C#, Java, and C++ are nearly identical. Students will be expected to leverage their understanding of Java and/or C++ syntax to help pivot to C#.
This will be a highly interactive, project oriented and team based course. Attendance, participation and collaboration are mandatory and part of your grade.
Professor: Shereif El-Sheikh
CS392 S1 – Spark! Software Engineering Immersion
Students will be introduced to all concepts required to work on a modern web development project. This course is intentionally taught with very little prerequisite knowledge to enable students to begin learning these skills earlier in their college path. Students begin by learning basic skills required to build a functioning web application. During the second half of the course, students will be allocated to teams and provided a choice of projects to develop over the course of the semester. Students will submit their final application as their final project on the last day of classes.
Professor: James Kunstle
CS599 C1 – The Meta-Complexity Frontier
Complexity theory studies the cost of solving computational problems using various resources such as time, space, and logic gates. Even after decades of effort, there is a huge gap between what we conjecture about the limits of efficient computation and what we can actually prove. For example, it appears that deciding if a string is “compressible” (MCSP) requires brute-force search, but we cannot (yet) prove this.
This class covers classical and recent “barrier” theorems that explain why it is so difficult to prove lower bounds for computational resource costs. Then, we study emerging connections between meta-mathematics of complexity (provability of theorems) and meta-computational problems like MCSP (existence of algorithms). These modern results offer tantalizing “magnification conditions” — seemingly weak conjectures that, if proven, would immediately imply breakthroughs in complexity theory.
We will explore the inherent tension: either complexity breakthroughs are much closer than they appear or even “weak” lower bounds are inherently difficult to prove. This will prepare students to articulate and work at the research frontier in (meta-)complexity.
Professor: Marco Carmosino
CS599 D1 – Artificial General Intelligence
The Artificial General Intelligence course includes three parts: (1) Decision Making and Consciousness, (2) Human Intelligence, and (3) Artificial General Intelligence. The first part covers the elements required for a conscious neural network. Consciousness does not mean intelligence, does not require biology, and only requires combining existing machine learning and AI capabilities covered in the first part of the class: (1) self-report, (2) conversational ability available in language models, (3) domain-general abilities available in a generalist agent, (4) sensory processing available in vision-language transformers, (5) the ability to act available in vision-language-action transformers, (6) world models, (7) self models, (8) recurrent processing available in sequence models, (9) a global workspace, and (10) a unified agency.
The second part of the class covers human intelligence from a neuroscience perspective, including synaptic transmission, perception, movement, emotion, and motivation. We then describe human development and emergent behavior, followed by the neural mechanisms of learning, memory, language, and cognition.
The third part presents a path toward artificial general intelligence including quality-diversity, open ended exploration, self-improvement and social models. Topics covered include pre-training, fine-tuning, and inference of an open source GPT-4, quality-diversity and open ended exploration, and meta, multi-task, few-shot, continual, and lifelong learning.
Professor: Iddo Drori
CS599 N1 – Robot Brains! Designing Computing Systems for Robotics
Prerequisites: Recommended for undergraduates in their third or fourth year, and graduate students. Undergraduates in their first or second year may join with permission of the instructor.
Robots that can safely interact with people can help us in our everyday lives, with applications such as elder care and assistive technologies. Achieving this will require addressing critical challenges including real-time performance; limited power and energy budgets; and strict safety, security, and reliability guarantees. Good news: designing computing systems for robotics is a promising solution to this “moonshot” technological goal!
In this research seminar class, we will survey current work in the emerging subfield of computing systems for robotics. Students will read academic research papers, lead and participate in class discussions, complete short written response assignments, and collaborate in small groups on a final project. Depending on scope, it is possible that these projects might lead to future academic publications. Students from all backgrounds and disciplines are welcome and encouraged– diverse viewpoints and ideas are essential to the success of this fundamentally interdisciplinary new subfield.
Professor: Sabrina Neuman
Spring 2023 Course Descriptions
CS Practicum
CS 501 E1 & E2 Mobile App Development
Course Description: Students will utilize agile software engineering practices in this hands-on course to design and implement mobile applications using Java and the Android SDK. Students will initially implement several small mobile applications utilizing core android technologies, after which students will be grouped into small groups, collaborating on a larger final project. Topics will include UI development, action bars, multi-touch, gestures, database and file I/O. Students will also learn to make rich applications by consuming location and sensor information from device hardware.
Prerequisites: No previous mobile application development experience is required, but a strong understanding of object-oriented programming and database development (from CS 112 and CS 460 or equivalent) is necessary.
Instructor: Ron Czik
CS Topics
CS 599 S1 Privacy in Statistics and Machine Learning
Course Description: How can we learn from a data set of sensitive information while providing meaningful privacy to the individuals whose information it contains? The course explores this question, starting from the problems faced by straightforward solutions and moving on to rigorous state-of-the-art solutions. The class will focus on foundations, but also delve into some applied work and on some of the social, ethical, and legal context for the subject. Students will be required to complete some mathematical assignments, some programming assignments, and a final course project.
Course Topics: The exact set of topics will evolve as the course proceeds, but a representative list includes:
- Attacks on statistical data privacy
- What does “privacy” mean in learning and statistics?
- Defining privacy: differential privacy and its variants
- Achieving privacy: algorithmic tools for differential privacy
- Legal and ethical frameworks relating to privacy
- Connections to other areas of computer science and statistics
Prerequisites: Students should have a solid grounding in probability (e.g. CS 237/537), linear algebra (e.g. CS 132), multivariate calculus (e.g. MA 225), and algorithms (CS 330). Students should be comfortable reading and writing mathematical proofs involving algorithms and probability. It is strongly recommended that students have taken an additional course in statistics or machine learning beyond CS 237. Programming assignments will be in Python.
Instructor: Adam Smith
Fall 2022 Course Descriptions
CS Practicum
CS 501 E1 & E2 MOBILE APP DEVELOPMENT
Course Description: Students will utilize agile software engineering practices in this hands-on course to design and implement mobile applications using Java and the Android SDK. Students will initially implement several small mobile applications utilizing core android technologies, after which students will be grouped into small groups, collaborating on a larger final project. Topics will include UI development, action bars, multi-touch, gestures, database and file I/O. Students will also learn to make rich applications by consuming location and sensor information from device hardware.
Prerequisites: No previous mobile application development experience is required, but a strong understanding of object-oriented programming and database development (from CS 112 and CS 460 or equivalent) is necessary.
Instructor: Ron Czik
CS 599 L1 – User-Centric Systems for Data Science
Course Description: Understanding the behavior of data systems is hard. Questions like “Why does the system return certain results?” and “Why is the execution slow?” arise too often in large-scale data analysis. Answering such questions is still a cumbersome task that requires considerable amount of resources as well as manual work by experts. The course focuses on algorithmic techniques and design principles that help users get meaningful insights into the functionality of data processing systems. In the first part of the course, we will discuss methods for explaining system outputs, including approaches from databases, recommendation engines, and interpretable ML. In the second part, we will focus on techniques that help users understand system performance. We will discuss traditional and causal profiling, end-to-end tracing, root-cause analysis, and invariant checking techniques.
Prerequisites: Strong programming skills, and basic knowledge of data structures, algorithms and computer systems (CS 111, CS 112, CS 210, or equivalent experience).
Instructor: John Liagouris
CS 599 P1 – Applied Machine Learning
Course Description: Covers practical skills in machine learning including techniques for clustering, classification, regression, feature selection, and model compression. Emphasizes hands-on application of methods via programming on real-world datasets.
Prerequisites: CAS CS 132 or MA 242 (or equivalent); CAS CS237 (or equivalent); CAS CS 111 (CS 112 recommended, or equivalent experience); familiarity with calculus; CAS CS 365 recommended.
Instructor: Bryan Plummer
Spring 2021 Course Descriptions
Undergraduate Only
CS 391 E1 FOUNDATIONS OF DATA SCIENCE *COUNTS TOWARD GROUP D REQUIREMENT FOR CS MAJOR*
Course Description: This course is intended as the first to take for students interested in the aspects of computer science related to data analysis and data management. It specifically serves as a preparation including, but not limited, to the courses CS460, CS506, CS542 and CS565. Course topics will cover data collection, cleaning and visualization. Data modeling and basics of data bases. Mathematical foundations of data science including linear algebra, (multivariate) calculus and convex optimization. Topics in data mining, such as similarity and distance functions, clustering, ranking, networks. Introduction to machine learning. Prediction methods, e.g. regression and common measures.
Instructor: Dora Erdos
Undergraduate and Graduate
CS 501 E1 & E2 MOBILE APP DEVELOPMENT
Course Description: Students will utilize agile software engineering practices in this hands-on course to design and implement mobile applications using Java and the Android SDK. Students will initially implement several small mobile applications utilizing core android technologies, after which students will be grouped into small groups, collaborating on a larger final project. Topics will include UI development, action bars, multi-touch, gestures, database and file I/O. Students will also learn to make rich applications by consuming location and sensor information from device hardware.
Prerequisites: No previous mobile application development experience is required, but a strong understanding of object-oriented programming and database development (from CS 112 and CS 460 or equivalent) is necessary.
Instructor: Shereif El-Sheikh
CS 501 T1 & T2 SPARK! PRACTICUM
CS 501 T1: Spark! Software Engineering Practicum
CS 501 T2: Spark! Machine Learning Practicum
Course Description:
The Spark! Practicum offers computer science students the opportunity to apply their computer science and engineering skills by working on real-world projects. The course offers a range of project options where students can improve their technical skills, while also gaining the “soft skills’ necessary to deliver projects aligned to the partner’s goals. These include teamwork and communications skills and software development processes. All students participating in the course are expected to complete the project including a final presentation to the partner organization.
Prerequisites:
CS 501 T1: CS 411 or equivalent, or instructor’s consent
CS 501 T2: CS 542 or equivalent, or instructor’s consent
Instructor: Dharmesh Tarapore
CS 591 A1 RESEARCH OPERATING SYSTEMS PROCESS MANAGEMENT
Course Description: In this class we will be examining 3 approaches to operating systems principles and mechanisms associated with the construction and management of program execution. Specifically we will consider approaches which advance the role of the OS beyond manager to optimizer: 1) the imposition and exploitation of a state vector representaiton in the context of a hybrid library OS, 2) interrupt level energy tracing an its exploitation for optimization, and 3) systemic integration of signal tracing mechanisms and the exploitation of suffix trees. You must have a solid technical understanding of X86-64 VMM implementation, X86-64 systems assembly programming, device driver and interrupt handling, and an understanding of the Linux address space management subsystem. In addition to these technical skills you should be familiar with the literature from SOSP, OSDI and ASPLOS dealing with library OS structure, deterministic execution, record and replay, and tracing. Further you should have a working knowledge of the literature associated with ASC, EbbRT, and SUESS. MSc and undergraduates require the approval of the instructor to register.
Instructor: Jonathan Appavoo
CS 591 C1 GEOMETRY PROCESSING
Course Description:The need for manipulating and analyzing geometric data, in the form of meshes, point clouds, and polygon soups is ubiquitous in many computing applications: graphics for films and gaming, computational fabrication and design, virtual and augmented reality, to name just a few. This has served as fertile ground for the application of ideas from the mathematical fields of differential geometry and topology. In this course, we will read and discuss research papers in this vein, and students will team up in pairs or triplets to complete a free-form final project that implements or extends some of these works. Topics that may be covered include: mesh parametrization, volumetric deformation, spectral processing, applied optimization, discrete notions of curvature, discrete exterior calculus and vector fields, and surface registration and correspondence. Suggestions from students will also be taken into consideration.
Prerequisites: Course participants should have a strong foundation in linear algebra and calculus (multivariable especially), and a good programming base in order to complete a suitable final project. The basic prerequisites are CS 112, CS 132 or MA 242, and MA 225. Additional background in differential geometry or topology could be quite helpful, but is not necessary, as projects may be tailored towards students’ level of knowledge.
Instructor: Ed Chien
CS 591 G1 FORMAL METHODS FOR SECURITY AND PRIVACY
Course Description: Security and privacy breaches are constantly on the news. Often these breaches are due to vulnerabilities in the design and implementations of software components. In this class we will study some of the formal tools, such as type systems, formal verification techniques, and program analysis, that have been developed to formally support the correctness of software with respect to security and privacy requirements. We will focus on readings about techniques designed to formally support security and privacy properties such as: information flow control, differential privacy, provable security, oblivious data structures, and universal composability.
Prerequisites:CAS CS 237 or equivalent; CAS CS 320 or equivalent; CAS CS 330 or equivalent; or consent of instructor.
Instructor: Marco Gaboardi & Alley Stoughton
CS 591 K1 DATA STREAM PROCESSING & ANALYTICS
Course Description: Modern data-driven applications require continuous, low-latency processing of large-scale, rapid data events such as videos, images, emails, chats, clicks, search queries, financial transactions, traffic records, sensor measurements, etc. Extracting knowledge from these data streams is particularly challenging due to their high speed and massive volume.
Distributed stream processing has recently become highly popular across industry and academia due to its capabilities to both improve established data processing tasks and to facilitate novel applications with real-time requirements. In this course, we will study the design and architecture of modern distributed streaming systems as well as fundamental algorithms for analyzing data streams.
Specifically, we will cover the following topics:
– Distributed streaming systems design and architectures
– Fault-tolerance and processing guarantees
– State management
– Windowing semantics and optimizations
– Basic data stream mining algorithms (e.g. sampling, counting, filtering)
– Query languages and libraries for stream processing (e.g. Complex Event Processing, online machine learning)
– Streaming applications and use-cases
– Modern streaming systems, such as Apache Flink, Kafka, and Beam
Prerequisites: To attend this course, students need to have a solid background on data management and database systems (CS 460/660 or equivalent) and distributed systems (CS 451/651 or equivalent). Programming skills and prior experience with Java and/or Scala are also necessary.
Instructor: Vasiliki Kalavri
CS 591 P1 MULTIMODAL MACHINE LEARNING
Course Description: Many applications of artificial intelligence rely on reasoning about data from many different sources (e.g., images, video, language, sound, infrared, Lidar, etc). This course serves as an introduction to methods that aim at using the fusion of these data sources to accomplish some downstream task. For example, automatically captioning an image requires reasoning about visual and text data, a robot searching for a person lost in a cave may rely on infrared and sound, and autonomous vehicles may use Lidar and video information. This class will explore machine learning and statistical techniques that aim to understand the relationship between modalities. Students will also learn about some of the common issues that arise when dealing with multiple modalities such as data scarcity, positive-unlabeled learning, structured prediction, and the challenges in evaluating these systems.
Prerequisites: CS542 (Machine Learning) or equivalent, or consent of instructor. In addition, CS 591 Deep Learning and CS 507 Intro to Optimization are recommended. Students should also be comfortable reading and discussing current research papers.
Instructor: Bryan Plummer
CS 591 S1 PRIVATE DATA ANALYSIS
Course Description: How can we analyze sensitive data sets—computing useful summaries, training accurate learning models, and drawing valid inference—without endangering the privacy of the individuals whose data we are processing? The course will take a rigorous approach to the problem, covering attacks on privacy, current definitional approaches, and state of the art algorithms. The course will mostly focus on “differential privacy”, an emerging standard for private data analysis.
Prerequisites: Undergraduate-level background in algorithms (CS330), graduate-level background in probability (e.g. CS537 or similar). Graduate-level background in statistics or stochastic processes is acceptable; please consult instructor.
Instructor: Adam Smith
CS 591 S2 FAIRNESS, ACCOUNTABILITY, AND TRANSPARENCY IN AI
Course Description: Enabling the responsible development of artificial intelligence technologies is one of the major challenges we face as the field moves from research to practice. Researchers and practitioners from different disciplines have highlighted the ethical and legal challenges posed by the use of machine learning in many current and future real-world applications. Now there are calls from across the industry (academia, government, and industry leaders) for technology creators to ensure that AI is used only in ways that benefit people and “to engineer responsibility into the very fabric of the technology.” Overcoming these challenges and enabling responsible development is essential to ensure a future where AI and machine learning can be widely used across different domains. This course will pursue a cross-disciplinary investigation of several areas under the responsible AI umbrella (fairness, interpretability, and accountability). Students will learn about state-of-the-art research and best practices in the covered domains and use available open-source fairness and interpretability toolkits to apply their learnings to publicly available datasets from healthcare, finance, and other domains.
Prerequisites: Graduate standing or permission of instructor. Intermediate knowledge of machine learning algorithms. Intermediate knowledge of machine learning and programming and experience with a high-level programming language (i.e. Java, C++, Python), data structures and basic algorithms.
Instructor: Mehrnoosh Sameki
Graduate Only
GRS CS 791 N1 APPLIED MACHINE LEARNING FOR PUBLIC HEALTH
Course Description: Machine learning (ML) methods are being used in the analysis of data (e.g., text, image, sound, video and biological data) to understand disease and health trends, and to improve individual and population health. The goal of this course is to provide students with prior knowledge of ML techniques with the opportunity to gain hands-on experience working on a data analysis project. Throughout the semester, students will work in groups to apply ML to solve a specific problem submitted by one of our research partners. Weekly lectures will focus on exposing students to (a) applications of ML to public health problems, (b) openly available computational resources, and (c) ongoing research by experts working in ML and health. The course is open to both Masters and PhD students.
Prerequisites: Completion of CS 542 (Machine Learning) or a similar course or permission of the instructor.
Instructor: Elaine Nsoesie, Assistant Professor of Global Health, School of Public Health
Fall 2020 Course Descriptions
Undergraduate Only
CS 391 G1 Introduction to Information Security *counts toward Group D requirement for CS Major*
Course Description: Provides basic concepts needed for understanding information security. Discusses vulnerabilities, concerns, design principles, basic algorithms, and analytical methods. Covers system, network, and application security, as well as introductions to cryptography and data privacy. Social, legal and political aspects of security are also addressed. This class aims to be a first course in information security, and is a gateway to all other security and cryptography course offerings.
Prerequisites: CS 210 and one Group B course (CS 132, CS 235, or CS 237)
Instructor: Sharon Goldberg
CS 391 T1 Foundations of Data Science *counts toward Group D requirement for CS Major*
Course Description:
Instructor: Evimaria Terzi
Undergraduate and Graduate
CS 501 T1 & T2 Spark! Practicum
CS 501 T1: Spark! Software Engineering Practicum
CS 501 T2: Spark! Machine Learning Practicum
Course Description:
The Spark! Practicum offers computer science students the opportunity to apply their computer science and engineering skills by working on real-world projects. The course offers a range of project options where students can improve their technical skills, while also gaining the “soft skills’ necessary to deliver projects aligned to the partner’s goals. These include teamwork and communications skills and software development processes. All students participating in the course are expected to complete the project including a final presentation to the partner organization.
Prerequisites:
CS 501 T1: CS 411 or equivalent, or instructor’s consent
CS 501 T2: CS 542 or equivalent, or instructor’s consent
Instructor: Dharmesh Tarapore
CS 591 A1 Parallel Computing and Programming
Course Description: This course is an introduction to the theory, techniques, and practices of parallel computing. We will begin by exploring the principle models of parallel computation, such as shared-memory, threads, thread pools, pipelines, and message passing, as well as the challenges these approaches pose, and known methods for addressing them. Next, we will consider various systems and settings that support parallel computation, from multicore architectures and other hardware devices to distributed systems. Finally, we will get acquainted with what parallel programming allows us to do: the design and analysis of distinctively parallel algorithms, their benefits, and their limitations. Students will prepare programming exercises, including the simulation of distributed systems, as well as a team-based final project. Students will need to have, or to acquire, an acquaintance with C++ and Python for this course.
Prerequisites: Systems Programming (CS 210 or equivalent), Data Structures and Algorithms (CS 112 or equivalent), Design and Analysis of Algorithms (CS 330 or equivalent).
Instructor: Amittai Aviram
CS 591 B2 Networks & Markets: Theory & Application
Course Description: Recently, the concept of a network has outgrown the narrower engineering mindset of a collection of interconnected machines to become more broadly relevant in a variety of applied settings which feature connectedness. Biological networks, social networks, online advertising networks, and networks involving hyperlinks, i.e., the WWW, are all examples of domains in which the theory and practice of networking science has now being applied. In parallel with this trend is the rise of online markets as a mediation point for commercial activity. Beginning with the advent of Internet platforms like eBay that employ online auctions, are many fascinating new markets: pay-per-click advertising markets, prediction markets, and two-sided platforms such as Uber and Airbnb. All of these application domains draw deeply on established methodologies that are highly familiar to computer scientists, notably graph theory and algorithms. However, they also build on theoretical foundations that is often unfamiliar territory to computer scientists, such as auction design, mechanism design, and the theory of matching markets. Finally, many important new technologies incorporate a mix of networks and markets, including information networks and recommender systems. In this class, we will build on the highly successful undergraduate text of Easley and Kleinberg to learn about the underlying theory of networks and markets, understand how modern-day digital applications connect to these foundations, and conduct our own independent projects to explore an aspect of a digital market more deeply.
In this class, we will consider networks and markets from a broad and inter-disciplinary perspective, drawing primarily from insights from the Computer Science, Economics, and Marketing communities. This course is designed for students who are potentially interested in either pursuing a career in or conducting research related to online networked platforms. Please note that this course is not about entrepreneurship per se, but will provide useful background for prospective entrepreneurs. The capstone project of the course will be a research effort, conducted by teams of two or three, in which students conduct a quantitative measurement-driven analysis of a computational aspect of an e-commerce firm or of consumer behavior with respect to an e-commerce marketplace.
Prerequisites: This course is designed for declared CS majors who are fulfilling 400-level electives, as well as Masters students and entering Ph.D. students. CS 112, CS 131, and some knowledge of probability and statistics is required. CS 330 is suggested as a co-requisite. While students’ backgrounds will vary, it is expected that students are nearing completion of an undergraduate CS major or are beginning their graduate studies. Seniors who are not CS majors should seek the instructor’s permission to enroll.
Instructor: John Byers
CS 591 E1 & E2 Mobile App Development
Course Description: Students will utilize agile software engineering practices in this hands-on course to design and implement mobile applications using Java and the Android SDK. Students will initially implement several small mobile applications utilizing core android technologies, after which students will be grouped into small groups, collaborating on a larger final project. Topics will include UI development, action bars, multi-touch, gestures, database and file I/O. Students will also learn to make rich applications by consuming location and sensor information from device hardware.
Prerequisites: No previous mobile application development experience is required, but a strong understanding of object-oriented programming and database development (from CS 112 and CS 460 or equivalent) is necessary.
Instructor: Shereif El-Sheikh
CS 591 L1 User-Centric Systems for Data Science
Course Description: Understanding the behavior of data systems is hard. Questions like “Why does the system return certain results?” and “Why is the execution slow?” arise too often in large-scale data analysis. Answering such questions is still a cumbersome task that requires considerable amount of resources as well as manual work by experts.
The course focuses on algorithmic techniques and design principles that help users get meaningful insights into the functionality of data processing systems. In the first part of the course, we will discuss methods for explaining system outputs, including approaches from databases, recommendation engines, and interpretable ML.
In the second part, we will focus on techniques that help users understand system performance. We will discuss traditional and causal profiling, end-to-end tracing, root-cause analysis, and invariant checking techniques.
The course website can be found here.
Prerequisites: Strong programming skills, and basic knowledge of data structures, algorithms and computer systems (CS 111, CS 112, CS 210, or equivalent experience).
Instructor: John Liagouris
CS 591 R1 Sublinear Algorithms
Course Description: This course will cover the design and analysis of algorithms that are restricted to run in sublinear time. Such algorithms are typically randomized and produce only approximate answers. A characteristic feature of sublinear algorithms is that they do not have time to access the entire input. Therefore, input representation and the model for accessing the input play an important role. We will study different models appropriate for sublinear algorithms. The course will cover sublinear algorithms discovered in a variety of areas, including graph theory, algebra, geometry, image analysis and discrete mathematics, and introduce many techniques that are applied to analyzing sublinear algorithms. We will learn techniques for analyzing randomized algorithms and proving lower bounds on their complexity.
Prerequisites: A course on randomness in computing (equivalent to CS 237 or CS 537) and on algorithm design and analysis (equivalent ot CS 330). You need to be comfortable with mathematical proofs. Most of the assignments in this course require proving some statement and some creativity in finding the proof will be necessary.
Instructor: Sofya Raskhodnikova
CS 591 S1 Fairness, Accountability, and Transparency in AI
Course Description: Enabling the responsible development of artificial intelligence technologies is one of the major challenges we face as the field moves from research to practice. Researchers and practitioners from different disciplines have highlighted the ethical and legal challenges posed by the use of machine learning in many current and future real-world applications. Now there are calls from across the industry (academia, government, and industry leaders) for technology creators to ensure that AI is used only in ways that benefit people and “to engineer responsibility into the very fabric of the technology.” Overcoming these challenges and enabling responsible development is essential to ensure a future where AI and machine learning can be widely used across different domains. This course will pursue a cross-disciplinary investigation of several areas under the responsible AI umbrella (fairness, interpretability, and accountability). Students will learn about state-of-the-art research and best practices in the covered domains and use available open-source fairness and interpretability toolkits to apply their learnings to publicly available datasets from healthcare, finance, and other domains.
Prerequisites: Graduate standing or permission of instructor. Intermediate knowledge of machine learning algorithms. Intermediate knowledge of machine learning and programming and experience with a high-level programming language (i.e. Java, C++, Python), data structures and basic algorithms.
Instructor: Mehrnoosh Sameki
CS 591 W1 Towards Universal Natural Language Understanding
Course Description: Current human language technology systems exist primarily for languages where there is a high demand or widespread use. Given that there are thousands of languages in the world where neither annotated data nor existing technology exists, the quest for universal human language technology coverage remains. In this course, we will explore the challenges and ways to extend state-of-the-art machine learning algorithms to problems that involve natural language data for low resource languages for which no automated human language technology capability exists. We will discuss if the barrier to building universal natural language understanding is simply the lack of annotated data or if there is a need for new representations or algorithms for language understanding that can extend to many languages without large training data. This is a research-oriented course on statistical natural language processing (NLP). The course will focus on understanding and extending state-of-the-art machine learning algorithms to problems such as information extraction, named entity recognition, machine translation, and related tasks involving natural language data for many languages. This course involves two primary activities: (1) reading and discussing current research papers and (2) developing a novel approach to extend a past NLP research to problems under low resource settings. It assumes background in basic machine learning. Prior NLP experience is helpful, but not required.
Prerequisites: CAS CS 542 – Machine Learning or equivalent or consent of instructor
Instructor: Derry Wijaya