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 `_.