香港六合彩中特网

XClose

香港六合彩中特网 Module Catalogue

Home
Menu

Computer Systems (COMP0019)

Key information

Faculty
Faculty of Engineering Sciences
Teaching department
Computer Science
Credit value
15
Restrictions
Module delivery for UG (FHEQ Level 6) available on BSc Computer Science途 MEng Computer Science途 MEng Mathematical Computation.
Timetable

Alternative credit options

There are no alternative credit options available for this module.

Description

Aims:

The aim for this module is to have our advanced undergraduates develop a 鈥渨hole-stack鈥 understanding of the complex interactions among modern computer system hardware (specifically, a modern, multi-core CPU and its memory hierarchy), a modern operating system, and the applications that run atop them. These interactions dictate application correctness and performance. These fundamental principles will be taught in the concrete framework of the x86 CPU architecture and the Linux/UNIX operating system. Students should not only understand these fundamental principles, but be able to put them into practice in real C programs.

Intended learning outcomes:

On successful completion of the module, a student will be able to:

  1. Understand the C and Linux/UNIX programming environment, from the hardware (memory hierarchy, memory model between cores) to low-level operating system functionality (file and network I/O, process management, virtual memory system, program linking and loading).
  2. Understand the interactions between hardware and the C and Linux/UNIX programming environment that affect application correctness and performance.
  3. Design correct applications that perform well in the C and Linux/UNIX programming environment.

Indicative content:

The module teaches students topics in computer systems design and systems programming, with an emphasis on the C programming language, Intel CPU architecture, and UNIX/Linux operating system architecture.听The following are indicative of the topics the module will typically cover:

  • Machine-level representation of code and data (assembly language; how C constructs are compiled into x86 assembly language; machine-level representations of data types and machine and C arithmetic; stack frame structure in C on the x86; array layout in memory; pointer arithmetic).
  • Use of the gdb debugger on C code in the Linux/UNIX environment.
  • Undefined behaviour in the C language specification and real C programs, and its consequences.
  • The memory hierarchy: registers, L1 caches, L2 caches, L3 caches, DRAM, SSD, disk; cache architectures; performance implications of caches on program performance.
  • Linking: static linking, relocatable object code, symbol resolution, loading executables, dynamic linking and shared libraries, position-independent code, interposition.
  • Processes, signals, context switches, exceptions, system call error handling, job control, process creation and management.
  • Virtual memory: address translation, memory mapping, dynamic memory allocation, memory-related bugs in C;
  • System I/O: filesystem I/O, system call interface and semantics.
  • Concurrent systems programming: threads in C on Linux/UNIX, x86 memory consistency model, races, deadlocks.

Requisites:

To be eligible to select this module as optional or elective, a student must: (1) be registered on a programme and year of study for which it is a formally available; (2) have basic proficiency in C programming (including dynamic memory allocation); (3) have basic knowledge of computer arithmetic (e.g., two's complement integer representation); and (4) have prior exposure to assembly language for some CPU.

香港六合彩中特网 Computer Science undergraduates will normally have met these prerequisites by having passed the relevant compulsory modules in prior years.

Module deliveries for 2024/25 academic year

Intended teaching term: Term 2 听听听 Undergraduate (FHEQ Level 6)

Teaching and assessment

Mode of study
In Person
Methods of assessment
60% Exam
40% Coursework
Mark scheme
Numeric Marks

Other information

Number of students on module in previous year
79
Module leader
Professor Mark Handley
Who to contact for more information
cs.undergraduate-students@ucl.ac.uk

Last updated

This module description was last updated on 19th August 2024.