Course Schedule
COURSE SCHEDULE: spring 2025
CS 4-01
Teaching Computer Science

This course will prepare undergraduates to function effectively and efficiently as undergraduate teaching assistants. Through this course, students will learn pedagogical techniques that match learner needs; discuss ethical and social concerns that UTAs face in the course of a semester; and problem solve together issues that arise as teaching assistants. This course is designed in a learner centered model requiring your active and engaged participation. Through your willingness to share your experiences and expertise and your collaboration with your fellow UTA we will together construct meaningful solutions to difficulty situations. Faculty from Computer Science will participate in some of the sessions as co-facilitators. Students will be expected to complete short readings; keep a reflective blog of your learning as a teacher; give a short final presentation on a topic of interest that you want to explore in more depth to help you in your TA class.

Megan Monroe
CS 5-01
Preparing for Career Success

This course is focused on helping Computer Science students prepare for finding roles in the technology industry. It covers topics such as strategic thinking about opportunities, skills assessment, marketing your skills, resume and marketing materials preparation, interview and practice, improving presentation skills, and career networking. Most class sessions will be virtual, with some class meetings in person.

Prerequisite: Students interested in registering for this class should fill out the form emailed to CS and DS students.
Karen Donoghue
T 4:30-6:30p
Eaton Hall 201
CS 10-01
Computer Science for All

Computers are indispensable tools for research. This does not only hold for more technical fields such as physics or chemistry but also for the Humanities and the Social Sciences. While most students are competent users of standard software such as word processing or spreadsheets, the real power of the computer is unleashed when we are able to program it ourselves and make it do exactly what we want it to do.

This course is aimed at people who want to learn how to use computer science to solve basic information processing problems, such as analyzing text data and performing elementary statistics on them. It will cover elementary principles of computer science and will teach the student to independently write their own programs in the computer language Python.

This course is meant for people who have little or no previous experience in computer science. Therefore, in this course we do not assume that the students already know how to write computer programs. However, computer programming is a skill, and learning a new skill takes substantial amounts of effort and time. So the fact that this course is aimed at beginners does not mean that it is easy, or that it will involve less work than our other introduction courses, like e.g. COMP 11. On the contrary, it is very likely the case that this course will involves more effort than other introductory programming courses, if only because the fact that we do not assume any previous experience means that the road to our goal is going to be longer.

IMPORTANT NOTE: Passing this course does NOT fulfill the A&S Mathematics distribution requirement.

Elyse Cornwall
MW 1:30-2:45
Room To Be Announced
CS 11-M1
Introduction to Computer Science

The study of computer science centers on two complementary aspects of the discipline. First, computer science is fundamentally concerned with the problem-solving methodologies it derives from its foundational fields: the design principles of engineering, mathematical theory, and scientific empirical study. Second, these methodologies are applied in the complex context of a modern day computing system. In this course we will address both of these important aspects. As a means for developing your design skills, we will discuss the fundamental features of a high level, general purpose programming language -- namely C++-- and learn how to use it as a tool for problem solving. We will also consider the performance of solutions, and how to apply both analytical and empirical assessment techniques. Finally, we will explore the Unix operating system as a context for problem solving. (Additional 2 hr weekly lab time scheduled at first class meeting.) Recommendations: High school algebra. No prior programming experience is necessary.

Partha Biswas
T 5:30p-7:00p
Online (synchronous)
CS 11-01
Introduction to Computer Science

The study of computer science centers on two complementary aspects of the discipline. First, computer science is fundamentally concerned with the problem-solving methodologies it derives from its foundational fields: the design principles of engineering, mathematical theory, and scientific empirical study. Second, these methodologies are applied in the complex context of a modern day computing system. In this course we will address both of these important aspects. As a means for developing your design skills, we will discuss the fundamental features of a high level, general purpose programming language -- namely C++-- and learn how to use it as a tool for problem solving. We will also consider the performance of solutions, and how to apply both analytical and empirical assessment techniques. Finally, we will explore the Unix operating system as a context for problem solving. (Additional 2 hr weekly lab time scheduled at first class meeting.) Recommendations: High school algebra. No prior programming experience is necessary.

Elyse Cornwall
TR 10:30-11:45
Room To Be Announced
CS 11-02
Introduction to Computer Science

The study of computer science centers on two complementary aspects of the discipline. First, computer science is fundamentally concerned with the problem-solving methodologies it derives from its foundational fields: the design principles of engineering, mathematical theory, and scientific empirical study. Second, these methodologies are applied in the complex context of a modern day computing system. In this course we will address both of these important aspects. As a means for developing your design skills, we will discuss the fundamental features of a high level, general purpose programming language -- namely C++-- and learn how to use it as a tool for problem solving. We will also consider the performance of solutions, and how to apply both analytical and empirical assessment techniques. Finally, we will explore the Unix operating system as a context for problem solving. (Additional 2 hr weekly lab time scheduled at first class meeting.) Recommendations: High school algebra. No prior programming experience is necessary.

Elyse Cornwall
TR 12:00-1:15
Room To Be Announced
CS 14-01
Emerging Scholars in Computer Science

Weekly, peer-led workshops exploring topics in computer science. Emphasis on the collaborative and problem-solving nature of computer science. No prior programming experience is necessary. Students must apply to enroll – see departmental website for details.

Prerequisite: Prerequisite: first year or sophomore standing Corequisite: COMP 10 or COMP 11.
Richard Townsend
CS 15-M1
Data Structures

A second course in computer science. Data structures and algorithms are studied through major programming projects in the C++ programming language. Topics include linked lists, trees, graphs, dynamic storage allocation, and recursion.

Prerequisite: COMP 11 or consent. This course and COMP 50-01 (COMP 50-PSS) may not both be taken for credit.
Christopher Magnano
R 5:30p-7:00p
Online (synchronous)
CS 15-01
Data Structures

A second course in computer science. Data structures and algorithms are studied through major programming projects in the C++ programming language. Topics include linked lists, trees, graphs, dynamic storage allocation, and recursion.

Prerequisite: COMP 11 or consent. This course and COMP 50-01 (COMP 50-PSS) may not both be taken for credit.
Milod Kazerounian
MW 10:30-11:45
Room To Be Announced
CS 15-02
Data Structures

A second course in computer science. Data structures and algorithms are studied through major programming projects in the C++ programming language. Topics include linked lists, trees, graphs, dynamic storage allocation, and recursion.

Prerequisite: COMP 11 or consent. This course and COMP 50-01 (COMP 50-PSS) may not both be taken for credit.
Milod Kazerounian
MW 3:00-4:15
Room To Be Announced
CS 20-01
Web Programming

An introduction to techniques, principles, and practices of writing computer programs for the World Wide Web. Server and browser capabilities and limits. Media types, handlers, and limitations. Web programming languages and techniques. Web security, privacy, and commerce. Lectures augmented with programming projects illustrating concepts and current practice.

Prerequisite: COMP 11; or COMP 10 and consent.
Lisa DiOrio
TR 12:00-1:15
Room To Be Announced
CS 21-01
Concurrent Programming

When we learn to program, we specify problem solutions as a single sequence of computations in a fixed, determined order. But the world isn’t like that. Deer run into the woods, people talk on their phones, it rains. Nothing forces these things to happen one at a time, in a fixed order. They happen concurrently. We want to write concurrent programs, because we want to model the real world, because our computer systems actually have concurrent activities, and also to improve the performance or usability of our programs. The ubiquity of distributed applications and modern, multicore processors makes concurrent programming an essential skill. This course explores different models of concurrent programming: students will gain competence in conventional shared-memory threads programming, and at least one natively concurrent programming model (actors or CSP). Time permitting, we may look at other models. We’ll look at classic problems (like deadlock) and synchronization mechanisms (semaphores, locks, barriers). Students will complete a substantial team programming project using these tools and techniques, and they will present their work to the class.

Prerequisite: CS 15, or graduate/postbac standing
Mark Sheldon
TR 4:30-5:45p
Room To Be Announced
CS 23-01
Game Design

Principles, design, and development of games. Game structure, engineering, physics, testing, 2D and 3D rendering, user interfaces, sound, and animation. Security of online games. Applications of Economics, Music, and Psychology in crafting games. Projects include writing game design documents, developing an interactive fiction game, and building a functional game in a team.

Prerequisite: Recommended: Comp 15.
Jason Wiser
T 6:00p-9:00p
Room To Be Announced
CS 27-01
How Systems Fail

Failure of computer systems within the larger context of complex systems, including the power grid and aviation. Failures of algorithms and protocols, engineering and implementation, systems and applications, people and culture. Attacks, attack recovery, security, privacy, and attribution. Case studies of failures and attacks, including distributed denial of service, Meltdown, Spectre, and spear-phishing attacks.

Prerequisite: COMP 13 or consent of instructor.
Milod Kazerounian
TR 10:30-11:45
Room To Be Announced
CS 28-01
Cyber Security and Cyber Warfare

Interdisciplinary analysis of cybersecurity in the United States and other countries, intended to introduce engineering students to policymaking and intelligence aspects of cybersecurity and liberal arts students to the technical constraints of computer networks and software. Hands-on activities including packet analysis, exploiting a vulnerable system, password cracking, social engineering, reconnaissance, and malware analysis. Examination of state and non-state actors engaged in cyber-espionage, counterintelligence, deterrence, and offensive cyber operations. Guest speakers from private sector, civil liberties groups, and intelligence community.

Prerequisite: PS 61: Introduction to International Relations (for PS and IR majors) or COMP 15: Data Structures (for CS majors in A&S or SOE)
Ming Chow, Jeffrey Taliaferro
TR 1:30-2:45
Room To Be Announced
CS 30-M1
Programming for Data Science

Fundamentals of programming for data-intensive science. Data structures and algorithms for data manipulation, cleaning, and preparation. Design of data manipulation programs. Coding standards and practices. Use and creation of software libraries. Techniques for improving program performance. Examples drawn from data preparation and transformation, statistical data analysis, machine learning, deep learning, and deep data science including recommendation systems and trend analysis.

Alva Couch
W 6:00p-7:30p
Online (synchronous)
CS 40-01
Machine Structure & Assembly-Language Programming

In COMP 40, you will learn about both high-level programming design principles and the low-level structure of computing machines. Design strategies will focus on modularity, abstraction, and separation of interface from implementation. The following topics on machine structure are covered: memory, caches, registers, machine arithmetic, and bitwise operations. We will also investigate the structure of assembly code, relocatable object code, binary machine code, and the translations between them. You will gain a deep understanding of all of these concepts via large-scale, realistic programming projects.

Mandatory lab will be held Fridays: sign up in SIS.

See https://engineering.tufts.edu/cs/current-students/undergraduate/high-demand-enrollment for the form required to get approval to enroll in this class.

Prerequisite: COMP 15.
Noah Mendelsohn, Mark Sheldon
TR 1:30-2:45
Room To Be Announced
CS 61-M1
Discrete Mathematics

(Cross-listed as Mathematics 61.) Sets, relations and functions, logic and methods of proof, combinatorics, graphs and digraphs.

Prerequisite: Math 32 or Computer Science 11 or permission of instructor.
Michael Jahn
T 7:00p-8:30p
Online (synchronous)
CS 61-01
Discrete Mathematics

(Cross-listed as Mathematics 61.) Sets, relations and functions, logic and methods of proof, combinatorics, graphs and digraphs.

Prerequisite: Math 32 or Computer Science 11 or permission of instructor.
Martin Allen
MWF 9:30-10:20
Room To Be Announced
CS 61-02
Discrete Mathematics

(Cross-listed as Mathematics 61.) Sets, relations and functions, logic and methods of proof, combinatorics, graphs and digraphs.

Prerequisite: Math 32 or Computer Science 11 or permission of instructor.
Martin Allen
MWF 10:30-11:20
Room To Be Announced
CS 93-01
Directed Study

Guided study of an approved topic. Credit as arranged.

Prerequisite: Consent.
Members of the Department
CS 98-01
Senior Capstone Project II

Implementation and testing of the project designed in CS 97. Implementation tools, strategies, and platforms. Testing and debugging methodologies. Maintenance and release management. Legal, ethical, and social impacts of computing.

Prerequisite: CS 97
David Lillethun
F 12:00-2:45
Room To Be Announced
CS 99-01
Internship Computer Science

Prerequisite: Consent.
Ming Chow
CS 105-01
Programming Languages

Principles and application of computer programming languages. Emphasizes ideas and techniques most relevant to practitioners, but includes foundations crucial for intellectual rigor: abstract syntax, lambda calculus, type systems, dynamic semantics. Case studies, reinforced by programming exercises. Grounding sufficient to read professional literature.

Prerequisite: COMP 15 (Data Structures) and one semester of Discrete Mathematics (COMP/MATH 22 or 61).
Richard Townsend
MW 3:00-4:15
Room To Be Announced
CS 111-M1
Operating Systems

(Crosslisted as EE 128). Fundamental issues in operating system design. Concurrent processes: synchronization, sharing, deadlock, scheduling. Relevant hardware properties of uniprocessor and multiprocessor computer systems.

Prerequisite: Recommendations: COMP 15 and either CS 40 OR EE 14.
Partha Biswas
T 7:00p-8:30p
Online (synchronous)
CS 111-01
Operating Systems

(Crosslisted as EE 128). Fundamental issues in operating system design. Concurrent processes: synchronization, sharing, deadlock, scheduling. Relevant hardware properties of uniprocessor and multiprocessor computer systems.

Prerequisite: Recommendations: COMP 15 and either CS 40 OR EE 14.
David Lillethun
TR 4:30-5:45p
Joyce Cummings Center 170
CS 114-01
Network Security

Vulnerabilities, attacks, and mitigations at all layers of the network stack. Public and private key cryptography, confidentiality and authentication protocols, botnets, firewalls, intrusion detection systems, and communication privacy and anonymity.

Prerequisite: Prerequisites: Computer Science 15 or graduate standing. Recommendations: Computer Science 40.
Daniel Votipka
TR 12:00-1:15
Room To Be Announced
CS 115-M1
Database Systems

Fundamental concepts of database management systems. Topics include: data models (relational, object-oriented, and others); the SQL query language; implementation techniques of database management systems (storage and index structures, concurrency control, recovery, and query processing); management of unstructured and semistructured data; and scientific data collections.

Prerequisite: COMP 15.
Cody Doucette
T 7:00p-8:30p
Online (synchronous)
CS 115-01
Database Systems

Fundamental concepts of database management systems. Topics include: data models (relational, object-oriented, and others); the SQL query language; implementation techniques of database management systems (storage and index structures, concurrency control, recovery, and query processing); management of unstructured and semistructured data; and scientific data collections.

Prerequisite: COMP 15.
Cody Doucette
M 7:00p-8:30p
Room To Be Announced
CS 116-M1
Introduction to Security

A systems perspective on host-based and network-based computer security. Current vulnerabilities and measures for protecting hosts and networks. Firewalls and intrusion detection systems. Principles illustrated through hands-on programming projects.

Prerequisite: Comp 15.
Ming Chow
W 5:30p-7:00p
Online (synchronous)
CS 116-01
Introduction to Security

A systems perspective on host-based and network-based computer security. Current vulnerabilities and measures for protecting hosts and networks. Firewalls and intrusion detection systems. Principles illustrated through hands-on programming projects.

Prerequisite: Comp 15.
Ming Chow
TR 4:30-5:45p
Room To Be Announced
CS 119-M1
Big Data

"Big Data" deals with techniques for collecting, processing, analyzing and acting on data at internet scale: unprecedented speed, scale, and complexity.

This course introduces the latest techniques and infrastructures developed for big data including parallel and distributed database systems, map-reduce infrastructures, scalable platforms for complex data types, stream processing systems, and cloud-based computing. The course content will be a blend of theory, algorithms and practical (hands on) work.

Prerequisite: A beginning course in databases, familiarity with Python, shell programming, Java, Scala, and SQL.
J Singh
M 5:30p-7:00p
Online (synchronous)
CS 119-01
Big Data

"Big Data" deals with techniques for collecting, processing, analyzing and acting on data at internet scale: unprecedented speed, scale, and complexity.

This course introduces the latest techniques and infrastructures developed for big data including parallel and distributed database systems, map-reduce infrastructures, scalable platforms for complex data types, stream processing systems, and cloud-based computing. The course content will be a blend of theory, algorithms and practical (hands on) work.

Prerequisite: A beginning course in databases, familiarity with Python, shell programming, Java, Scala, and SQL.
J Singh
MW 10:30-11:45
Room To Be Announced
CS 120-M1
Web Programming and Engineering

Web applications are complex systems that deliver a plethora of functionality to a large number of users, and also exhibit unique behaviors and demands in terms of performance, scalability, usability, and security. Web engineering is an emerging and multidisciplinary process that is used to create quality web applications. This course will discuss the limits of current web technologies, the similarities and differences between web and software engineering, design, information and service architectures, content management, and testing disciplines. Frameworks such as Rails, Spring, and Symfony will be emphasized and used. Projects will involve search, cloud computing, location-based services, and mobile web development.

Prerequisite: Comp 15 and Comp 20, or Consent of Instructor.
Lisa DiOrio
T 5:30p-7:00p
Online (synchronous)
CS 121-M1
Software Engineering

Software engineering is an engineered discipline in which the aim is the production of software products, delivered on time and within a set budget, that satisfies the client’s needs. It covers all aspects of software production ranging from the early stage of product concept to design and implementation to post-delivery maintenance. This course covers the major concepts and techniques of software engineering including understanding system requirements, finding appropriate engineering compromises, effective methods of design, coding, and testing, team software development, and the application of engineering tools so that students can prepare for their future careers as software engineers. The course will combine a strong technical focus with a project providing the opportunity to obtain hands-on experiences on entire phases and workflow of the software process.

Prerequisite: COMP 40, graduate standing, or instructor consent.
Staff
W 7:30p-9:00p
Online (synchronous)
CS 122-01
Parallel Computing

(Cross-listed w/ EE 155) Programming modern parallel computer architectures, especially GPUs and multi-core CPUs. Rationale for modern multi-core CPUs. Challenges of multi-threaded programming. High-performance software taking advantage of hardware caches, cache coherency, memory systems and parallel computation.

Prerequisite: Recommendations: EE 126 or COMP 40.
Joel Grodstein
MW 1:30-2:45
Room To Be Announced
CS 125-01
Numerical Analysis

Analysis of algorithms involving computation with real numbers. Interpolation, methods for solving linear and nonlinear systems of equations, numerical integration, methods for ordinary differential equations.

Prerequisite: Recommendations: MATH 51 and programming ability in a language such as C, C++, Fortran, Pascal, or Matlab.
Seulip Lee
MW 1:30-2:45
Joyce Cummings Center 265
CS 131-M1
Artificial Intelligence

History, theory, and computational methods of artificial intelligence. Basic concepts include representation of knowledge and computational methods for reasoning. One or two application areas will be studied, to be selected from expert systems, robotics, computer vision, natural language understanding, and planning.

Prerequisite: Comp 15 and either COMP/MATH 22 or 61 or familiarity with both symbolic logic and basic probability theory.
Fabrizio Santini
M 7:30p-9:00p
Online (synchronous)
CS 131-01
Artificial Intelligence

History, theory, and computational methods of artificial intelligence. Basic concepts include representation of knowledge and computational methods for reasoning. One or two application areas will be studied, to be selected from expert systems, robotics, computer vision, natural language understanding, and planning.

Prerequisite: Comp 15 and either COMP/MATH 22 or 61 or familiarity with both symbolic logic and basic probability theory.
Fabrizio Santini
MW 6:00p-7:15p
Room To Be Announced
CS 132-01
Computer Vision

Introduction to low and intermediate levels of classic and modern Computer Vision. How to design algorithms that process visual scenes to automatically extract information. Fundamental principles and important applications of computer vision, including image formation, processing, detection and matching features, image segmentation, and multiple views. Basics of machine learning and deep learning for computer vision.

Prerequisite: Recommendations: CS 160 and Math 165
Roy Shilkrot
MW 4:30-5:45p
Room To Be Announced
CS 135-M1
Introduction to Machine Learning

An overview of methods whereby computers can learn from data or experience and make decisions accordingly. Topics include supervised learning, unsupervised learning, reinforcement learning, and knowledge extraction from large databases with applications to science, engineering, and medicine.

Prerequisite: Comp 15 and COMP/MATH 22 or 61 or consent of instructor. (Comp 160 is highly recommended).
Christopher Magnano
F 5:30p-7:00p
Online (synchronous)
CS 135-01
Introduction to Machine Learning

An overview of methods whereby computers can learn from data or experience and make decisions accordingly. Topics include supervised learning, unsupervised learning, reinforcement learning, and knowledge extraction from large databases with applications to science, engineering, and medicine.

Prerequisite: Comp 15 and COMP/MATH 22 or 61 or consent of instructor. (Comp 160 is highly recommended).
Michael Hughes
TR 12:00-1:15
Room To Be Announced
CS 138-M1
Reinforcement Learning

"Reinforcement learning problems involve learning what to do — how to map situations to actions — so as to maximize a numerical reward signal." - Sutton and Barto ("Reinforcement Learning: An Introduction", course textbook)

This course will focus on agents that much learn, plan, and act in complex, non-deterministic environments. We will cover the main theory and approaches of Reinforcement Learning (RL), along with common software libraries and packages used to implement and test RL algorithms. The course is a graduate seminar with assigned readings and discussions. The content of the course will be guided in part by the interests of the students. It will cover at least the first several chapters of the course textbook. Beyond that, we will move to more advanced and recent readings from the field (e.g., transfer learning and deep RL) with an aim towards focusing on the practical successes and challenges relating to reinforcement learning.

There will be a programming component to the course in the form of a few short assignments and a final projects.

Approved as a category 2 elective in Data Science (analysis and interfaces).

Prerequisite: Students are expected to be proficient programmers in at least one of the following languages: C++, Java, or Python. Prior coursework (or experience) in Artificial Intelligence and/or Machine Learning is highly recommended, but not required.
Yash Shukla
R 7:00p-8:30p
Online (synchronous)
CS 138-01
Reinforcement Learning

"Reinforcement learning problems involve learning what to do — how to map situations to actions — so as to maximize a numerical reward signal." - Sutton and Barto ("Reinforcement Learning: An Introduction", course textbook)

This course will focus on agents that much learn, plan, and act in complex, non-deterministic environments. We will cover the main theory and approaches of Reinforcement Learning (RL), along with common software libraries and packages used to implement and test RL algorithms. The course is a graduate seminar with assigned readings and discussions. The content of the course will be guided in part by the interests of the students. It will cover at least the first several chapters of the course textbook. Beyond that, we will move to more advanced and recent readings from the field (e.g., transfer learning and deep RL) with an aim towards focusing on the practical successes and challenges relating to reinforcement learning.

There will be a programming component to the course in the form of a few short assignments and a final projects.

Approved as a category 2 elective in Data Science (analysis and interfaces).

Prerequisite: Students are expected to be proficient programmers in at least one of the following languages: C++, Java, or Python. Prior coursework (or experience) in Artificial Intelligence and/or Machine Learning is highly recommended, but not required.
Jivko Sinapov
MW 3:00-4:15
Room To Be Announced
CS 142-01
Network Science

Mathematical foundations of the study of graphs and networks that arise as social, biological and Internet networks. Random graph models, community structure and inference problems, network dynamics, cascading. Example networks drawn from the application domains will be case studies as a companion to the general mathematical theory.

Approved as a category 2 elective in Data Science (analysis and interfaces).

Prerequisite: Recommendations: MATH 70 or 72 or CS 135 or 160
Lenore Cowen
MW 4:30-5:45p
Room To Be Announced
CS 144-01
Iterative Methods in Machine Learning

(Cross-listed as EE 143) Design and analysis of modern machine learning methods with emphasis on convex and nonconvex problems, and centralized, federated, and distributed computational architectures. Topics include convergence, complexities, contractions, fixed point theorems, and perturbation techniques; gradient descent and stochastic gradient descent in addition to accelerated methods including Polyak and Nesterov momentum, minibatching, and variance reduction. State of the practice methods will be covered including Adagrad, Autogard, Adam, sgdm with applications in image classification and document clustering.

Prerequisite: MATH 70 and CS 11
Usman Khan
T 1:30-4:00
Room To Be Announced
CS 150-01
HCI for Disability

This is a graduate-level course for research-oriented students (including seniors and MS students who are considering research careers). Through readings, discussion, and a substantial course project we will explore the variety of ways that the human-computer interaction (HCI) research community has addressed the needs of disabled users, both from the perspective of assistive technology, which develops tech to support disabled people in their daily lives, and from the perspective of accessibility, which considers how disabled people can access computers and computing technologies. We will read and discuss academic papers from the HCI community (especially papers from ASSETS and CHI) in parallel with personal narratives from disabled people themselves and readings from the disability studies literature.

By the end of the course, students will:

  • be familiar with core themes of disability studies and the disability justice movement as they relate to HCI.
  • understand key considerations of HCI research with and for disabled people.
  • be familiar with a variety of papers in HCI relating to accessibility and assistive technology across a wide range of intended user populations.
  • learn to engage critically with the HCI literature from both a technical and disability studies perspective.
  • complete an HCI research project relating to accessibility or assistive technology.
The final grade will be based on performance on the project and project milestones, as well as discussion of readings, including leading discussion. Participation in most class discussions and substantial amounts of reading and writing are key components of this iteration of the class.

Elaine Short
TR 9:00-10:15
Room To Be Announced
CS 150-02
Algorithmic Music Composition

Richard Townsend
MW 10:30-11:45
Room To Be Announced
CS 150-04
Generative AI for Social Impact

Fahad Dogar
MW 10:30-11:45
Room To Be Announced
CS 150-05
Multi-Agent Systems

Reuth Mirsky
TF 12:00-1:15
Room To Be Announced
CS 150-06
MITRE eCTF

MITRE's Capture the Flag challenge

Ming Chow, Steven Bell
CS 150-07
Entrepreneurship for Computer Scientists

(Cross listed with ELS 194-02) 150 ECS is an introductory entrepreneurship course for Computer Science students. The course provides an overview of entrepreneurship, develops an entrepreneurial perspective, and provides a framework for learning the fundamentals of the essential elements of entrepreneurial ventures, specifically directed toward software-related industries and products. Students learn how to develop their technical ideas into potential business opportunities, and to explore their likelihood of becoming viable businesses. They learn how to do market research, to develop go-to-market strategies, value propositions and to differentiate their products or services from actual or potential competitors. The course consists of a balance of lectures, projects, case studies and interaction with entrepreneurs and computer scientists who participate in entrepreneurial organizations.

T 5:15p-8:15p
Room To Be Announced
CS 150-08
Topics in Computational Complexity

In this course we will study the computational complexity in concrete computational models. The main focus will be on various techniques to prove lower and upper bounds on the computational complexity in these models. We will mostly consider decision trees, communication complexity and Boolean circuit complexity. We will also briefly discuss proof complexity and algebraic computation models.

Prerequisite: CS 61 and a course on probability (MATH 165 or EE 104) are required to take this class. MATH 70 and CS 170 are recommended. CS 160 would be helpful.
Vladimir Podolskii
TR 12:00-1:15
Room To Be Announced
CS 151-01
Addressing Cyber Threats, Vulnerabilities

Computer and information security can be understood as a discipline dealing with risk to computer and information systems and the data they process. This class will cover the analysis, assessment, understanding and management of risk and its components (threat, threat actor, vulnerability, impact, likelihood) from a technical perspective as well as a managerial one: • Understanding the concepts of threat, threat actor, vulnerability, likelihood and impact in the context of risk. • Key technical and non-technical threats, vulnerabilities and risks: • Hardware vulnerabilities (e.g. Spectre & Meltdown) and mitigations • Software vulnerabilities (OWASP Top 10) and mitigations • Network and Architecture vulnerabilities and mitigations • Threats, vulnerabilities, and risks related to physical factors, human factors, and human-computer interaction • The real world: where resources are limited and all the above factors interact • Risk in an organizational context • Quantitative and qualitative methodologies (e.g. FAIR, threat modeling) to collect data on, and understand, risk and its components. • How to decide what (and how) to fix or address vulnerabilities, threats, and risks • How to manage threats, vulnerabilities, and risks. How to deal with risks, e.g. how to mitigate technical issues.

Prerequisite: CS 201, CS 203, CS 15, or CS graduate standing
Laurin Weissinger
TR 10:30-11:45
Room To Be Announced
CS 151-02
Cybersecurity Clinic

Students are placed in interdisciplinary teams to work on a cybersecurity project with non-profit organizations in the Medford, Somerville, Cambridge, and Greater Boston communities.

Prerequisite: Department consent required.
Ming Chow
M 5:30p-7:00p
Joyce Cummings Center 402
CS 151-03
Privacy, Security, and Data

Organizations today collect and analyze massive amounts of information for important decision-making applications. However, these large-scale analytics often compromise sensitive user information, such as medical or financial records. In this course, we will survey and apply state of the art techniques in privacy-preserving data science, such as differential privacy and secure multi-party computation, to learn how to build systems that provide useful results while still respecting user privacy. Students will be expected to read research papers, give in-class presentations, and complete a final project utilizing real-world data.

Prerequisite: CS 115-level knowledge; some experience with Python, C++, and basic probability.
Johes Bater
TR 4:30-5:45p
Room To Be Announced
CS 151-04
Anonymous Communications Theory

We know how to communicate a message so that only the recipient can read the message. (We can just encrypt the message.) But how can we communicate over the Internet without anyone learning *who* we are communicating with? Anonymous channels can help the Iranian protester who wishes to inform the world what is happening in the streets of Tehran by tweeting videos and the netizen in Moscow who wants to read the BBC news (currently banned in Russia). We could use Tor (i.e., “The onion router,” inspired by Chaum's onion routing idea) or VPN, but both are easily blocked, and neither guarantees privacy from the adversary with full view of the network traffic (e.g., a standard model for a resourceful ISP- or AS-level adversary). In this course, we present cryptography-style definitions of anonymity and study state-of-the-art techniques for achieving provable anonymity.

Prerequisite: Prerequisites: Math 21 and CS 170 or graduate standing.
Megumi Ando
TR 1:30-2:45
Room To Be Announced
CS 151-05
Quantum Computer Science

The universe at the sub-atomic scale is governed by quantum mechanical laws, which fundamentally differ from classical laws of motion. What is the nature of computation in such scales? Can we use quantum mechanical particles to perform computations? These are the core questions of the field of quantum computing. In this course, we present an elementary-level introduction to the computer science foundations of quantum computing. Topics include Hilbert spaces, quantum entanglement, quantum measurements, quantum circuits, quantum protocols and algorithms, Hamiltonians and the ground state problem, and quantum error-correcting codes. Students from different areas of engineering and sciences, such as computer science, physics, electrical engineering, mathematics, or chemistry, who wish to learn about the computer science foundations of quantum computers can benefit from this class. The main focus of this course is on the theoretical foundations of quantum computing; mathematical enthusiasm and knowledge in areas such as linear algebra, algorithms, discrete mathematics, and calculus are required.

Prerequisite: Math 34 and Math 70 and one of (CS 61 or Math 61 or Math 65)
Saeed Mehraban
MW 1:30-2:45
Room To Be Announced
CS 151-06
Debugging Cloud Computing

Cloud computing, which is the practice of renting software and hardware services from providers who run large-scale data centers, has become critical to modern society. We rely on software running within cloud data centers when shopping (e.g., at Amazon), when conducting financial transactions (e.g., at an online broker), when collaborating at work (e.g., using Google Docs), and even when playing games (e.g., Fortnite). Failures or performance problems within these data centers or the software running on them can have widespread effects and be devastating.

In this course, we will examine failures in cloud environments and discuss important research on tools that use systems knowledge, machine learning, and statistics to help engineers diagnose them. To provide students with necessary background, we will start with a brief introduction to cloud computing and the software systems that make cloud computing possible. The course will involve reading research papers, homework assignments, and coding-based projects. It is recommended for graduate students and advanced upper-level undergraduates.

Prerequisite: CS 15 and CS 40 or graduate standing required; CS 111 recommended.
Raja Sambasivan
MW 4:30-5:45p
Room To Be Announced
CS 151-07
Sustainable Computing

Data centers require enormous amounts of electricity to operate and cool, so understanding sustainable computing practices for improving energy efficiency can significantly reduce environmental impact. This course delves into cutting-edge research in system-level power, energy, and thermal management. We will explore techniques at the operating system, network, and application levels to optimize power consumption and thermal efficiency while maintaining performance and reliability.

Prerequisite: CS 40 or Graduate Standing
Hari Sundar
TR 9:00-10:15
Room To Be Announced
CS 160-M1
Algorithms

Introduction to the study of algorithms. Strategies such as divide-and-conquer, greedy methods, and dynamic programming. Graph algorithms, sorting, searching, integer arithmetic, hashing, and NP-complete problems.

Prerequisite: COMP 15 and COMP/MATH 22 or 61.
Andrew Winslow
W 7:00p-9:00p
Online (synchronous)
CS 160-01
Algorithms

Introduction to the study of algorithms. Strategies such as divide-and-conquer, greedy methods, and dynamic programming. Graph algorithms, sorting, searching, integer arithmetic, hashing, and NP-complete problems.

Prerequisite: COMP 15 and COMP/MATH 22 or 61.
Karen Edwards
MW 9:00-10:15
Room To Be Announced
CS 167-01
Computational Biology

Computational challenges in molecular biology, including sequence alignment and comparison, genomic annotation, micro array data analysis, and proteomics. Underlying computational techniques such as dynamic programming, hidden Markov models, statistical analyses, and search and optimization procedures. Prerequisites: Comp15 and at least one CS course numbered 100 or higher.

Prerequisite: Comp15 and at least one CS course numbered 100 or higher.
Donna Slonim
TR 10:30-11:45
Room To Be Announced
CS 170-M1
Computation Theory

Models of computation: Turing machines, pushdown automata, and finite automata. Grammars and formal languages including context-free languages and regular sets. Important problems including the halting problem and language equivalence theorems.

Prerequisite: COMP 15 and COMP/MATH 22 or 61.
Andrew Winslow
R 5:30p-7:00p
Online (synchronous)
CS 170-01
Computation Theory

Models of computation: Turing machines, pushdown automata, and finite automata. Grammars and formal languages including context-free languages and regular sets. Important problems including the halting problem and language equivalence theorems.

Prerequisite: COMP 15 and COMP/MATH 22 or 61.
Megan Monroe
TR 1:30-2:45
Room To Be Announced
CS 171-01
Human-Computer Interaction

Introduction to human-computer interaction, or how computers communicate with people. Methodology for designing and testing user interfaces, interaction styles (command line, menus, graphical user interfaces, virtual reality), interaction techniques (including use of voice, gesture, eye movement), design guidelines, and user interface management software system. Students will design a small user interface, program a prototype, and test the result for usability.

Prerequisite: COMP 15
Robert J. K. Jacob
MW 1:30-2:45
Room To Be Announced
CS 178-01
Visual Analytics

Visual analytics is the science of combining interactive visual interfaces with automatic data science, machine learning, and AI algorithms to support analytical reasoning. Modern visual analytics tools help users synthesize information and derive insight from large, dynamic, ambiguous, and often conflicting data, and to communicate their findings effectively for decision-making. This course will serve as an introduction to the topic of visual analytics that will include lectures on both theoretical foundations and application methodologies. The goals of this course are for students to: (1) learn about using visual analytics tools (e.g. Tableau), (2) become proficient in generating visualizations within popular data science tools (e.g. R, Python and scikit-learn), (3) develop their own visual analytics tools (in Javascript and D3), and (4) design evaluation methods to assess the effectiveness of these tools.

Remco Chang
TR 1:30-2:45
Room To Be Announced
CS 183-01
Privacy in the Digital Age

This course will provide an introduction to the legal and regulatory protections for personal data and the evolving nature of digital surveillance and online privacy. The class will cover public and private sector threats to privacy and look at how different countries have implemented both privacy protections and surveillance regimes that affect individual Internet users and govern the collection of their personal data. Topics to be covered include encryption policy, law enforcement access to data, intelligence agency access to data, the European General Data Protection Regulation, the Electronic Communications Privacy Act, domestic and international lawful interception of data, protections for geolocation data and other forms of metadata, and facial recognition technology. This course will primarily focus on law and policy measures related to privacy but it will also cover some basic technical material related to cryptography and networking that is relevant to understanding the impacts of different policies.

To Be Announced
MTWRF 12:00a-12:00a
Room To Be Announced
CS 185-01
Computing for Developing Regions

An interdisciplinary approach to the role of computing technologies in developing regions. Low-cost communication infrastructure; socially relevant technologies for education, healthcare, and governance; and the use of technology by underserved communities and populations in developing regions. Problems and existing solutions covered through case studies. Group projects on designing, implementing, and evaluating a solution. Recommendations: CS10 or CS11 or some background in computer science and/or technology.

Prerequisite: Completion of COMP 15 or graduate standing
Fahad Dogar
R 6:30p-9:00p
Room To Be Announced
CS 191-01
Research

Research on a topic in Computer Science or a related discipline, culminating in a final paper describing accomplishments, with the goal of advancing the state of the art. Topic is proposed by a faculty sponsor in Computer Science. Faculty consent required. Students sign up for a section that corresponds to a faculty member.

Prerequisite: Consent
Members of the Department
CS 193-01
Directed Study

Guided study of an approved topic. Credit as arranged.

Prerequisite: Consent.
Members of the Department
CS 193-02
Geometric Folding Algorithms

TBD

Prerequisite: Consent of department
Diane Souvaine
CS 193-03
MS CoreComp

TBD

Prerequisite: Consent of department
Karen Edwards
CS 197-01
Honors Thesis

Honors Thesis Computer Science.

Members of the Department
CS 203-01
How Systems Fail

Failure of computer systems within the larger context of complex systems, including the power grid and aviation. Failures of algorithms and protocols, engineering and implementation, systems and applications, people and culture. Attacks, attack recovery, security, privacy, and attribution. Case studies of failures and attacks, including distributed denial of service, Meltdown, Spectre, and spear-phishing attacks. A recitation and graduate-level assignments are required. Four credit hours.

Prerequisite: Graduate standing in a discipline other than Computer Science, Data Science, Bioinformatics, Cognitive Science, or Human-Robot Interaction.
Milod Kazerounian
TR 10:30-11:45
Room To Be Announced
CS 239-01
Ethics for AI, Robotics, and Human Robot Interaction

Technical challenges of endowing autonomous artificial agents with normative principles that will allow them to operate successfully in human societies. Algorithmic approaches in artificial agents (rule-based, utility-based, behavior-based, etc.) and their links to philosophical foundations of the main ethical theories (virtue ethics, deontology, utilitarianism). Conceptual and mathematical analysis of assumptions underlying each algorithmic approach as well as implementation in agent-based simulations. Functional and performance tradeoffs of the algorithms and their implications for autonomous robots and AI systems. Mathematical and computational challenges of the different proposals for "implicit" and "explicit" ethical agents, including inverse reinforcement learning, verification-based approaches, and model checking.

Prerequisite: CS MS or PhD or DS MS or HRI MS
Vasanth Sarathy
MW 9:00-10:15
Room To Be Announced
CS 260-1
Advanced Algorithms

If you loved your algorithms class and can't wait for more, this is the class for you. In this pleasant and fun class, we will look at some more modern algorithms, some beautiful algorithms gems, and some areas of current research in algorithms. Topics will include using randomness in the design and analysis of algorithms, approximation algorithms, and online algorithms.

Prerequisite: Comp 160 or permission of the instructor.
Lenore Cowen
MW 3:00-4:15
Room To Be Announced
CS 288-M1
Master of Science Capstone Project I

Part one of a two-course, hands-on, and project-based culmination to the Master of Science in Computer Science Online program. Application of principles, strategies, methods, and tools for requirements analysis and design of a programming project, including project planning, project management, and proof of concept prototyping. Formulation of a project plan, including estimation of project completion requirements and timeline. To be taken in the second-to-last term of the Master of Science in Computer Science Online degree. Not available to students outside that program.

Prerequisite: CS 180 or 121, and enrollment in the Master of Science in Computer Science Online program.
Martin Allen
R 6:00p-7:00p
Online (synchronous)
CS 289-M1
Master of Science Capstone Project II

Part two of a two-course, hands-on, project-based culmination experience for the Master of Science in Computer Science Online program. Implementation of the project defined in part one, including use of principles, tools, and strategies for implementation, debugging, testing, documentation, maintenance, and release management. Presentation of final project results and documentation. To be taken in the last term of the Master of Science in Computer Science Online degree. Not available to students outside that program.

Prerequisite: CS 288, and enrollment in the Master of Science in Computer Science Online program.
Martin Allen
R 7:00p-8:00p
Online (synchronous)
CS 291-01
Seminar in Computer Science

A weekly seminar with guest speakers discussing research challenges and recent advances in Computer Science. Pass/fail only. To receive credit, students must attend and provide feedback for at least 50% of the seminars.

Prerequisite: Ph.D. standing in Computer Science
Diane Souvaine, Johnny Redmond
seminar: R 3:00-4:15
Joyce Cummings Center 270
CS 291-02
Seminar in Computer Science

A weekly seminar with guest speakers discussing research challenges and recent advances in Computer Science. Pass/fail only. To receive credit, students must attend and provide feedback for at least 50% of the seminars.

Prerequisite: Ph.D. standing in Computer Science
Jivko Sinapov
seminar: F 1:30-2:30
Robinson Hall 253
CS 293-01
Graduate Special Topics / Master's Project

Guided individual study of an approved topic suitable for a master's design project. Credit to be arranged. Members of the Department.

Prerequisite: Permission of the instructor.
Members of the Department
CS 296-01
Master's Thesis

Guided research on a topic which has been approved as a suitable subject for a master's thesis. Credit as arranged. Supervision and advising by faculty of the Department. Please see the Registrar for appropriate section numbers.

Members of the Department
CS 297-01
Graduate Research

Guided research on a topic suitable for a doctoral dissertation.

Members of the Department
CS 299-01
Internship in Computer Science

Study of approved topics in Computer Science in concert with an internship in computing or a related field outside the University.

Prerequisite: Permission of instructor
Ming Chow
CS 401-PT
Master's Continuation Part-Time

Members of the Department
CS 402-FT
Master's Continuation Full-Time

Members of the Department
CS 404-01
Graduate Engineering Co-op

Alicia Abdulrazzaq
CS 405-TA
Graduate Teaching Assistant

Members of the Department
CS 406-RA
Graduate Research Assistant

Members of the Department
CS 501-PT
Doctoral Continuation Part-Time

Members of the Department
CS 502-FT
Doctoral Continuation Full-Time

Members of the Department
DS 93-01
Directed Study

Directed study, as approved by professor and department.

Members of the Department
DS 98-01
Senior Capstone Project in Data Science II

A continuation of COMP 87. Analysis of the problem proposed in COMP 87 is completed and a final paper summarizes data gathered, analytic results, lessons learned, and opportunities for future study.

Prerequisite: COMP 87
Alva Couch
TR 1:30-2:45
Online (synchronous)
DS 143-01
Data Science for Sustainability

Crosslisted as ME 193. This course explores emerging topics in data science and statistical learning with applications to the three pillars of sustainability (environmental, economic, and social). Students learn to build, estimate, and interpret models that describe phenomena in the broad area of energy and environmental decision-making with an emphasis on social justice. Students leave the course as both critical consumers and responsible producers of data-driven analysis. The objectives of this class include i) learning a suite of data-driven modeling and prediction tools, ii) building the programming and computing expertise to use those tools, and iii) developing the ability to formulate an analysis to answer sustainability questions of interest to industry and/or government partners.

Prerequisite: This course uses Python. Prior experience with statistics and programming is required.
Deborah Sunter
T 1:20-4:20
Bromfield-Pearson 005
DS 143-02
Data Science for Sustainability

Crosslisted as ME 193. This course explores emerging topics in data science and statistical learning with applications to the three pillars of sustainability (environmental, economic, and social). Students learn to build, estimate, and interpret models that describe phenomena in the broad area of energy and environmental decision-making with an emphasis on social justice. Students leave the course as both critical consumers and responsible producers of data-driven analysis. The objectives of this class include i) learning a suite of data-driven modeling and prediction tools, ii) building the programming and computing expertise to use those tools, and iii) developing the ability to formulate an analysis to answer sustainability questions of interest to industry and/or government partners.

Prerequisite: This course uses Python. Prior experience with statistics and programming is required.
Deborah Sunter
M 6:00p-9:00p
Anderson Hall 108
DS 153-02
Computer Vision

This course is an introduction to low and intermediate level Computer Vision. We will learn how to design algorithms that process visual scenes to automatically extract information. The course will cover fundamental principles and important applications of computer vision, including image formation, processing, detection and matching features, image segmentation, and multiple views.

Roy Shilkrot
MW 6:00p-7:15p
Eaton Hall 201
DS 153-03
Generative AI for Social Impact

Prerequisite: Completion of CS 15 or graduate standing.
Fahad Dogar
MW 10:30-11:45
Collaborative Learning and Innovation Complex 401
DS 153-04
Multi-Agent Systems

Prerequisite: Prior completion of CS 131
Reuth Mirsky
TF 12:00-1:15
Tisch Library 316
DS 193-01
Directed Study

Directed study, as approved by professor and department.

Members of the Department
DS 288-M1
Master of Science Capstone Project I

Part one of a two-course, hands-on, and project-based culmination to the Master of Science in Data Science Online program. Application of principles, strategies, methods, and tools of Data Science to analyze data and justify real-world decisions based upon those data. The first term includes creation of a proof of concept prototype of a chosen data analysis project. To be taken in the second-to-last term of the Master of Science in Data Science Online degree.

Martin Allen
T 7:00p-9:00p
Online (synchronous)
DS 289-M1
Master of Science Capstone Project II

Part two of a two-course, hands-on, and project-based culmination to the Master of Science in Data Science Online program. A continuation of the work started in DS 288, culminating in a complete analysis of the problem chosen in DS 288 as well as a final paper describing the analytic process and decisions and/or recommendations indicated by the data. To be taken in the last term of the Master of Science in Data Science Online degree.

Martin Allen
T 8:00p-9:00p
Online (synchronous)
DS 293-01
Masters Project in Data Science

Guided individual study of an approved topic suitable for a master's project in Data Science.

Members of the Department
DS 299-01
Internship In Data Science

Study of approved topics in Computer Science in concert with an internship in computing or a related field outside the University.

Prerequisite: Permission of instructor
Alva Couch
DS 404-01
Graduate Engineering Co-op

Alicia Abdulrazzaq
ES 2-01
Introduction to Computing in Engineering

An introduction to engineering problem-solving with the aid of computational software. Scientific computing concepts will be introduced including number representation, arrays, structured programming techniques, and good coding practices. Basic numerical and data analysis methods will be introduced including numerical differentiation and integration, matrix operations, descriptive statistics, curve fitting, and optimization. Examples drawn from a variety of engineering disciplines will give students extensive practice in coding solutions and applying them to data.

Prerequisite: MATH 32 recommended
Ethan Danahy
MWF 10:30-11:45
Anderson Hall 112