Difference between revisions of "Scientific Computing Course"

From oldwiki.scinet.utoronto.ca
Jump to navigation Jump to search
Line 5: Line 5:
 
=Syllabus=
 
=Syllabus=
  
=Sign up=
+
==About the course==
 +
* Whole-term graduate course
 +
* Prerequisite: basic C, C++ or Fortran experience.
 +
* Will use `C++ light' and Python
 +
* Topics include: Scientific computing and programming skills, Parallel programming, and Hybrid programming. 
 +
 
 +
There are three parts to this course:
 +
 
 +
# Scientific Software Development: Jan/Feb 2013<br>''python, C++, git, make, modular programming, debugging''
 +
# Numerical Tools for Physical Scientists: Feb/Mar 2013<br>''modelling, floating point, Monte Carlo, ODE, linear algebra,fft''
 +
# High Performance Scientific Computing: Mar/Apr 2013<br>''openmp, mpi and hybrid programming''
 +
 
 +
Each part consists of eight one-hour lectures, two per week.
 +
 
 +
These can be taken separately by astrophysics students as mini-courses, by physics students as modular courses.
 +
 
 +
==Location and Times==
 +
 
 +
256 McCaul Street, Toronto, ON, Rm 229<br>
 +
Tuesdays 11:00 am<br>
 +
Thursdays 11:00 am<br>
 +
 
 +
==Instructors and office hours==
 +
 
 +
* Ramses van Zon - 256 McCaul Street, Rm 228 - Mondays 3-4pm
 +
* L. Jonathan Dursi - 256 McCaul Street, Rm 216 - Wednesdays 3-4pm
 +
 
 +
==Grading scheme==
 +
 
 +
Attendence to lectures.
 +
 
 +
Four home work sets (i.e., one per week), to be returned by email by 9:00 am the next Thursday.
 +
 
 +
==Sign up==
 
Sign up for this graduate course goes through SciNet's course website.<br>The direct link is https://support.scinet.utoronto.ca/courses/?q=node/99.<br>  If you do not have a SciNet account but wish to register for this course, please email support@scinet.utoronto.ca .
 
Sign up for this graduate course goes through SciNet's course website.<br>The direct link is https://support.scinet.utoronto.ca/courses/?q=node/99.<br>  If you do not have a SciNet account but wish to register for this course, please email support@scinet.utoronto.ca .
 +
 +
 +
=Part 1: Scientific Software Development=
 +
 +
==Prerequisites==
 +
 +
Some programming experience. Some unix prompt experience.
 +
 +
'''Software that you'll need:'''
 +
 +
A unix-like environment with the GNU compiler suite (e.g. Cygwin), and Python (Enthought) installed on your laptop.
 +
 +
==Dates==
 +
 +
January 15, 17, 22, 24, 29, and 31, 2013<br>
 +
February 5 and 7, 2013
 +
 +
==Topics==
 +
 +
''Lecture 1''&nbsp;&nbsp; C++ introduction<br>
 +
''Lecture 2''&nbsp;&nbsp; More C++, build and version control tools<br>
 +
''Lecture 3''&nbsp;&nbsp; Python and visualization <br>
 +
''Lecture 4''&nbsp;&nbsp; Modular programming, refactoring, testing<br>
 +
''Lecture 5''&nbsp;&nbsp; Object oriented programming<br>
 +
''Lecture 6''&nbsp;&nbsp; ODE, interpolation<br>
 +
''Lecture 7''&nbsp;&nbsp; Development tools: debugging and profiling<br>
 +
''Lecture 8''&nbsp;&nbsp; Objects in Python, linking C++ and Python
 +
 +
 +
=Part 2: Numerical Tools for Physical Scientists=
 +
 +
==Prerequisites==
 +
 +
Part 1 or solid c++ programming skills, including make and unix/linux prompt experience.
 +
 +
'''Software that you'll need'''
 +
 +
A unix-like environment with the GNU compiler suite (e.g. Cygwin), and Python (Enthought) installed on your laptop.
 +
 +
==Dates==
 +
 +
February 12, 14, 26, and 28, 2013<br>
 +
March 5, 7, 12, and 14, 2013
 +
 +
==Topics==
 +
 +
''Lecture 9&nbsp;''&nbsp;&nbsp; Numerics<br>
 +
''Lecture 10''&nbsp;&nbsp; Random numbers<br>
 +
''Lecture 11''&nbsp;&nbsp; Numerical integration and ODEs<br>
 +
''Lecture 12''&nbsp;&nbsp; Molecular Dynamics<br>
 +
''Lecture 13''&nbsp;&nbsp; Linear Algebra part I <br>
 +
''Lecture 14''&nbsp;&nbsp; Linear Algebra part II and PDEs<br>
 +
''Lecture 15''&nbsp;&nbsp; Fast Fourier Transform<br>
 +
''Lecture 16''&nbsp;&nbsp; FFT for real and multidimensional data
 +
 +
 +
=Part 3: High Performance Scientific Computing=
 +
 +
==Prerequisites==
 +
 +
Part 1 or good c++ programming skills, including make and unix/linux prompt experience.
 +
 +
'''Software that you'll need'''
 +
 +
You will need to bring a laptop with a ssh facility. Hands-on parts will be done on SciNet's GPC cluster.
 +
 +
For those who don't have a SciNet account yet, the instructions can be found at http://wiki.scinethpc.ca/wiki/index.php/Essentials\#Accounts
 +
 +
==Dates==
 +
March 19, 21, 26, and 28, 2013<br>
 +
April 2, 4, 9, and 11, 2013
 +
 +
==Topics==
 +
''Lecture 17''&nbsp;&nbsp; Intro to Parallel Computing<br>
 +
''Lecture 18''&nbsp;&nbsp; Parallel Computing Paradigms<br>
 +
''Lecture 19''&nbsp;&nbsp; Shared Memory Programming with OpenMP, part 1<br>
 +
''Lecture 20''&nbsp;&nbsp; Shared Memory Programming with OpenMP part 2<br>
 +
''Lecture 21''&nbsp;&nbsp; Distributed Parallel Programming with MPI, part 1<br>
 +
''Lecture 22''&nbsp;&nbsp; Distributed Parallel Programming with MPI, part 2<br>
 +
''Lecture 23''&nbsp;&nbsp; Distributed Parallel Programming with MPI, part 3<br>
 +
''Lecture 24''&nbsp;&nbsp; Hybrid OpenMPI+MPI Programming

Revision as of 16:15, 7 January 2013

This wiki page concerns the 2013 installment of SciNet's Scientific Computing course. Material from the previous installment can be found on Scientific Software Development Course, Numerical Tools for Physical Scientists (course), and High Performance Scientific Computing


Syllabus

About the course

  • Whole-term graduate course
  • Prerequisite: basic C, C++ or Fortran experience.
  • Will use `C++ light' and Python
  • Topics include: Scientific computing and programming skills, Parallel programming, and Hybrid programming.

There are three parts to this course:

  1. Scientific Software Development: Jan/Feb 2013
    python, C++, git, make, modular programming, debugging
  2. Numerical Tools for Physical Scientists: Feb/Mar 2013
    modelling, floating point, Monte Carlo, ODE, linear algebra,fft
  3. High Performance Scientific Computing: Mar/Apr 2013
    openmp, mpi and hybrid programming

Each part consists of eight one-hour lectures, two per week.

These can be taken separately by astrophysics students as mini-courses, by physics students as modular courses.

Location and Times

256 McCaul Street, Toronto, ON, Rm 229
Tuesdays 11:00 am
Thursdays 11:00 am

Instructors and office hours

  • Ramses van Zon - 256 McCaul Street, Rm 228 - Mondays 3-4pm
  • L. Jonathan Dursi - 256 McCaul Street, Rm 216 - Wednesdays 3-4pm

Grading scheme

Attendence to lectures.

Four home work sets (i.e., one per week), to be returned by email by 9:00 am the next Thursday.

Sign up

Sign up for this graduate course goes through SciNet's course website.
The direct link is https://support.scinet.utoronto.ca/courses/?q=node/99.
If you do not have a SciNet account but wish to register for this course, please email support@scinet.utoronto.ca .


Part 1: Scientific Software Development

Prerequisites

Some programming experience. Some unix prompt experience.

Software that you'll need:

A unix-like environment with the GNU compiler suite (e.g. Cygwin), and Python (Enthought) installed on your laptop.

Dates

January 15, 17, 22, 24, 29, and 31, 2013
February 5 and 7, 2013

Topics

Lecture 1   C++ introduction
Lecture 2   More C++, build and version control tools
Lecture 3   Python and visualization
Lecture 4   Modular programming, refactoring, testing
Lecture 5   Object oriented programming
Lecture 6   ODE, interpolation
Lecture 7   Development tools: debugging and profiling
Lecture 8   Objects in Python, linking C++ and Python


Part 2: Numerical Tools for Physical Scientists

Prerequisites

Part 1 or solid c++ programming skills, including make and unix/linux prompt experience.

Software that you'll need

A unix-like environment with the GNU compiler suite (e.g. Cygwin), and Python (Enthought) installed on your laptop.

Dates

February 12, 14, 26, and 28, 2013
March 5, 7, 12, and 14, 2013

Topics

Lecture 9    Numerics
Lecture 10   Random numbers
Lecture 11   Numerical integration and ODEs
Lecture 12   Molecular Dynamics
Lecture 13   Linear Algebra part I
Lecture 14   Linear Algebra part II and PDEs
Lecture 15   Fast Fourier Transform
Lecture 16   FFT for real and multidimensional data


Part 3: High Performance Scientific Computing

Prerequisites

Part 1 or good c++ programming skills, including make and unix/linux prompt experience.

Software that you'll need

You will need to bring a laptop with a ssh facility. Hands-on parts will be done on SciNet's GPC cluster.

For those who don't have a SciNet account yet, the instructions can be found at http://wiki.scinethpc.ca/wiki/index.php/Essentials\#Accounts

Dates

March 19, 21, 26, and 28, 2013
April 2, 4, 9, and 11, 2013

Topics

Lecture 17   Intro to Parallel Computing
Lecture 18   Parallel Computing Paradigms
Lecture 19   Shared Memory Programming with OpenMP, part 1
Lecture 20   Shared Memory Programming with OpenMP part 2
Lecture 21   Distributed Parallel Programming with MPI, part 1
Lecture 22   Distributed Parallel Programming with MPI, part 2
Lecture 23   Distributed Parallel Programming with MPI, part 3
Lecture 24   Hybrid OpenMPI+MPI Programming