Mini16: 16-bit x86 Operating System for Teaching



Current status


This project is created for bridging the gap between common college textbooks and the so-called "turtorials" like the one on I consider hands-on working a very important part of the teaching process when it comes to OS. From my own personal observation, almost all at-least half-successful OS course contains some form of programming assignments - in such courses students have to actually work on stuff like writing their own task scheduler; all the other courses from other colleges or universities that does not require this kind of involvement (including the ones provided by my alma mater) will definitely fail to accomplish whatever people expected when putting them into the curriculum.

There's also a more subtle problem: the main/ultimate goal of computer science major programme is (of course) to cultivate new computer scientists, but during the cultivating and educating process there's so much engineering-related stuff the students need to know but the college curriculum nonetheless tend to ignore. When a course is about some "big" topics, that course normally will require some kind of programming assignments, and in these assignments people (lecturer or TA; anyone who created the assignments) tend to set up everything for students, and all they need to do is to fill in the core part. This method, while sometimes convenient (especially for auto-grading), often does not provide enough focus on how does the workflow come into being. I believe learning about these things will help them understand other people's projects better and will be benificial in the long run. (This could be just a Mainland China only problem though.)


I decide to use a very different version scheme because this is not normal project. Instead of calling each "major version" a version it's called a "mark", so it's "mk0" "mk1" rather than "v0" "v1".