CompSys is giving a general introduction to computer systems. You will learn how computers works at a basic but fundamental level, how this reflects to the programs that you write, and understand the performance characteristic for these. We will cover topics from Machine architecture, Operating Systems, Computer Networks, and basic IT-Security. We will also introduce you to the C programming language, which will be used throughout the course.
Make sure that you read all the following carefully and be aware of updates.
CompSys have gotten a reputation of being both a hard and informative course. As you can see below (and the course description), we will cover a lot of different topics that conceptually are very different, in a short time. It is therefore important that you are ready for the course when we start in September, avoiding to fall behind during the first weeks.
We do not ask you to read ahead in the material. Also do not start to learn C, which we will use in CompSys. However, most of you are still inexperienced programmers and CompSys in very heavy on programming and program understanding. You need to think of programming as a craft, like playing an instrument. You have during the first year learned the basics of how it works. But if you lay it away over the summer (do not program for two months) you will lose much of these skills that you have gain over the first year.
This July and August we will have DIKU Summer of Programming, what you can use to get inspiration, help and support for your ideas.
Most material will be posted to Github in this repository. We recommend that you clone it to your machine and that you follow the updates that are made, by reading the log.
In the following is given a short overall description of the course. More details can be found further down.
- [BOH] Computer Systems: A programmer's perspective, Randal E. Bryant and David R. O'Hallaron, Pearson, 3rd and Global Edition, 2016, ISBN 13: 978-1292101767.
- [KR] Computer Networking: A Top-Down Approach, James F. Kurose and Keith W. Ross, Pearson, 8th and Global Edition, 2021, ISBN 13: 978-0135928608.
- [JG] Modern C, Jens Gustedt, Oct. 10, 2019, https://modernc.gforge.inria.fr/.
- Some notes and book chapters that will be made available through the detailed course schedule.
BOH and KR will be available at Academic Books at Biocenteret (http://www.academicbooks.dk/). Both are needed from the beginning of the course.
The general outline of CompSys will be the following:
- Week 36-37: Introduction to the abstract computing machine, C programming and data representation
- Week 38: Memory hierarchy and caching
- Week 39-41: Operating systems
- Week 42: Fall break
- Week 43-45: Computer networks - application and transport layer
- Week 46: No activities (reexam week)
- Week 47: Computer networks - security and efficiency
- Week 48-51: Machine architecture and assembler programming
- Week 52: Christmas vacation
- Week 1-2: Computer networks and security - network and link layer
- Week 3: Exam preparation and question hour
- Week 4: Exam
Be aware that CompSys is a semester course, which means that we will be teaching (including having normal exercise and assignments) throughout the exam period (weeks 44 and 45) of Block 1.
The exam is a written 4-hour open-book exam and will be held on Wednesday Jan 26. Course syllabus is all reading material, including the assignments. We will later publish example sets based on the previous exam iteration and further details on the exam procedure. It will be possible to get limited feedback on the exam performance afterwards.
The course will have both class exercises and open café sessions. The class exercises fill focus on smaller exercises that will make you better understand material from the lectures, prepare you for the details of the assignments, or prepare you for the exam.
The café sessions will, on the other hand, mainly be your possibility to get help with the assignments. However, it will also be possible to ask about exercises and other material. Also teachers will (mainly on Wednesdays) also be presents, so you can ask anything in an informal setting.
To qualify for the exam, a minimum number of points must be gained through the assignments. On purpose, to achieve this limit requires a basic understanding of the programming tasks of the assignments (including presentation of this though test and a report), but not a full understanding.
It is also important to note, that the main purpose of the assignment is not to prepare you for the exam; that is what the exercise classes are for. The assignments will focus on larger implementations and the practical learning goals of the course. Some questions in the exam will relate to the assignments, but qualifying of the exam (and even fully solving the assignments) will not be enough preparation to pass the exam. You need to make the exercises and the best way is to come to the exercise classes.
Teachers:
- Michael Kirkedal Thomsen (course organiser)
- Finn Schirmer Andersen
- Troels Henriksen
- David Marchant
TAs:
- Henriette Hansen
- Jens Kanstrup Larsen
- Joachim Fiil Larsen
- Jonas Reholt
- Jóhann Utne
- Lars Peter Jeppesen
- Magnus Joensen
- Mondays at 13:15-15:00
- Wednesdays at 10:15-12:00
All lectures will are in HCØ Aud 3.
Exercises will mainly be with physical help, but we expect also to schedule an option for online help.
- Mondays 15:30-17:00
- These classes are dedicated to exercises and not making assignments.
- Wednesdays 13:15-15:00
- These classes are dedicated to exercises and not making assignments.
Week 45, no teaching Wednesday, but Friday 10:15 - 12:00
-
Class 1: Henriette
- Monday: NBB 01.1.H.142
- Wednesday: DIKU 1-0-04
-
Class 2: Jens
- Monday: NBB 01.1.I.156
- Wednesday: DIKU 1-0-10
-
Class 3: Jonas
- Monday: NBB 01.2.H.142
- Wednesday: DIKU 1-0-22
-
Class 4: Jóhann
- Monday: NBB 01.2.I.158
- Wednesday: DIKU 1-0-26
-
Class 5: Lars
- Monday: NBB 01.3.H.142
- Wednesday: DIKU 1-0-30
-
Class 6: Joachim
- Monday: NBB 01.3.I.164
- Wednesday: DIKU 1-0-37
-
Class 7: Magnus
- Online
- Class 1: Henriette
- Monday: NBB 01.1.H.142
- Wednesday: DIKU 1-0-04
- Class 2: Jens
- Monday: NBB 01.1.I.156
- Wednesday: DIKU 1-0-10
- Class 3: Jonas
- Monday: NBB 01.2.H.142
- Wednesday: DIKU 1-0-22
- Class 4: Jóhann
- Monday: NBB 01.2.I.158
- Wednesday: DIKU 1-0-26
- Class 5: Lars
- Monday: NBB 01.3.H.142
- Wednesday: DIKU 1-0-30
- Class 6: Joachim (CLOSED)
- Class 7: Magnus
- Online
Map of Nørre Campus: https://nexs.ku.dk/kontakt/findvej/kort_norre-campus/
- Biocenter, Ole Maaløes Vej 5, https://www.biocenter.ku.dk/kort/
- DIKU, No further explanation needed
- NBB, Niels Bohr Building, Jagtvej 155 (other side of Jagtvej)
- HCØ, Aud 7 is 1st floor in Vandrehallen
- Wednesdays 15:15-17:00
- This sessions have a café structure and are dedicated to help with assignments and other open questions.
- Fridays 13:15-15:00
- TA organised café classes for help with assignments and exercises.
Wednesday:
- NBB 01.1.H.142
- NBB 01.1.I.156
- NBB 01.2.H.142
- NBB 01.2.I.158
Friday:
- A104
- A110
- A111
- C103 (only if others are full)
No cafés in week 45.
Wednesday 13:15 - 15:00
- DIKU 1-0-04
- DIKU 1-0-34
- DIKU 1-0-37
Friday 13:15 - 15:00
- DIKU 1-0-04
- DIKU 1-0-34
- DIKU 1-0-37
Wednesday:
- DIKU 1-0-04
- DIKU 1-0-10
- DIKU 1-0-18
- DIKU 1-0-22
- DIKU 1-0-14
Friday:
- HCØ A105
- HCØ A104
- HCØ A102
- HCØ A101
The CompSys instructors can help you find a find a study group, if you are missing one. A study group formation will be held on 8/9 at 12.00. Watch absalon for an announcement with details on the process. The instructors can also be the link to the study administration; if there is something you are in doubt about and feel better to ask a fellow student, they are available.
There are 7-8 assignment in total during the course with deadline roughly every second week with the following deadlines.
| Topic | Expected deadline |
|---|---|
| A0: Data representation | 19 Sep @ 16:00 |
| A1: Dynamic memory and caching | 10 Oct @ 16:00 |
| A2: Concurrency | 31 Oct @ 16:00 |
| A3: Client network distribution | 21 Nov @ 16:00 |
| A4: P2P networking and security | 05 Dec @ 16:00 |
| A5: Simple architecture. | 19 Dec @ 16:00 |
| A6: Pipelined architecture | 09 Jan @ 16:00 |
The assignments will be graded with points from 0 to 4 and it is not possible to re-hand-in any of the assignments.
Assignments are made to be solved in groups of preferably three students, but groups of two active students will also do. We strongly encourage not to work alone. Groups cannot be larger than three students. Each group must make their own solutions and must share implementations and report with other. You are allowed to discuss material and ideas.
Feedback to assignments will be given by TAs on the course. It will be given written and can be expected about two weeks after the hand-in. Feedback will focus on what could be approved in the assignment relating to both technical implementations, and report structure and material. The feedback may thus be useful for later assignment. Feedback will not give a direct justification of the evaluation in number of points.
We expect the correction of submissions to take about as long as a the submission (either one or two weeks).
The system in Absalon for group hand-ins does not always work as intended; we are therefore working around this. When you hand-in your assignments you are also asked to give a group.txt file, that contain the KU-ids of all group members terminated with a line-break; and only this. No names or other messages. The content of group.txt could look like:
dlb838
mdt733
agy623
You should still only make one submission per group; not one for each member. Note, that this means that the submission in Absalon is then only registered with the student doing the hand-in. However, we consider (behind Absalon) all valid KU-ids in the group.txt.
When your TA has corrected your submission all members of the group will be given the evaluation (comments and points). If some of your group members have gotten the evaluation, but you are missing, please, contact the course responsible. This often comes from a missing KU-id in the group.txt file. It is there very important that your report always contain both names and KU-ids of all group members, as the report is then used for resolution.
To qualify for the exam you are required to achieve at least 50 % of the total number of points in the assignments.
(NB! the text included a part where A0 and A1 had an collected weight. This was a reference to the assignments for last year, and should have been removed earlier.)
Furthermore, we will require that you show a reasonable understanding of all parts (ARK, OS, CN) of the course. This is firstly interpreted as achieving points at least 40 % points in each the of topics. To optimise your understanding of the course, and since all assignments are in the syllabus, we encourage you to work with and hand in all sets.
Mapping of topics to assignments:
| A0 | A1 | A2 | A3 | A4 | A5 | A6 | |
|---|---|---|---|---|---|---|---|
| Computer network | X | X | |||||
| Machine architecture | X | X | |||||
| Operating System | X | X |
The rule about 40 % of points for assignments in each topic, is included to make sure that you will uphold the learning goals for the course. We will teach you about many different abstractions and you should learn something about all of them. Without this rule you could attend the exam without e.g. learning anything about computer networks by getting enough points in the beginning of the course. The 40 % is chosen as it should be "easier" than the general rule of 50 %; it will therefore be set to 3 of the possible 8 points.
If you qualified for the exam the previous year, you can take the exam as a re-exam. If you qualified earlier years, then contact the course organiser.