Lecture 1 - Introduction to High Performance Computation (Bird's-eye View of Computer Systems)
Lecture 2 - L2 Part A : Basic Design (Bird's-eye View of Computer Systems)
Lecture 3 - L2 Part B : Processors (Bird's-eye View of Computer Systems)
Lecture 4 - L3 Part A : Vectorization (Bird's-eye View of Computer Systems)
Lecture 5 - L3 Part B : Multicore Processors (Bird's-eye View of Computer Systems)
Lecture 6 - L4 Part A : Memory (Basics of Operating System)
Lecture 7 - L4 Part B : Basics of Operating System (Basics of Operating System)
Lecture 8 - L4 Part C : RAM (Basics of Operating System)
Lecture 9 - L4 Part D : Interconnect (Basics of Operating System)
Lecture 10 - L5 Part A : Parallel Computer Classification (Basics of Operating System)
Lecture 11 - L5 Part B : Classes of Parallelism (Basics of Operating System)
Lecture 12 - L5 Part C : Networks (Basics of Operating System)
Lecture 13 - L6 Part A : Top-10 HPC Systems (High Performance Computing (HPC) Clusters)
Lecture 14 - L6 Part B : Using GPUs for HPC (High Performance Computing (HPC) Clusters)
Lecture 15 - L7 Part A : Scaling (High Performance Computing (HPC) Clusters)
Lecture 16 - L7 Part B : Programming Practices (High Performance Computing (HPC) Clusters)
Lecture 17 - L8 Part A : Programming Language (C and Python)
Lecture 18 - L8 Part B : Classes in Python (C and Python)
Lecture 19 - L8 Part C : Inheritance (C and Python)
Lecture 20 - L9 Part A : Modules in Python (C and Python)
Lecture 21 - L9 Part B : Python Pitfalls (C and Python)
Lecture 22 - L9 Part C : Python Arrays (C and Python)
Lecture 23 - L10 Part A : C Arrays 1D (C and Python)
Lecture 24 - L10 Part B : Higher-Dimensional C Arrays (C and Python)
Lecture 25 - L11 Part A : Python Codes Optimization 1 (Programming Paradigm)
Lecture 26 - L11 Part B : C++ Codes Optimization 1 (Programming Paradigm)
Lecture 27 - L12 Part A : Python Codes Optimization 2 (Programming Paradigm)
Lecture 28 - L12 Part B : C++ Codes Optimization 2 (Programming Paradigm)
Lecture 29 - L13 Part A : C++ Codes Optimization 3 (Cache Locality) (Programming Paradigm)
Lecture 30 - L13 Part B : Speeding up Using Numba (Programming Paradigm)
Lecture 31 - L14 Part A : Finite Difference Method (Multiprocessing and Multithreading)
Lecture 32 - L14 Part B : Particle Simulations (Molecular Dynamics) (Multiprocessing and Multithreading)
Lecture 33 - L14 Part C : Using Multiprocessing Module (Multiprocessing and Multithreading)
Lecture 34 - L15 Part A : Cache Issues in Multiprocessing (Multiprocessing and Multithreading)
Lecture 35 - L15 Part B : Using Multithreading Module (Multiprocessing and Multithreading)
Lecture 36 - L15 Part C : Computing Sum(a*b) with Multithreads (Multiprocessing and Multithreading)
Lecture 37 - L15 Part D : Computing AX=Y with Multithreads (Multiprocessing and Multithreading)
Lecture 38 - L16 Part A : MPI Using Mpi4py (Message Passing Interface - MPI)
Lecture 39 - L16 Part B : Point-to-Point Communication (1) (Message Passing Interface - MPI)
Lecture 40 - L16 Part C : Point-to-Point Communication (2) (Message Passing Interface - MPI)
Lecture 41 - L17 Part A : Unblocking Send/Recv (Message Passing Interface - MPI)
Lecture 42 - L17 Part B : Collective Communication and Reduction Operation (Message Passing Interface - MPI)
Lecture 43 - L17 Part C : Send/Receive for Finite Difference Scheme (Message Passing Interface - MPI)
Lecture 44 - L17 Part D : MPI Sum with Examples (Message Passing Interface - MPI)
Lecture 45 - L18 Part A : Introduction to CUDA Programming (CUDA Programming)
Lecture 46 - L18 Part B : Introduction to C (1) (CUDA Programming)
Lecture 47 - L18 Part C : Introduction to C (2) (CUDA Programming)
Lecture 48 - L18 Part D : CUDA Programming (1) (CUDA Programming)
Lecture 49 - L19 Part A : CUDA Programming (2) (CUDA Programming)
Lecture 50 - L19 Part B : Examples Using CUDA Programming (CUDA Programming)
Lecture 51 - L19 Part C : Matrix Multiplication (CUDA Programming)
Lecture 52 - L19 Part D : Derivative Computation Using Finite Difference (CUDA Programming)
Lecture 53 - L20 Part A : Cupy Programming (Cupy/Numba/OpenACC Programming)
Lecture 54 - L20 Part B : CUDA Programming with Numba (Cupy/Numba/OpenACC Programming)
Lecture 55 - L20 Part C : Introduction to OpenACC Programming 1 (Cupy/Numba/OpenACC Programming)
Lecture 56 - L21 Part A : Introduction to OpenACC Programming 2 (Cupy/Numba/OpenACC Programming)
Lecture 57 - L21 Part B : Solving Laplace Equation / OpenACC UPDATE Directives and Clauses (Cupy/Numba/OpenACC Programming)
Lecture 58 - L22 Part A : Introduction to MPI in C (MPI in C)
Lecture 59 - L22 Part B : MPI Environment (MPI in C)
Lecture 60 - L22 Part C : Point to Point Communications (MPI in C)
Lecture 61 - L23 Part A : Collective Communication and Reduction Operation (MPI in C)
Lecture 62 - L23 Part B : Using OPENMP (MPI in C)
Lecture 63 - L24 Part A : FFT (FFT + Profiling + Paraview)
Lecture 64 - L24 Part B : Spectral Method (FFT + Profiling + Paraview)
Lecture 65 - L24 Part C : Profiling (FFT + Profiling + Paraview)
Lecture 66 - L24 Part D : Paraview (FFT + Profiling + Paraview)
Lecture 67 - L25 Part A : Project 1: Cahn-Hilliard Equation (Projects + Summary)
Lecture 68 - L25 Part B : Project 2: Compressible Flow (Projects + Summary)
Lecture 69 - L25 Part C : Project 3: Ising Model (Projects + Summary)
Lecture 70 - L25 Part D : Project 4: Magnetohydodynamics (Projects + Summary)
Lecture 71 - L25 Part E : Project 5: Molecular Dynamics (Projects + Summary)
Lecture 72 - L25 Part F : Project 6: Nonlinear Shrodinger Equation (Projects + Summary)
Lecture 73 - L25 Part G : Project 7: XY Model (Projects + Summary)
Lecture 74 - L26 : Summary (Projects + Summary)