Want to build your own OS? Learn how things work at a lower level? Dust off or build up some assembly skills? Get into that nitty gritty C? Then this class is for you! Suggested skillset:
Prior programming experience in procedural languages
The ability to read and parse C (writing not required, we'll get into that)
Prior familiarization with assembly, the ability to code in assembly is NOT required, that will be taught along the way.
Knowledge of common compilers, linkers, and assemblers
HEX and Binary understanding
Rudimentary LINUX/UNIX experience (for explaining concepts)
Basic knowledge of usage of virtualization tools such as BOCHS, VirtualBox, QEMU, VMware workstation, etc. "Low level programming is fun and exciting!" Starting from where the BIOS leaves us to jumping into 64-bit LONG mode on x86_64 (amd64/EMT64 as the manufactures like to call them!) processors, we'll start at the beginning and build upwards! Knock down and explore topics that look daunting, but can be broken down into simple blocks: Interrupts (Hardware vs Software)
User Interfaces (CLI to start with...)
And other great things! Date and time to be determined, mainly, on the group's idea of what time and day would work the best and available scheduled times. Individual segments for the main class after fundamentals are covered, will be part lecture, part development driven. This will be a long many session class covering all of the topics, they will be split into separate sections so you can attend only the sections you wish to, but there will be a class long project culminating in a complete OS environment. I envision this taking a few months to run through the basics and get a basic environment going. Moving on to advanced topics after we've got a functional system developed will be class consensus directed as to what we wish to do with the system, and what features we want to add. This will be a seperate group of classes to be organized when we have ideas about what to pursue as a group afterwards.