Courses

The core curriculum is equally balanced between computer science, applied math and statistics. Students learn the tools for parallel programming, stochastic optimization and numerical modeling. Elective topics range from machine learning and data science to computational economics or computational biology. Project-based courses provide students with practical experience in collaborative problem solving.

Many students take electives in Applied Computation (AC), a category of courses developed by IACS which apply the methods of computational science and engineering to a domain or class of problems:

AC 209a: Data Science 1: Introduction to Data Science
AC 209b: Data Science 2: Advanced Topics in Data Science
AC 221: Critical Thinking and Data Science
AC 227: Computational Physics
AC 290: Extreme Computing 
AC 297r: Capstone Project Course
AC 298r: Interdisciplinary Seminar in Computational Science and Engineering
AC 299r: Special Topics in Applied Computation

CSE Core Courses

Applied Math 205 - Advanced Scientific Computing: Numerical Methods

An examination of the mathematical foundations of a range of well-established numerical algorithms, exploring their use through practical examples drawn from a range of scientific and engineering disciplines. Emphasizes theory and numerical analysis to elucidate the concepts that underpin each algorithm. There will be a significant programming component. Students will be expected to implement a range of numerical methods through individual and group-based project work to get hands-on experience with modern scientific computing.

Applied Math 207 - Advanced Scientific Computing: Stochastic Methods for Data Analysis, Inference and Optimization

Develops skills for computational research with focus on stochastic approaches, emphasizing implementation and examples. Stochastic methods make it feasible to tackle very diverse problems when the solution space is too large to explore systematically, or when microscopic rules are known, but not the macroscopic behavior of a complex system. Methods will be illustrated with examples from a wide variety of fields, like biology, finance, and physics.

Computer Science 205 - Computing Foundations for Computational Science

Computational science has become a third partner, together with theory and experimentation, in advancing scientific knowledge and practice, and an essential tool for product and process development and manufacturing in industry. Big data science adds the 'fourth pillar' to scientific advancements, providing the methods and algorithms to extract knowledge or insights from data.

The course is a journey into the foundations of Parallel Computing at the intersection of computational and big data sciences. This is an applications course highlighting the use of modern computing platforms in solving computational and data science problems, enabling simulation, modelling and real-time analysis of complex natural and social phenomena at unprecedented scales. The class emphasizes on making effective use of the diverse landscape of programming models, platforms, open-source tools and computing architectures for high performance computing and big data.

Computer Science 207 - Systems Development for Computational Science

This is a project-based course emphasizing designing, building, testing, maintaining and modifying software for scientific computing. Students will work in groups on a number of projects, ranging from small data-transformation utilities to large-scale systems. Students will learn to use a variety of tools and languages, as well as various techniques for organizing teams. Most important, students will learn to fit tools and approaches to the problem being solved.

Applied Computation 297r - Computational Science and Engineering Capstone Project

The CSE capstone project is intended to integrate and apply the skills and ideas CSE students acquire in 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 homework or lectures. Students will be dealing with real-world problems, messy data sets, and the chance to work on an end-to-end solution to a problem using computational methods.