As with lectures, we'll interact online via A SPECIAL Zoom room (mainly) for lab work.
Schedule: The first lab is scheduled at the end of april, but try to work on lab 0 before that. You will also need to do quite a bit of work outside scheduled lab time. During the scheduled lab ours, we (Flavius and Alexandru) will be online in the lab Zoom room, answering questions (in breakout rooms for instance) and checking your solutions. If you try to access the room, you will be placed in a waiting queue - so please open the Zoom room only if you have questions or you want to present your solution.
Work: Please try to work in pairs (virtually) since it's more fun, improves learning, and makes it easier for us (fewer solutions to check). Use your own computers, Docker and git to make things smooth. This will also allow you to log in to Zoom properly and interact with us.
Getting a Pass: There are a number of ways for you to show us your solutions:
- show how they run using a video conferencing system (e.g. Zoom, Skype) - have both group members present and create a meeting or ask us to create a breakout room (point being - private from the rest of the class). If time allows, we can do this during the scheduled lab ours. Otherwise we can schedule meetings on the fly. You may show us several labs at a time.
- give access to a git repository (should be private) where you have your solution(s). Once we had a look and tried to run them, we might come back with questions to you.
- (in the worst case) send us files - this might work with the shell lab, but for the others it may be a bit problematic due to the number of files involved.
- other ways, that we have not yet explored
The labs in this course revolve around extending an educational OS, called PintOS. Even if the assignments are based on some of the classic PintOS assignments, they are especially designed for you in this course.
We provide a Docker image (available via DockerHub), that loads and sets up everything for you in a Docker container you can run on your own machine (you will need to first install Docker by yourself on your machine). Once you start working on your PintOS in the Docker machine, you are not allowed to publish the container on Docker Hub or anywhere else.
You may also work on the assignments using the university lab machines, in which case you should clone the git repository with the assignments as detailed later. You are welcome to use your own git repository to save your progress (we do not provide one for you), but you are not allowed to make this publicly accessible.
You will be programming in C, which might be something new to many of you. Lecture 2 is dedicated to teaching you (more) C. We recommend you to learn more about C in your own spare time. The C Programming Language, by Kernighan and Ritchie is the reference book for this (available as PDF on the Internet); for more on pointers and references have a look at Chapters 5 and 6 in that book.
Four plus One Labs
There are five lab assignments in the course, with the first one (Lab 0) being only a preparatory lab which you will need to carry out on your own, before Lab 2. Lab 0 will not be graded/checked.
The rest of four (4) actual labs are allocated in the Linux lab room Hacke in E-house. Please choose one of the groups you would like to be in, either Group 1 between 8-10 or Group 2 between 10-12 (usually - check the official schedule) and register online! I strongly encourage you to do as much as possible BEFORE you come to the lab - the labs are not trivial and you might take longer than two hours to complete them.
Lab Assignments Overview
You can enroll and form lab groups here.
|Lab 0||Docker or git||any time before Lab 2||Get familiar with PintOS on your own time!||use the provided Docker image as described in Lab0 or use the basement Linux plus git repo|
|Lab 1||shell (.tar.gz)||28/4||Implementing a UNIX shell.||on any Linux/Mac OS X (e.g. basement); also works in the Docker container provided|
|Lab 2||see above||7/5||PintOS Basic System Calls||in the provided Docker container or the basement Linux|
|Lab 3||see above||14/5||PintOS Advanced System Calls||in the provided Docker container or the basement Linux|
|PintOS Virtual Memory||in the provided Docker container or the basement Linux|