Fundamentals of Computer Systems, Autumn 2020
Description
Modern computer systems consist out of many layers of abstraction and have the possibility to communicate with other systems in many ways. During this course, we take a journey through these layers and the communication mechanisms.
On the top layer of general purpose computers, phones, etc. we find applications, which are the interface between humans and the computer. That applications run smoothly and safely is ensured by an operating system. The operating system is our first part of the journey, during which we will see how operating systems schedule processes, connect applications with hardware and ensure a smooth operation of the computer.
The next part of the journey is how computer communicate with each other through networks. We start again from the perspective of an application and then make our way through the operating system all the way to how data is transported physically from one computer to another. This will allow us to see how data corruption and manipulation can be prevented.
In the final part of the journey, we go all the way down to the circuits underlying computer systems. Here, we will see how circuits are built, a CPU works and how we can make our own computer for special tasks. We end on the lowest level: the physical underpinnings of computers. Here we will see how transistors process the information we feed them all the way from the application down here.
Contact
Communication will mainly happen through the fora on Brightspace. Individual questions should be directed to LIACS - Fundamentals of Computer Systems <func@liacs.leidenuniv.nl> (and not to personal email addresses, as these may get lost among other emails). The course is also in the studiegids.
What you will do
- Study a topic of choice, see below.
-
Prepare three presentations or pod-casts of this topic as a team, which all have to prepared together but are given each by one team member. For teams of four, this means that one team member can, for example, do the final project presentation instead, while teams of three can share that presentation.
The three outputs should explain different aspects of your study topic. This can either be by increasing complexity, in layers or also complementary aspects.
- Propose and carry out a small project that fits your study topic. The project consists also of a small written report at the end.
- Present your project to your colleagues.
The timeline of all of this can be found below.
Assessment method
The final grade is composed as follows.
- Oral subject presentation: 40%
- Project (execution, outcome and written report): 40%
- Oral project presentation: 20%
The course is passed if all three parts have been completed and the average grade (rounded) is at least 6. If the course is not passed, the oral subject presentation (1) and project presentation (3) can be individually retaken. Should this not be sufficient to pass the course, an individual oral examination on one subject, chosen by the instructor, can be offered, but only a passing grade can be obtained in this way.
Reading list
Slides from the introductory lectures will be provided. The course is mainly based on the following books, the introductory chapters of which constitute the basic knowledge of the course.
- Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau. Operating Systems: Three Easy Pieces, Version 1.00. Arpaci-Dusseau Books, 2018. (Freely available)
- Jim Kurose, Keith Ross. Computer Networking: A Top Down Approach, 8th ed. Pearson, 2020. (7th edition on Library Genesis)
- David M. Harris and Sarah L. Harris. Digital design and computer architecture, 2nd ed. Elsevier, 2012. (E-Book available via the above link)
The course may also refer to the following books, which can be used for further self-study.
- Abraham Silberschatz, Peter B Galvin and Greg Gagne. Operating System Concepts, 10th ed. Wiley Publishing, 2018.
- Andrew S. Tanenbaum. Computer Networks, 5th ed. Pearson, 2011.
- Blaine Readler. Verilog by Example: A Concise Introduction for FPGA Design, Full ARC Press, 2011.
- Adel S Sedra, Kenneth C. Smith, Tony Chan Carusone and Vincent Gaudet. Microelectronic Circuits, 8th ed. Oxford University Press, 2020.
- Charles Petzold. Code: The Hidden Language of Computer Hardware and Software. Microsoft Press, 2000.
- David M. Harris and Sarah L. Harris. Digital design and computer architecture, ARM Edition, Elsevier, 2016.
Course Schedule
Week 1: Organisation and Introduction
Wednesday, 02 September, 11:15
Week 2: Overview over Course Content and Operating Systems
Wednesday, 09 September, 11:15
In this first overview lecture, we get an overview over the three areas of this course: operating systems, computer architecture and computer networks. We then begin by discussing the essentials of operating systems. The presentation is online available for personal consumption, as is the recording of the lecture. Enjoy!
Week 3: Cancelled
Wednesday, 16 September, 11:15
The lecture had to be cancelled due to personal circumstances.
Week 4: Overview Lecture Computer Architecture
Wednesday, 23 September, 11:15
In this second overview lecture, we discuss the essentials of computer architecture. You can go through the presentation by yourself, but I recommend watching also the recording to get further explanation.
Week 5: Overview Computer Networks
Wednesday, 30 September, 11:15
This week, we do two things: we have a lecture and you will pick your study topic.
-
Overview Lecture Computer Networks (Wed, 30 Sep, 11:15)
In this third, and last, overview lecture, we discuss the essentials of computer networks. For convenience, you can find the presentation online.
-
Pick Study Topic (Deadline: Fri, 02 Oct, 23:59 CEST)
During this week, you will have to pick with your group a study topic. To do so, take a look at the map of study topics and, if needed, go through the overview lectures to find your topics of interest. When you have identified at least three possible topics, go to the selection page to fill in the preferences with your group. You have to fill in your selection latest by Fri, 02 Oct, 23:59 CEST.
Note that, in order to study a topic, you will have to study all indicated chapters/sections from the root to the topic. You may find data integrity under in operating systems → persistence → data integrity, and thus you have to study chapter 1–4, 35–36, 46 and 45 for this topic. Don’t worry, many of these are very short! If a chapter/section is marked with an asterisk, then it is optional.
Based on your preferences, we will assign you a topic that you will then study with your group and turn into short presentations/pod-casts for your colleagues in this course (the deadlines are indicated below). Starting with week 8 you will also propose and execute a small project based on the topic of your choice.
Thus, choose topics that you think you would enjoy studying!
Week 6: Beginning of Self-Study
Wednesday, 07 October, 11:15
This week, we will distribute the study topics and you will receive your topic latest Monday, 05 October.
The online interaction on Wed, 07 Oct, 11:15 will be a general Q&A session and individual study help.
Week 7: Self-Study
Wednesday, 14 October, 11:15
Individual study help during online interaction (presence not mandatory).
Week 8: Second Presentation and 1st Discussion Session
Note: Nothing on 21 October (test week) and the time changes from this week on!
- 1st Presentation due Monday, 26 October, 23:59 CEST
- Presentation session with discussion Wednesday, 28 October, 14:15 (presence mandatory)
- Project proposal due Friday, 30 October, 23:59 CEST
Week 9: Beginning of Project Work and 2nd Discussion Session
- Proposal feedback by Wednesday, 04 November
- Discussion session Wednesday, 04 November, 14:15
Week 10: Second Presentation and 3rd Discussion Session
- 2nd presentation due Monday, 09 November, 23:59 CEST
- Discussion session Wednesday, 11 November, 14:15
Week 11: Project Milestone and 4th Discussion Session
- Discussion session – Wednesday, 18 November, 14:15
- Project milestone Friday, 20 November, 23:59 CEST
Week 12: Third Presentation and 5th Discussion Session
- 3rd presentation due Monday, 23 November, 23:59 CEST
- Discussion session Wednesday, 25 November, 14:15
Week 13: 6th Discussion Session
Wednesday, 02 December, 14:15
- Discussion session Wed, 02 Dec, 14:15
Week 14: Project Conclusion and 7th Discussion Session
Wednesday, 09 December, 14:15
- Discussion session Wed, 09 Dec, 14:15
- Project with report due Friday, 11 December, 23:59 CEST
Project Presentation
In the project presentation, you introduce your colleagues to your project, what you have done, and how the project went. The presentations can be pre-recorded and submitted at your convenience, also already in December is possible. We will have a final session where we get together to discuss the projects and finish the course.
-
Submission of pre-recorded presentations due Monday, 11 January, 08:00 CEST.
-
Presentation session starting Monday, 11 January, 09:00 (we consume and discuss together the pre-recorded presentations)
Topic Assignment
Group | Topic |
---|---|
1 | Software-defined Networks |
2 | Locks |
3 | TCP |
4 | Encryption, Integrity, Signatures |
5 | Access Control |
6 | Cryptography |
7 | Hard Disk Drives and RAID |
8 | Sharing CPU |
9 | Addressing modes and x86 (was: Arithmetic and Sequential Blocks) |
10 | E-Mail and DNS |
11 | X/Z and Karnaugh maps |
12 | Memory and Logic arrays |
13 | Advanced Scheduling |
14 | Timing and Parallelism |
15 | Crash Consistency |
16 | Sharing Memory |
17 | Embedded I/O (Micro-controller) |
18 | Paging |
19 | Data Plane (IP) |
20 | Authentication |
21 | Data Integrity |
22 | Concurrency Bugs |
23 | Basic File Systems |
24 | Analogue Signals and Transistors |
25 | Web and HTTP |
26 | WiFi (was: Condition Variables) |
28 | Programming and Compiling |
29 | P2P and Streaming |
30 | SSD |
31 | Multiplexer and Timing |
32 | Operational Security |
33 | WiFi |
34 | Error Correction |
35 | Control Plane |
37 | Multiple access and Switched LANs |
38 | Securing Communication |
39 | Memory |