Skip navigation
The Australian National University

Introduction to Computer Systems COMP2300

Course overview

Course description

An introduction to the hardware and software components of a modern computer system. Introduction to procedural and assembly languages typically used for low-level programming of computer systems. Representation of data on computers. Comparisons of different types of instruction sets and corresponding addressing modes. Emphasis on the relationships among instruction sets, fetch and execute operations, and the underlying architecture. Consideration of the physical implementation of large memory systems, together with the techniques of data storage and checking. Overall concepts of virtual memory, operating system functions, file systems and networks. Virtual machines and the levels of machine organization, the assembly and linking process and software libraries.

Rationale

Computer science is ultimately concerned with the ways in which effective computers can be built.

From a computer architecture point of view, the challenge is to link the characteristics of physical devices to the requirements of universal computation in the first place, and in a more refined sense to the requirements of the abstract machines which support high level programming languages. This challenge is fundamental to the work of machine architects, compiler writers and operating system designers and consequently is studied as part of the foundations of an education in information technology. The central role of COMP2300 is to provide students with a technical grasp of the challenge and of the concepts and techniques by which the challenge is met in the design of modern computer systems.

More specifically, COMP2300 is designed to give a student an understanding of what the components of a modern computer system are, how they lie within the overall hardware/software mix, and how they interact to provide the environments seen both by the systems programmer and by the ordinary user. The view presented is that the computer system can be seen as a hierarchy of ``levels'', each constructed using the tools of the level below, and each providing the tools needed by the level above.

The lowest level treated in these courses is the conventional machine level, where the primary focus is on machine instructions and the hardware that supports them. The fundamentals of parallel architectures and networked systems have an important place in studies at this basic hardware level.

Above the basic level is the operating system layer, where such functions as virtual memory and virtual input/output are provided. The operating system level in turn provides the support base for the assembly and high-level language levels, along with the system command language level.

Ideas

This course will be the primary carrier of the following:

  • The challenge of universal computation.
  • The hierarchical structure of computer and memory systems.
  • Providing experience with machine code and assembly language programming.
  • The interaction between application programs, operating systems and underlying hardware.
  • The relationship between high-level, assembler and machine languages.

It will reinforce or share responsibility for:

  • Providing experience with the C programming language.

Topics

  • Data Representation on computers.
  • Introduction to procedural programming languages.
  • The compilation process (object files and linking).
  • Hierarchy of virtual machines.
  • Overview of Machine Organisation (CPU, registers, data-paths, memory, I/O devices).
  • Instruction fetch-decode-execute cycle.
  • Memory and storage systems.
  • Instruction sets, addressing modes and instruction execution.
  • Instruction set design: tradeoffs and performance issues.
  • Assembly and machine language.
  • The assembly process (symbols, relocation, linking).
  • Virtual I/O, traps and interrupts.
  • The major functions of operating systems.
  • Physical and virtual memory; segmentation.
  • Introduction to computer networks.

Technical skills

Upon completion of this course the student will be able to:

  • use a command-line compiler (gcc) to compile and link C programs which use the standard C libraries
  • use a modern editor system (gedit) to write C and PeANUt assembly language programs
  • assemble and link multi-module rPeANUt assembly language programs
  • use a command interface (shell) to execute programs and use I/O redirection

 

Workload

Thirty one-hour lectures and nine two-hour laboratory/tutorial sessions

Responsible Officer:  JavaScript must be enabled to display this email address. / Page Contact:  JavaScript must be enabled to display this email address.