CS601: Software Development for Scientific Computing
Autumn 2023
Tuesdays (2:00PM - 2:55PM), Thursdays (3:00PM to 3:55PM), and Fridays (4:00PM to 4:55PM)
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 Wednesdays 3PM to 4PM (A24, 2nd floor, WALMI Campus).
TAs:
None
Lecture Schedule and Notes
- Week 1 (1/8 - 4/8): Syllabus, Course Overview, - Slides, Computational Thinking
- Week 2 (8/8 - 11/8): Real numbers, program development environment Slides
- Week 3 (15/8-holiday, 17/8 - 18/8): program development environment (contd.), Makefile Slides
- Week 4 (22/8 - 25/8): Makefile (demo), Motifs - Matrix computation with dense matrices Slides
- Week 5 (29/8 - 1/9): Matrix Multiplication, Library functions Slides Class notes
- Week 6 (5/9 - 8/9): Sparse Linear Algebra, Tools Slides
- Week 7 (12/9 - 15/9): Tools Slides
- Week 9 (26/9, Holiday on 28/9, class cancelled on 29/9): Intermediate C++ - OO Thinking Slides
- Week 10 (3/10 - 6/10): Intermediate C++ - Access control, polymorphic usage, has-a / is-a relationship, overloading and overridingSlides
- Week 11 (10/10 - 13/10): Intermediate C++ - const and references, templates, structured grids (intro) Slides
- Week 12 (delete class on 17/10, 19/10 - 20/10): structured grids (FDM) Slides Notes(from Autumn22):part1, part2, part3
- Week 13 (holiday on 24/10, 26/10-): unstructured grids (FEM) Slides Notes(from Autumn22):part1, part2
- Week 14 (31/10, 3/11): FEM, Program representation, Motifs-FFT: Slides, FEM_notes (from Autumn22)
- Week 15 (7/11 - 10/11): Motifs-Particle Methods 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
- In-Class Quiz: 10/11/23_2
- Programming assignment 1: Make tool, Matrix-Multiplication, Intrinsics, BLAS APIs PA1. Due: 15/9/2023
- Midsem exam: Floating point representation, Computational thinking, tools (Make, gdb, Valgrind, Doxygen), Sparse and Dense Matrix multiplication Midsem. On: 20/9/2023
- Bonus Assignment1: Intermediate C++, Due on 16/10/2023, 9:45PM.
- Programming assignment 2: Finite Element Method PA2. Due: 9/11/2023
- Endsem exam: Upto midsem syllabus + OO principles, FDM, FEM, N-Body methods, FFT Endsem. On: 16/11/2023
View Scores
Consolidated Quiz Scores (monthwise)