Skip to main content

Scientific Computing


MNF

About This Course

When confronted with a scientific task that requires computing, there are, broadly speaking, three things you have to do.

  1. First, use your knowledge of science to relate the task to a known problem-type.
  2. Use methods developed for said problem-type to create an algorithm for your problem.
  3. Program the algorithm, fix all the errors, and watch the computer do your task.

A programming course will teach you (3), whereas a numerical-analysis will focus on (2). For (1) there aren't really courses, you just have to practice.

This course is about the most important and most useful aspects from all three of the above. For (3) we will start with an introduction to programming in Python, but we'll be more relaxed about software-engineering issues than a programming course. For (2) we will introduce several concepts from numerical analysis, but the style will be more intuitive and less formal than a numerical-analysis course. And there will be lots of examples, because diverse examples are the only way to learn (1). We will calculate π to a thousand digits and more, follow the orbits in another solar system, solve a problem designed to disable physicists' brains, and much more.

Requirements

No previous knowledge of programming is required, but a knowledge of physics and mathematics at the level needed to start university physics is expected.

A computer running any recent Windows or Mac OSX or Linux is needed. Some free software will need to be installed, but administrator privileges are not necessary.

The Team

Instructors: Prasenjit Saha and Nicola Chiapolini

Teaching Assistants: Anson Kwok, Dorian Quelle, Ricardo Peres, Xiaochen Zheng

Additional contributions by Nikita Batalov, Leila Freitag, Helena Kühnle, Alessandra Lorenzetti, Muhammad Al-Minawi, Aline Schneuwly, and Ioannis Velonias.

Credits

The cartoon at above right is by Raphael Schoen.

Enroll