Overview ======== Labs #### There are 8 + 1 labs in this course. You'll learn how to **design** a kernel by **implementing** it yourself. There are 2 types of exercises in each lab. ================== =========================================================================================== ``basic`` You're required to implement it by the description, they take up major of your scores. ``advanced`` You can implement some of them to get a bonus. ================== =========================================================================================== .. important:: You must finish todos in exercises to get scores. There is no limitation on which programming language you should use for the labs. However, there are a lot of things that are language-dependent and even compiler-dependent. You need to manage them yourself. You can check last year's `course website `_ and `submission repository `_ to see what you might need to do during this semester. Yet, the requirements and descriptions may differ this semester. Grading Policy ############## It's allowed and recommended to check others code, but you still need to write it on your own instead of copy/paste. TAs validate plagiarism by asking for the detail of your implementation. If you can't elaborate your code clearly, you only get 70% of the score. Your code may work on an emulator even it's wrong. Hence, you get 90% of the score if your code works on QEMU but not on real rpi3. For late hand-in, the penalty is 1% per week. Disclaimer ########## We're not kernel developers or experienced embedded system developers. Commonly, we made mistakes in the description. If you find any of them, send an issue or PR to `this GitHub repo `_.