Math 471 / CS 471, Introduction to Scientific Computing
Overview :: Dates :: Grading :: Homework :: Lecture Notes :: Other Materials
Time and Place: Tuesday, DSH 233, 8am-9:15am; Thursday, DSH 144, 8am-9:15am
Instructor: Jacob B. Schroder, jbschroder unm.edu
Office Hours: SMLC 332
Tuesday: 9:30am-11am
Wednesday: 2:30pm-4:00pm
Exception: Wed, Aug. 29 2:30pm-4pm moved to Fri, Aug. 31 2:30pm-4pm
Syllabus: PDF1 PDF2 (updated supported computer languages) PDF3 (removed HW6)
Grader: Cairn Overturf, cairno math.unm.edu (netid: covert01)
Prerequisites: Math 314 or 321 (linear algebra) and Math 316 (ODEs), and programming skills
Text (optional): V. Eijkhout (with E. Chow and R. van de Geijn), Introduction to High Performance Scientific Computing
Course Description: This is an introductory course in scientific computing. The course is broad and exposes you to a variety of concepts and algorithms for parallel scientific computing, covering hardware, software, and programming. This includes:
- Multicore, cluster, and supercomputer architectures
- Parallel numerical computing with Python and MPI
- MPI and thread-level parallelism with Python
- Parallel performance evaluation and modeling
- Understanding the stability and error analysis of numerical methods
- ODE and PDE applications such as diffusion, the heat equation and wave propagation
- Scientific software development.
- Additional topics may be covered, at the instructor's discretions, depending on time and student interest.
- Write, document, and optimize scientific computer programs according to modern practices.
- Understand how machine architectures impact the performance and design of scientific software.
- Have hands-on experience using scripting to both automate your computations and analyze your computational results.
- Understand the basic concepts of parallel computing and to write parallel programs for shared, distributed, and hybrid memory models.
- Class on Tuesday, Dec. 4th moved to DSH 144: Class on
Tuesday, 12/4, will take place at its normal time from 8:00am-9:15am,
but has been moved to the lab space in DSH 144. This is to allow for
extra time and help on the course project.
- CARC Tutorial: 8:00-9:15am, Tuesday, August 28th
CARC is at the northwest corner of University and Central Avenue, just across the street from main campus. When you come in the building, you can ask the reception where the workshop room is. Alternatively, take an immediate right, go up the short flight of stairs and down the hall, and the workshop room will be on your left. - This class has no final, only a final project, which will be listed under Homework below.
Your grade for this course is based on 5 homework sets (600 points), a final project (200 points), and in-class work and attendance (50 points). This allows for a total of 850 points. Letter grades will then be assigned according to the following scheme: A+: 825 points or above, A: 765-824 points, B+: 740-764 points, B: 680-739 points, C+: 655-679 points, C: 595-654 points, F: below 595.
The instructor reserves the right to curve grades to offset unforeseen circumstances. Such a curve will never decrease a student's letter grade below that from the above scheme.
- There will be 5 sets of homework assignments and one final project. They have the following points 50, 100, 150, 150, 150, 200, respectively, making a total of 800 points.
- Each homework and the project may consist of a combination of theoretical problems and programming tasks.
- You are strongly encouraged to work in pairs (a group of two students) for the homework and hand in a single report, but it is expected that both of you can explain the material and the computer outputs. Groups of more than two students are not allowed.
- For the write-ups of the assignments, we will use a version control system.
- In most cases, late homework is not accepted. If you are going to miss a homework due date, please talk to me in advance.
- The languages used for this course are MPI and Python.
- Homework 1 Due: 23:59, Sept. 4, 2018
- Homework 2 Due: 23:59, Sept. 16, 2018
- Homework 3 Due: 23:59, Oct. 2, 2018
- Homework 4
Due: 23:59, Oct. 25, 2018Due: 23:59, Monday, Oct. 29, 2018 - Homework 5 Due: 23:59, Nov. 16, 2018
-
Homework 6 (Project)|Homework 6 (updates in red)|
Homework 6 (only change new due date) | hints.txt (updated matrix_vector interface) |
Due: 11:59pm, Dec. 14, 2018
- August 21, 2018
- August 23, 2018 (through slide 35)
- August 28, 2018 (through slide 13)
- August 30, 2018
- Sept. 4, 2018
- Sept. 6, 2018
- Sept. 11, 2018
- Sept. 13, 2018
- Sept. 18, 2018
- Sept. 20, 2018
- Sept. 25, 2018
- Sept. 27, 2018
- Oct. 2, 2018
- Oct. 4, 2018
- Oct. 9, 2018
- Oct. 16, 2018
- Oct. 18, 2018 (Work on HW4, Section 1 "Homework Preliminary" is essentially a short lab)
- Oct. 23, 2018
- Oct. 25, 2018
- Oct. 30, 2018
- Nov. 1, 2018 (Work on HW5, Start with the preliminary section.)
- Nov. 6, 2018
- Nov. 8, 2018
- Nov. 13, 2018
- Nov. 15, 2018
- Nov. 19, 2018
-
Nov. 27, 2018| Nov. 27, 2018 (1 typo fixed, HW6 discussion slightly updated)
Other Material
Latex-
Latex Help: There are many, many Latex resources online. Some good places to start are
Overleaf Tutorial Part 1
Overleaf Tutorial Part 2
Or, look at the Sharelatex Tutorial - Getting Latex on a Mac is easy. Download the installer from here.
Linux Shell Computing
- A good resource for reading more about shells and Unix/Linux is software-carpentry.
- For a list of Unix commands with details see here.
Python / SciPy
- Software-carpentry also has a good introduction to Python
- SciPy has a good introduction to Numerical Python. See the "Introduction", "Basic Functions", and "Linear Algebra" sections, especially.
Last updated 2018