COMP204

Computer Systems and their Implementation

 

Administration

  1. Resources (this page): Course Module Web Page

  2. Assessment Weightings: 80% exam, 2 assignments of 10% each

  3. Syllabus: COMP204

  4. Announcements: At lectures, on my teaching pages,  and through the RSS feed

  5. Lecture Times:

  6. Tues: 14.00 - 15.00 (LIFS-LT2)

  7. Thurs: 15.00 - 16.00 (REN-LT6)

  8. Fri: 12.00 - 13.00 (NICH-LT)

  9. Practical Classes:

  10. Tuesday: 09.00 - 11.00 (H105, George Holt Building)

  11. Thursday: 11.00 - 13.00 (H116, George Holt Building)

  12. Dates of Practical Classes will be announced in the Lectures

  13. Assignment Deadlines:

  14. Assignment 1 - 4th March ’11, 3pm

  15. Assignment 2 - 8th April ’11, 3pm

The aims of this module are to create an understanding of how the principal software components of modern computer systems perform their functions, and how they are constructed and interact with each other.

COMP204

Computer Systems and their Implementation

Module Description

Aims:

To create an understanding of how the principal software components of modern computer systems perform their functions, and how they are constructed and interact with each other.

 

Learning Outcomes:

At the end of the module, students should be able to construct programs which demonstrate in a simple form the operation of examples of systems programs, including simple compilers and programs that involve management of concurrent processes.

 

Assessment:

  1. 20% continual assessment exercises, consisting of two Java programming assignments, each worth 10%.

  2. 80% exam in May.  Details of the assignments will appear soon...

 

Approximate Syllabus:

  1. Operating systems concepts: Communicating sequential processes, process management and scheduling. Resource allocation, mutual exclusion, semaphores, deadlock.

  2. Concurrent programming in Java: threads and how to program them in Java, the Producer-Consumer problem.

  3. Memory management: storage organisation methods, paging, segmentation, memory allocation, housekeeping.

  4. Input/output and files: filestore organisation, buffering, caching, store allocation and device handling.

  5. Compilers: a practical overview of compiler construction, lexical analysis, parsing, code generation, code optimisation, interpretation examined in the context of Java and available software tools.

  6. Runtime store organisation: dynamic store allocation, treatment of recursion.

  7. Possible overview of further related topics.


Recommended Texts

  1. Operating System Concepts (8th edition)  Silberschatz, Galvin and Gagne (Wiley).

  2.  Understanding Operating Systems (4th edition)  Flynn and McHoes (Thomson).

  3.  Compiler Construction: Principles and Practice  Louden (Thomson)

  4.  Programming Language Processors in Java  Watt and Brown (Prentice Hall).

 

Lecture notes include material based on examples from all of the above texts.