CS561 Syllabus & Progress
CS561 Syllabus & Progress
Progress: material covered are displayed in
blue (I will be updating this webpage from time to
time)
You can save examples from a webpage from your browser.
Do the following in Netscape:
Click File -> Save As
Complete the file name in the "Selection" box
(Make sure you specify the right directory name and file name !)
Click OK when the file name is right
-
Introduction to Computer Architecture
-
How numerical information are stored inside a computer:
-
CPU Architecture: (you need to know this for multi-threading)
-
Instructing the computer to do something for you:
-
Elementary Programming in C/C++
- Compiling a C++ program:
- Types and Variables:
- Program statements:
- Program and Subroutines/Functions:
Project 1: Bisection algorithm
in C++ (passing functions as parameter) -----
click here
-
Software Engineering Topics
- Managing program complexity:
- Introduction:
click here
- Modular programming (with subroutines):
click here
- Software reuse - the art of writing new software using
old software:
click here
- Building your own library of useful functions:
click here
- Managing your program with the MAKE utility
click here
- Errors in numerical computational programs:
- DBX: a tool for locating errors in programs:
click here
- The different kinds of errors in a
numerical computational programs:
click here
- Performance enhancement:
-
Further C/C++ programming
- Relationships between variables and functions:
- Scope and lifetime, global and local variable:
click here
- Scope and lifetime of function parameters:
click here
- Parameter passing mechanisms:
click here
- The reference (&) and deference (*) operators:
click here
- Composite variables:
- Arrays:
click here
Project 2: Matrix inversion
in C++ (arrays, passing arrays as parameter) -----
click here
- Structures (records):
click here
- Linked structures: (According to course description and
Prof. Nagy, it is now included)
Project 3: Insert and Delete in Ordered Linked list
in C++ (pointer manipulation techniques) -----
click here
- Matrix-vector operations:
click here
- Storing sparse matrices:
click here
- File I/O:
- Reading and writing formatted (text) files in C/C++:
click here
- Reading and writing binary files in C/C++:
click here
- Elementary Object Oriented Programming Techniques:
- Advanced Object Oriented Programming Techniques:
Project 5: Jacobi iteration
in C++ (define + and * for matrix type) -----
click here
- Misc. topics in inheritance
-
Elementary Programming in Fortran
Project 5: Matrix inversion
in Fortran (arrays and functions in Fortran) -----
click here
-
Further Programming in Fortran
- Lifetime and Scope of variables:
- Scope and lifetime, global and local variable:
click here
- Showing parameter passing in F90 by linking C and F90 programs:
- Parameter passing in Fortran and
Linking C and Fortran programs:
click here
Data Structures in Fortran:
- Selecting the right precision:
click here
- Pointer variables:
click here
- Arrays and Matrices:
- User-defined types (Structures):
click here
- Linked structures:
File I/O:
- Reading and writing formatted (text) files in F90:
click here
Function overloading in F90:
click here
Operator functions:
click here
Modules:
click here
Using Scientific libraries
Parallel Computers
- Introduction:
click here
- SIMD - Single Instruction (stream) and Multiple Data (stream) computers:
click here
- Interconnecting MIMD computers:
click here
- Interconnecting Shared-Memory MIMD computers:
- Cross Bar Switch:
click here
- The Delta Multi-stage Interconnection Network (MIN):
click here
- The Omega Multi-stage Interconnection Network:
click here
- Interconnecting Message-Passing MIMD computers:
click here
Programming Shared Memory MIMD using posix threads:
- Introduction to parallel programming:
click here
- Introduction to threads:
click here
- Creating posix-threads:
click here
- A commonly used parallel program structure:
click here
- Synchronization among threads:
click here
- Further reading:
- POSIX Thread Programming - LLNL:
click here
- Getting Started with POSIX Threads (online book):
click here
- I have downloaded an e-book on PThread Primer (online book):
click here
Programming Shared Memory MIMD using OpenMP:
Programming Message-Passing MIMD using MPI:
- Algorithms on Message Passing MIMD:
click here
- Programming Message Passing MIMD - MPI for C/C++:
- Intro to MPI:
click here
- Blocking send and receive operations:
click here
- NON-Blocking send and receive operations:
click here
- Group communication
- broadcast, scatter, reduce and gather operations:
click here
- Programming Message Passing MIMD - MPI for Fortran