Go to content ALT+c

Scientific Computing for Physicists  (Winter 2020) (Old site; new site is at https://scinet.courses)

Friday May 31, 2024 - 06:07
  • Export Content

2 Syllabus

Scientific Computing for Physicists (PHY1610H)
Winter 2020
University of Toronto


Covid-19 Update, March 16, 2020

Because of the Covid-19 situation, this course has been moved online. Although a lot of aspects of the course were already online, those aspects of the course that have changed are marked below in red and bold.

Description

Scientific computing is now an integral part of the scientific endeavour. It is an interdisciplinary field that combines computer science, software development, physical sciences and numerical mathematics. Yet, many computational projects start off with knowledge of the science you want to do, and with a bit of programming experience, after which follows an arduous journey to get to a (maintainable) piece of code which you trust to compute the right thing.

This course is aimed at reducing your struggle, and make you a more efficient computational scientist. Topics include well-established best practices for developing software as it applies to scientific computations, common numerical techniques and packages (so you don't reinvent the wheel), and aspects of high performance computing.

While the course title is 'Scientific Computing for Physicists', its content is equally applicable to other physical sciences (astrophysics, chemistry, engineering, ...), and much of the software development and high performance computing material will be of interests to students in other research areas where they have to write or maintain scientific code.

Three Parts

The course consists of three parts.

  • Part 1: Scientific Software Development & Design
  • Part 2: Numerical Tools for Physical Scientists
  • Part 3: Optimization High Performance Scientific Computing

Each part consists of eight lectures of one hour.

Topics for part 1

  • C++
  • modular programming
  • make
  • debugging
  • version control
  • testing

Topics for part 2

  • Modelling
  • Floating point computations
  • Random Numbers and Monte Carlo
  • ODE and Molecular Dynamics
  • Partial differential equations
  • Linear algebra
  • Fast Fourier Transforms

Topics for part 3

  • Profiling
  • Serial performance optimization
  • Parallel programming concepts
  • Shared memory parallel programming with OpenMP
  • Distributed memory parallel programming with MPI

Prerequisites

Students should have a fair amount programming experience (e.g. in C, C++, Fortran, Python, or similar). While we will introduce the C++ language, in one language or another, students should already know things like: how to use variables, how to write a function, how to print something to screen, how to define an array, fill it, and add all numbers in that array.

To follow along with the examples, we recommend that students bring a laptop to bring to the lectures, with a unix-like environment with the GNU compiler suite (for windows users, Cygwin is a good choice, just make sure you install packages like gcc-g++, make, openssl, and git). For Mac users, we advise to install one of the GNU compiler suites available from hpc.sourceforge.net.

All students should get a SciNet account as well, which would allow them to run their assignments on one of the SciNet supercomputers. Instruction on how to get an account can be found here.

Web site

The website courses.scinet.utoronto.ca/468 will be maintained during the course. It's where you enroll if your not taking the course as a physics grad course, where you find the lecture slides, where you hand in your assignments, and get feedback on those from the instructors.

The website will also have the live-stream of lectures in the Chat tab. You will be able to ask questions in the chat during the lecture. Before and after the lecture, use the Forum to ask questions. After each lecture, the recording will still be made available on the course website.

Location and Times

SciNet Teaching Room
661 University Avenue
Room 1140A (11th floor of the MaRS West Tower)
Toronto, ON
(Location is subject to change pending enrollment numbers.)

Starting March 17, the lectures will now longer be held in person, but are streamed online. You can get the stream from the Chat tab on the course website. You must be logged in to see them.

Tuesdays 11:00 am - 12:00 noon
Thursdays 11:00 am - 12:00 noon

Lecture dates:

The first lecture is on Tuesday January 7th, 2020, the last is on April 2nd, 2020. There will be no lectures during Reading Week (February 17-21).

List of lecture dates:

January 7, 9, 14, 16, 21, 23, 28, 30, 2020
February 4, 6, 11, 13, 25, 27, 2020
March 3, 5, 10, 12, 17, 19, 24, 26, 31, 2020
April 2, 2020

Office hours

For the duration of the course, office hours will be on

  • Tuesday from 1:00 pm to 2:00 pm at the SciNet offices.
  • Wednesday from 2:00 pm to 3:00 pm at the SciNet offices.

SciNet Offices
can be found on the 11th floor of the MaRS West Tower
661 University Avenue, Toronto, ON M5G 1M1

Starting March 17, the office hours will be canceled. As a replacement, please post questions on the course forum (you must login to be able to post) or send them by email to courses AT scinet.utoronto.ca.

Instructors

The lecturers for these courses will be Computational Science Specialists at the SciNet High Performance Computing Consortium.
  • Ramses van Zon
  • Marcelo Ponce

Assignments and Grading

Most weeks, students will be given a programming assignment, with a due date one week after. These assignments are designed to help absorb the course material.

There will be ten such assignments. The average of the assignments will make up your grade. To ensure a timely reporting of student grades, we will adhere to the following policy:

Homework may be submitted up to one week after the due date, at a penalty of 5% per day taken off from your mark. Deviations of this rule will only be considered, on a case-by-case basis, in exceptional circumstances.
All sets of homework need to be handed in for a passing grade, which is based on the average of the ten sets. If, due to exceptional circumstances, an assignment was missed, a make-up assignment can be given at the end of the module. Rather than focusing on the topic of a specific week, the make-up assignment may involve any of the material of the course.

List of *tentative* assignment due dates:

January 9, 16, 23, 2020
February 6, 2020
March 2, 9, 19, 26, 2020
April 2, 9, 2020

Course Credit

This course is an official physics graduate course. It is possible for graduate students outside of Physics to take the course, if they are allowed to take physics courses. However, they should first confirm this with the graduate coordinator in their own department.

For participants that cannot take this course for credit (e.g. other SciNet users), each of the parts can be taken as a 'SciNet course', which count towards the SciNet certificates.

In particular, participation in parts 1 and 2 counts for 12 credit-hours (each) towards the SciNet Scientific Computing Certificate, while participation in part 3 counts for 12 credits towards the SciNet HPC Certificate, and 12 credit-hours towards the SciNet Scientific Computing Certificate.


More information on the SciNet's Certification Program, can be found here.

Last Modified: Monday Mar 16, 2020 - 12:40. Revision: 10. Release Date: Sunday Dec 1, 2019 - 12:00.


Content Navigation


Forum Posts


Course Calendar


Related



Questions? Contact Support.
Web site engine's code is copyright © ATutor®.
Modifications and code of added modules are copyright of SciNet.