The objective of this course is to learn how to improve the quality of
the programs that you write for execution on high performance computer systems.
course discusses the various activities that happen during program execution, and how
they are managed by the hardware (architectural features) and system software (operating
systems, run-time systems).
Program execution: Program, Compilation, Object files, Function call and return, Address space, Data and its representation
Computer organization: Memory, Registers, Instruction set
architecture, Instruction processing
Pipelined processors: Pipelining, Structural, data and control hazards, Impact on programming
Virtual memory: Use of memory by programs, Address translation, Paging
Cache memory: Organization, impact on programming, virtual caches
Operating systems: Processes and system calls, Process management
File systems: Disk management, Name management, Protection
Parallel architecture: Inter-process communication, Synchronization, Mutual exclusion, Basics of parallel architecture, Parallel programming with message passing using MPI
Computer programming, Data structures.
J. L. Hennessy and D. A. Patterson, Computer Architecture: A Quantitative Approach,
A. Silberschatz, P. B. Galvin, G. Gagne, Operating System Concepts, John Wiley.
R. E. Bryant and D. R. O’Hallaron, Computer Systems: A Programmer’s Perspective,
Site Maintained by Web Studio, IIT Madras. Contact Webmaster: email@example.com