Description: Fundamental concepts in computer architecture, operating systems and C programming; evolution of computer architectures; computer performance; instruction set types and addressing modes; memory organization; caches, main memory and virtual memory; storage technologies; input/output systems; systems aspects of interconnection networks; parallel and distributed architectures.

Specific Outcomes:
Understand the different internal formats to represent numerical data and their effect on precision and accuracy.
Appreciate how fundamental C constructs are implemented at the machine level.
Understand process and thread concurrency through the development, testing and debugging of concurrent C programs in Unix.
Understand the main types of memory technology and their effect on computer performance.
Understand how an operating system allocates resources in terms of CPU, main memory and I/O devices.
Appreciate the need for security and ethical considerations in computer use.

Instructor: Mirela Damian, Professor of Computer Science