COMP124

Computer Systems

Aims

  1. To introduce how computers function at the instruction operation level.
  2. To introduce the relationships between the instruction operation level a nd both the higher (software) and lower (hardware) levels
  3. To introduce students to the structure and functionality of modern operating systems.
  4. To explain how the principal components of computer-based systems perform their functions and how they interact with each other.

Syllabus

  1. Machine architecture and instruction execution (5 lectures): The CPU. Stored Program concept. Program Execution. A very basic overview of instruction-level operation, using a small number of instructions only.
  2. Machine-level correspondence to high level constructs (5 lectures): Simple Arithmetic expressions. Array variables. Very simple loops. Conditional expressions. Subroutines and subroutine calling mechanisms. Stacks and recursion.
  3. Introduction to operating systems (2 lectures): Outline of time-sharing, i nterrupt mechanism, normal state/special state switching.
  4. Processes and Process management (5 lectures): process management and scheduling. Resource allocation, mutual exclusion, semaphores, deadlock.
  5. Concurrent programming in Java. (4 lectures)
  6. Memory management (4 lectures): storage organisation methods, paging, segmentation, memory allocation, caching, garbage collection.
  7. File management (3 lectures): Input/output, files, filestore organisation, buffering.
  8. Introduction to compilers (2 lectures): Lexical analysis, syntax analysis and code generation.

Learning Outcomes

  • Describe the structure and operation of computer hardware at the register transfer level.
  • Implement/reason about simple algorithms at the level of machine code.
  • Describe the overall structure and functionality of a modern operating system and its interactions with computer hardware and user processes.
  • Construct/reason about programs that involve the management of concurrent processes.
  • Explain at a simple level the operation and organisation of compilers.