
Labs for Rust OS – CS-3210 at Georgia Tech - tsgates
https://tc.gts3.org/cs3210/2020/spring/lab.html
======
itsmemattchung
As a current graduate student specializing in systems at Georgia Tech OMSCS, I
would love to see this class offered online. What's piques my interest is are
the following two labs: preemptive multitasking (i.e. implementing processes)
and FAT32 file system (i.e. implementing a file system, something I've always
wanted to do)

~~~
robot
Just curious, would you pay for a practical course if it existed? Asking as I
am planning to develop one.

~~~
elteto
I probably would. I’m also in OMSCS and the two operating systems classes
offered cover a very different spectrum (GIOS is more about learning the Linux
OS interface and AOS is about experimental concepts in OS development). There
isn’t a “back to basics” OS class unfortunately.

~~~
robot
Thanks for feedback, I am considering both (a) Linux interface (b) Back to
basics building at least a decent multitasking kernel with memory management.

~~~
elteto
I think building some sort of OS from scratch would be a wonderful class. I've
actually thought about what _I_ would like to see in a class like this before.
These ideas might be useful to you:

1\. Use a widely available architecture. This practically means x86 or x86_64.
Nothing against RPis, for example, it's just that _everyone_ is more likely to
have some sort of Intel desktop/laptop before they even have an RPi.

2\. Start from the very basics: booting up and go into a NOP loop should be
one of the first lessons.

3\. Don't need to go too far: basic but functional implementations of things
like memory management, multitasking, file systems, etc. are enough.

4\. By the end, have a simple OS that boots up to a basic shell, is capable of
reading/writing to something like FAT16 and can run multiple tasks in
parallel.

------
azhenley
The Reference Materials section has some nice tutorials, including one written
by my colleague: Making a RISC-V Operating System using Rust, which has been
discussed on HN several times.

[http://osblog.stephenmarz.com/](http://osblog.stephenmarz.com/)

------
musicale
It looks like it's based on Stanford's CS140e.

[https://github.com/dddrrreee/cs140e-20win/](https://github.com/dddrrreee/cs140e-20win/)

[https://cs140e.sergio.bz/syllabus/](https://cs140e.sergio.bz/syllabus/)

~~~
Smerity
On the linked page it's noted:

> The labs used in CS3210 are largely based on the materials originally
> developed for CS140e: An Experimental Course on Operating Systems by Sergio
> Benitez.

~~~
tsgates
A "big" difference is that we have VM, Multicore and Networking stack! Also,
it uses Rust 2018.

~~~
musicale
Networking drivers and APIs are nice to have - they are often omitted in OS
project assignments because it's hard to fit them into the course schedule.

However for an IoT/embedded OS networking is pretty essential.

------
scythe
Wow. CS 3210 is in Rust now? That course contributed significantly to me
getting my first real job. Back then we wrote Linux kernel modules.

~~~
jcranmer
I'll also have to say that the course labs look far more interesting than they
were a decade ago. Implementing a new linux syscall to readtsc isn't
particularly exciting...

~~~
ethbro
CS 3210 & 6210 were my favorite undergrad courses.

Incredibly frustrating, but I learned more general concepts in each semester
than in anything else.

I still remember trying to decide between 6210 and another elective. I asked
Bill Leahy, who in typically efficiency replied, "Well, Tom Conte has a
Porsche and a Ferrari." I figured that was a fair criteria in deciding who to
learn from.

~~~
dboon
Bill Leahy and Tom Conte are god damn treasures to this world. I love them
both.

------
non-entity
Wow this looks pretty cool! Courses like this are why I kinda wish I had gone
to school and done a (good) CS program.

------
mindwok
This is awesome... Really hope they offer this course on EdX or Coursera or
something with full materials

------
kediz
I heard it is amazingly good. Here is another class taught by the same
professor about security:
[https://tc.gts3.org/cs6265/2019/info.html](https://tc.gts3.org/cs6265/2019/info.html)

------
dgellow
Is there an equivalent course in C or C++? I would be interested to take it if
that was the case (nothing against Rust, I just don't see myself learning a
new language just for a course)

~~~
tndl
I don't know for sure, but I imagine the similar courses referenced in the
acknowledgements use C:
[https://tc.gts3.org/cs3210/2020/spring/info.html#acknowledgm...](https://tc.gts3.org/cs3210/2020/spring/info.html#acknowledgments)

------
quibono
The labs seem to be using Pi 3; if I wanted to follow along I guess there
shouldn't be an issue with using Raspberry Pi 4 instead of 3?

~~~
tndl
I'm trying to figure out if a Pi 4 or 3A will work as well.

------
leshow
cs140e was a phenomenal class that I learned a lot doing, highly recommend to
anyone that wants to learn more Rust or systems topics

