CS601: Software Development for Scientific Computing
Autumn 2024
Mondays (3:00PM - 3:50PM), Wednesdays (4:00PM to 4:50PM), and Fridays (5:00PM to 5:50PM)
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-in on Mndays 4PM to 4:30PM (A1-618).
TAs:
Vivek Shahare
Lecture Schedule and Notes
- Week 1 (31/7, 2/8): Syllabus, Course Overview Slides
- Week 2 (5/8, 7/8, 9/8-No class): Real Numbers Slides
- Week 3: No classes (Nikhil travel)
- Week 4 (19/8, 21/8, 23/8): Program Development Environment, Makefiles Slides
- Week 5 (26/8, 28/8, 30/8): Motifs - Matrix computation with dense matricesSlides
- Week 6 (2/9 - 4/9): Motifs - Matrix computation with dense matrices Slides, Matrix Multiplication Loop Orderings (notes)
- Week 7 (9/9, 11/9, 13/9): Tools for profiling, debugging, documentation. Motifs - Matrix computation with sparse matrices Slides
- Week 8 (16/9-holiday,18/9, 20/9): Motifs - Matrix computation with sparse matrices (contd.) Slides
- Week 10 (30/9,2/10-holiday,4/10): Motifs - Matrix computation with sparse matrices (contd.) Slides
- Week 11 (7/10, 9/10(2), 11/10-holiday) : C++ operator overloading, Motifs - Structured Grids (FDM) Slides, Notes(from Autumn22):part1, part2, part3
- Week 12 (14/10, 16/10, 18/10) : Motifs - Structured and Unstructured Grids (FDM and FEM) Slides, Notes(from Autumn22):part1, part2
- Week 13 (21/10, 23/10, 25/10) : Motifs - Unstructured Grids (FEM-1D problem) Slides, Notes(from Autumn22):Notes
- Week 14 (28/10, 30/10, 1/11-holiday) : Motif (FFT), Faster matrix-vector multiplication (Separable Matrices).Reference: On_Separable_Matrices (Section 1 only)
- Week 15 (4/11,6/11, 8/11) : Motifs (N-body problems) Slides,
- Week 16 (11/11,13/11, holiday-15/11) : Dynamic Programming (DP) problems Slides,
- Week 17 (18/11) : Summary 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
- Daily Quiz1
- Programming assignment 1: Make tool, Matrix-Multiplication, Intrinsics, BLAS APIs, Valgrind PA1. Due (revised): 17/9/2024
- Midsem exam: Floating point representation, tools (Make, gdb, Valgrind, Doxygen), Sparse and Dense Matrix multiplication, Const and References in C++. Midsem. On: 25/9/2024
- Programming assignment 2: software development for computation on grids PA2. Due: 16/11/2024
- Endsem exam: OO principles, FDM, FEM, N-Body methods, FFT Endsem. On: 27/11/2024
View Scores