CS601: Software Development for Scientific Computing
Autumn 2022
Mondays (8:30AM - 9:30AM), Tuesdays (9:30AM to 10:30AM), and Thursdays (10:30AM to 11:30AM)
About the Course
Description:
This course focuses on software development skills in the context of dominant algorithmic patterns found in scientific computing. Topics include:
- Exploring tools that cross most disciplines (build tools, version control tools, compilers, debugging tools, profiling tools etc.)
- Exploring dominant algorithmic patterns found in dense and sparse linear algebra, structured and unstructured grid methods, tree-based codes, particle methods, FFTs, and PDEs
- Selected topics in C++ programming, asymptotic analysis, perfomance tuning
Details:
The course syllabus discusses most of the details of the course, including a tentative schedule of topics, exam dates, and other administrative information. Announcements, assignment links, and discussion will be posted on the GitHub-Teams discussion page. If you have a question about a concept covered in lecture or about a detail of an assignment, check the discussion page first!
Instructor:
Nikhil Hegde
nikhilh 'at' iitdh 'dot' ac 'dot' in
Office hour (doubt clearing session): Walk-ins or on demand online sessions based on the availability of student(s) and the instructor
TAs:
Gayatri Rayar and Vivek Shahare
{gayatri 'dot' rayar} and {212011006} 'at' iitdh 'dot' ac 'dot' in,
Office hour (doubt clearing session): On demand online sessions based on the availability of student(s) and the TAs
Lecture Schedule and Notes
- Week 1 (1/8 - 4/8): Syllabus, Course Overview - Slides, Computational Thinking, CodeSamples
- Week 2 (8/8, 11/8 (no class on 9/8, holiday)): Program Development Environment, Minimal C++ - Slides, CodeSamples
- Week 3 (16/8 - 18/8 (no class on 15/8, holiday)): Minimal C++, Build tool (Make) - Slides, CodeSamples
- Week 4 (22/8 - 25/8): Build tool (Make demo), Motifs - Matrix computation with dense matrices, Performance Analysis (PAPI) Slides, CodeSamples
- Week 5 (29/8 - 30/8): Motifs - Matrix computation with dense matrices (using BLAS, LAPACK) Slides
- Week 6 (5/9 - 8/9): Motifs - Matrix computation with dense and sparse matrices Slides, On_optimal_matrix chunk_sizes
- Week 7 (12/9 - 15/1): Sparse Matrices (Contd.), Motifs - FFT (accelerating Matvec using FFT), Object-Orientation Slides, Reference: On_Separable_Matrices (Section 1 only)
- Week 8 (26/9 - 29/9): Intermediate C++ (const, references, generic programming)Slides, CodeSamples
- Week 9 (3/10 - 4/10 (no class on 6/10, cancelled)): Intermediate C++ (STL, function and class templates, gdb)Slides, CodeSamples
- Week 10 (10/10 - 13/10): Motif-structured grids (FDM) Notes:10/10, 11/10, 13/10
- Week 11 (17/10 - 20/10): FDM Contd. Finite Element Method (FEM)17/10, 18/10, 20/10
- Week 12 (25/10, 27/10 (no class on 24/10, holiday)): FEM (Numerical integration) 25/10 and 27/10
- Week 13 (31/10, 3/11 (no class on 1/11, holiday)): FEM (2D problem) Notes_31_10, Grids: Program_Representation
- Week 14 (7/11 and 10/11 (no class on 8/11, holiday)): 3 important problems from motifs in scientific computing Slides
Homework Assignments and Exams
All homework assignments are due at 11:59PM unless otherwise announced. Assignment and exam details will be posted during the semester.
Instructions for getting familiar with test/development environment (Linux) are here
- Programming assignment 1: Environment setup - GitHub and Git overview, Make tool, Matrix-Multiplication, and Performance analysis with PAPI PA1. Due: 15/9/2022
- Midsem exam: Floating point representation, Computational thinking, C++ programming, tools (Make, Git), Sparse and Dense Matrix multiplication Midsem. On: 20/9/2022
- Programming assignment 2: Finite Element Method PA2. Due: 7/11/2022
- Endsem exam: C++ programming (templates, classes), GDB-Debugger, FDM, FEM, problems from Motifs in scientific computing (Minimum Weight Triangulation, Barnes-Hut) Endsem. On: 15/11/2022