Engelsk   Dansk
Velkommen til Københavns Universitets kursuskatalog

NDAK15006U  Advanced Computer Systems (ACS) Volume 2017/2018

Course information

Credit7,5 ECTS
LevelFull Degree Master
Duration1 block
Block 2
Course capacityNo limit
Continuing and further education
Study boardStudy Board of Mathematics and Computer Science
Contracting department
  • Department of Computer Science
Course responsible
  • Marcos António Vaz Salles (7-7970647566727643676c316e7831676e)
Saved on the 08-03-2017

MSc Programme in Computer Science


The overall purpose of this course is to offer students an understanding of techniques in computer systems with a focus on correctness and adherence to system properties, such as modularity and atomicity, while at the same time achieving high performance. The course exposes students to various system mechanisms, especially from distributed systems, database systems, and network systems.

The course will explore the following aspects:

  • System abstractions and design principles
  • Modularity with clients and services
  • Performance
  • Atomicity and transactions
  • Concurrency control and recovery
  • Reliability, fault-tolerance, and redundancy
  • Distributed protocols for replication
  • Large-scale data processing
Learning Outcome


  • Describe the design of transactional and distributed systems, including techniques for modularity, performance, and fault tolerance.
  • Explain how to employ strong modularity through a client-service abstraction as a paradigm to structure computer systems, while hiding complexity of implementation from clients.
  • Explain techniques for large-scale data processing.    



  • Implement systems that include mechanisms for modularity, atomicity, and fault tolerance.
  • Structure and conduct experiments to evaluate a system's performance.



  • Discuss design alternatives for a modular computer system, identifying desired system properties as well as describing mechanisms for improving performance while arguing for their correctness.
  • Analyze protocols for concurrency control and recovery, as well as for distribution and replication.
  • Apply principles of large-scale data processing to analyze concrete information-processing problems.




See Absalon when the course is set up.

Teaching and learning methods
Lectures and exercise sessions.
Academic qualifications
Basic principles of operating systems and/or databases.
Working knowledge of Java, including concurrency and communication mechanisms.
Notions of UNIX / shell scripting are helpful, but not required.
This course was formerly known as "Principles of Computer Systems Design".
Sign up
Self Service at KUnet
Credit7,5 ECTS
Type of assessment
Written assignment, 5 days
The final exam is a 5-day take home assignment.
Exam registration requirements

4-6 take home assignments, marked as pass/fail, must be passed to participate in the final exam.

AidAll aids allowed
Marking scale7-point grading scale
Censorship formExternal censorship

If student is not qualified then qualification can be achieved by approval of equivalent assignments with hand-in no later than 2 weeks before the re-exam.

The re-exam consists of resubmission of original exam assignment extended by an addendum and an oral examination of 25 minutes without preparation will ensue. The re-submission will be the basis for the oral exam; however, the oral exam will not be exclusively limited to the resubmission. The various elements of the re-exam will be assessed as a whole.

Criteria for exam assesment

See Learning Outcome.

Project work90
Theory exercises50
Saved on the 08-03-2017