Courses

Course Listing

Systems Development for Computational Science

APCOMP 207
2024 Fall

This is a project-based course emphasizing designing, building, testing, maintaining, and modifying software for scientific computing and data sciences. The class is focusing on a thorough introduction of the Python programming language with discussion of core concepts in object-oriented programming as well as essential data structures useful in most programming tasks. Students will work in groups on a semester long project. Students will further learn how to work with SQL databases and how to integrate them in Python using SQLite3 and Pandas. After completion of this course, students will be able to adapt basic tools and techniques to design complex software systems aimed at solving computational and data processing problems in academic and industrial environments.

Course Website

Data Science 1: Introduction to Data Science

APCOMP 209A
2024 Fall

Pavlos Protopapas, Natesh Sivasubramonia Pillai
Monday, Wednesday, Friday
9:00am to 10:15am

Data Science 1 is the first half of a one-year introduction to data science. The course will focus on the analysis of messy, real life data to perform predictions using statistical and machine learning methods. Material covered will integrate the five key facets of an investigation using data: (1) data collection - data wrangling, cleaning, and sampling to get a suitable data set;  (2) data management - accessing data quickly and reliably; (3) exploratory data analysis – generating hypotheses and building intuition; (4) prediction or statistical learning; and (5) communication – summarizing results through visualization, stories, and interpretable summaries. Part one of a two part series. The curriculum for this course builds throughout the academic year. Students are strongly encouraged to enroll in both the fall and spring course within the same academic year. Part one of a two part series.

Course Website

Data Science 2: Advanced Topics in Data Science

APCOMP 209B
2025 Spring

Pavlos Protopapas, Natesh Sivasubramonia Pillai
Monday, Wednesday, Friday
9:00am to 10:15am

Data Science 2 is the second half of a one-year introduction to data science. Building upon the material in Data Science 1, the course introduces advanced methods for statistical modeling, representation, and prediction. Topics include multiple deep learning architectures such as CNNs, RNNs, transformers, language models, autoencoders, and generative models as well as basic Bayesian methods, and unsupervised learning. Students are strongly encouraged to enroll in both the fall and spring course within the same academic year. Part two of a two-part series.

Course Website

Advanced Practical Data Science

APCOMP 215
2024 Fall

Pavlos Protopapas, Ignacio Becker Troncoso
Tuesday, Thursday
12:45pm to 2:00pm

The primary objective of this course is to provide a comprehensive understanding of the Deep Learning process in a practical, real-world context. With a strong emphasis on Machine Learning Operations (MLOps), this course not only reviews existing Deep Learning flows, but also enables students to build, deploy, and manage applications that leverage these models effectively. In the rapidly evolving field of data science, merely creating powerful predictive models is not enough. Efficiently deploying and managing these models in production environments - a practice often referred to as MLOps - has become an essential skill. MLOps bridges the gap between the development of Machine Learning (ML) models and their operation in production settings, combining practices from data science, data engineering and software engineering. This course is built upon the model of balancing conceptual understanding, theoretical knowledge, and hands-on implementation. It introduces students to the iterative process of model development, testing, deployment, monitoring, and updating, ensuring they acquire a strong foundation in MLOps principles.

Course Website

Critical Thinking in Data Science

APCOMP 221
2025 Spring

Michael Smith, Simson Garfinkel
Monday, Wednesday
3:45pm to 5:00pm

This course examines the wide-ranging impact data science has on the world and how to think critically about issues of fairness, privacy, ethics, and bias while building algorithms and predictive models that get deployed in the form of products, policy and scientific research. Topics will include algorithmic accountability and discriminatory algorithms, black box algorithms, data privacy and security, ethical frameworks; and experimental and product design. We will work through case studies in a variety of contexts including media, tech and sharing economy platforms; medicine and public health; data science for social good, and politics. We will look at the underlying machine learning algorithms, statistical models, code and data. Threads of history, philosophy, business models and strategy; and regulatory and policy issues will be woven throughout the course.

Course Website

Computational Science and Engineering Capstone Project

APCOMP 297R
2024 Fall

Weiwei Pan
Wednesday
12:45pm to 3:30pm

The capstone course is intended to provide students with an opportunity to work in groups of 3-4 on a real-world project. Students will develop novel ideas while applying and enhancing skills they have acquired from their core courses and electives. By requiring students to complete a substantial and challenging collaborative project, the capstone course will prepare students for the professional world and ensure that they are trained to conduct research. There will be no additional homework. There will be several mini-lectures, focusing on supplemental skills such as technical writing, public speaking, reading research papers, using version control software, identifying biases, etc. Since the projects concern real-world projects, datasets will likely be messy, and there is a focus on effectively communicating your progress to both the staff and partner organization.

Course Website

Computational Science and Engineering Capstone Project

APCOMP 297R
2025 Spring

Weiwei Pan
Wednesday
12:45pm to 3:30pm

The capstone course is intended to provide students with an opportunity to work in groups of 3-4 on a real-world project. Students will develop novel ideas while applying and enhancing skills they have acquired from their core courses and electives. By requiring students to complete a substantial and challenging collaborative project, the capstone course will prepare students for the professional world and ensure that they are trained to conduct research. There will be no additional homework. There will be several mini-lectures, focusing on supplemental skills such as technical writing, public speaking, reading research papers, using version control software, identifying biases, etc. Since the projects concern real-world projects, datasets will likely be messy, and there is a focus on effectively communicating your progress to both the staff and partner organization.

Course Website

Interdisciplinary Seminar in Applied Computation

APCOMP 298R
2024 Fall

Weiwei Pan
Friday
2:15pm to 3:30pm

This course, centered on the Institute for Applied Computation Science (IACS) seminar series, will provide broad exposure to cutting-edge topics, applications, and unifying concepts in Computational and Data Science. Students will read and discuss journal articles and other material related to IACS talks, attend the seminars and meet with visiting speakers. Possible topics to be covered include computational materials science, computational neuroscience, computer vision and applied machine learning in fields ranging from law to astronomy.

Course Website

Special Topics in Applied Computation

APCOMP 299R
2024 Fall

Daniel Weinstock

Supervision of experimental or theoretical research on acceptable applied computation problems and supervision of reading on topics not covered by regular courses of instruction.

Course Website

Special Topics in Applied Computation

APCOMP 299R
2025 Spring

Daniel Weinstock

Supervision of experimental or theoretical research on acceptable applied computation problems and supervision of reading on topics not covered by regular courses of instruction.

Course Website

Advanced Scientific Computing: Stochastic Methods for Data Analysis, Inference and Optimization

APMTH 207
Fall 2023

Petros Koumoutsakos
T/TH
12:00pm - 1:15pm

The class aims to highlight the process of scientific discovery under uncertainty in the age of data. The class content stresses a unifying approach to data driven modeling and inference through stochastic  simulations, optimization and Bayesian uncertainty quantification. The class projects require transferring an idea to software in multi- and many-core computer architectures.

Course Website

Advanced Scientific Computing: Numerical Methods

APMTH 205
Fall 2023

LLoyd Trefethen
M/W
3:00pm - 4:15pm

Mathematical theory and implementation aspects of well-established numerical algorithms applied in various scientific and engineering disciplines. The course will cover data fitting, numerical linear algebra, numerical differentiation and integration, optimization, and numerical solvers for differential equations. There will be a significant programming component. Students will be expected to implement a range of numerical methods as part of individual and group-based projects. The material is sufficiently diverse to match each student's background and programming skills.

Course Website

High Performance Computing for Science and Engineering

COMPSCI 205
Fall 2023

TBD
T/TH
2:15pm - 3:30pm

With manufacturing processes reaching the limits in terms of transistor density on today’s computing architectures, efficient modern code must exploit parallel execution to maintain scaling of available hardware resources. The use of computers in academia, industry and society is a fundamental tool for solving (scientific) problems while the "think parallel" mindset of code developers is still lagging behind. The aim of this course is to introduce the student to the fundamentals of parallel programming and its relationship on computer architectures. Various forms of parallelism are discussed and exploited through different programming models with focus on shared and distributed memory programming. The learned techniques are tried out by means of homework, lab sessions and a term project.

Course Website