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.
- First, use your knowledge of science to relate the task to a known problem-type.
- Use methods developed for said problem-type to create an algorithm for your problem.
- 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: Elia Cenci, Kunal Gautam, Zahra Khodabakhshimahallati, Ali Bahari Malayeri, Eduardo Plörer, Antonio Jorge Del Rio
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.