schedule for Computer Organization and Programming for Scientific Computing, Fall 2017
(subject to changes during the course)
See the syllabus on my web page.
Textbook: No required textbook but the material is loosely based on
_A Programmer's Perspective by R.E. Bryant and D.R. O'Hallaron (ISBN-13 978-0-13-409266-9),
_An Introduction to Parallel Programming, by Peter S. Pacheco (ISBN-13: 978-0-12-374260-5).
General plan of the class:
- Chapter 1 Introduction: What are we looking for this class (with some examples of programs), looking inside a computer and a crash course on C and pointers. Here are the links to the basic codes used to introduce pointers: basic examples, pointers on pointers, pointers on functions, void pointers.
- Chapter 2, System structure: Data representation, Machine Language and some elements of processor architecture. The codes used for numbers representation are basic encodings, boolean representation and operations, example of a mistaken unsigned casting.
- Chapter 3, Control flow: Processes, process control, signals...
- Chapter 4, Handling the memory: The memory hierarchy, virtual memory.
- Chapter 5, Parallel programming with threads: What is shared memory, an introduction to OpenMP.
- Chapter 6, Parallel programming with processes: Distributed memory and an introduction to MPI.
- Chapter 7, Parallel programming on GPU's: An introduction to CUDA.