12.010 | Fall 2024 | Undergraduate

Computational Methods of Scientific Programming

Syllabus

Course Meeting Times

Lectures: 2 sessions/week, 1.5 hours/session

Prerequisites

One of the following courses in Calculus II, which fulfill the General Institute Requirement (GIR) in Mathematics:

and one of the following courses in Physics I, which fulfill the General Institute Requirement (GIR) in Physics:

Course Description

This introductory course exposes students to modern programming methods and techniques used in practice by physical scientists today. Emphasis is placed on code design, algorithm development/verification, and comparative advantages/disadvantages of different languages (including Python, Julia, and C/C++) and tools (including Jupyter, machine-learning from data or models, and cloud and high-performance computing workflows). Students are introduced to and work with common programming tools, types of problems, and techniques for solving a variety of data analytic and equation modeling scenarios from real research: examination visualization techniques; basic numerical analysis; methods of dissemination and verification; and practices for reproducible work, version control, documentation, and sharing/publication. No prior programming experience is required. 

Goal of the Course

By the end of class you will feel more confident that you could work in a research project involving programming, that you would know where to start to try and understand an unfamiliar program, and that you know how to write, test, and run some interesting scientific computing programs by yourself.

Assignments

There are four main assignments in the course: three problem sets and a final project.

Problem Sets 

  • Each problem set has 2–3 parts and involves writing some code, based on some example covered in class and available online.
  • Grades for the problem sets are based both on written answers and on working code.

Final Project

  • The topic can be related to any science/math problem of interest.
  • It can be based in your major, in a research course from another domain, etc.
  • It usually involves writing new code from scratch, including identifying and understanding an appropriate algorithm, developing the core computation logic, and implementing input and output components.
  • The grade for the project is based on the presentation as well as on working and documented code.
  • Group projects, with work divided across several people, or individual projects, are fine.

Grading

Each problem set and the final project are worth 25% of the grade for the class.

Course Info