
Hack the Kernel – Learn about operating systems online - krat0sprakhar
https://www.ops-class.org/
======
itsmemattchung
Thanks for sharing. I'm certainly bookmarking this page and revisit this
course after wrapping up CMU's 213[0]. How does this compare to Udacity's
"Introduction to Operating Systems?".

[0] If you are self studying, like me, CMU offers not only the lectures
online, but the labs as well:
[https://scs.hosted.panopto.com/Panopto/Pages/Sessions/List.a...](https://scs.hosted.panopto.com/Panopto/Pages/Sessions/List.aspx#folderID=%22b96d90ae-9871-4fae-91e2-b1627b43e25e%22)

~~~
krat0sprakhar
The CMU class looks interesting but it seems the assignments are behind a
login. A list of classes that have more open content -
[https://github.com/prakhar1989/awesome-
courses#systems](https://github.com/prakhar1989/awesome-courses#systems)

~~~
bitwiseand
I took 213 at CMU. Can't recommend it highly enough. A lot of other intro
systems courses are based off that. It is a prerequisite for most classes
moving forward at CMU. The textbook is also available online as a pdf (Google
it). First 2 or 3 labs deal with bitwise, assembly (buf overflow attacks -
bomb lab), then cache lab (matrix multiply performance), then signals, then
implementing malloc, and finally using pthread API / threads to create a proxy
server.

------
kev009
I wasn't expecting much at first as an OS professional, but wow this is great!
Flipping through the slides, it's just the right amount of info and context to
develop a working knowledge and vocabulary without much time investment or
getting overwhelmed or losing interest. Didn't look at the videos or
assignments yet.

If you work in some type of ops role this will really accelerate your career.

If you are a programmer and forgot or did not take an OS internals class,
ditto.

You will not unlock maximum throughput, minimum latency or a balance without
understanding these concepts.

------
antoncohen
Thanks for posting this. I was looking for more operating system courses. I'm
currently watching Kirk McKusick's FreeBSD Kernel Internals course [1], which
isn't available for free (the first hour is [2]), but I thought was worth the
money. I find is really amazing that I can watch a course taught by someone
who is such an expert in UNIX-like systems.

Along with a general in-depth OS course, I would like to find a Linux-specific
course. Does anyone know of a good Linux internals course?

[1]
[https://www.mckusick.com/courses/introdescrip.html](https://www.mckusick.com/courses/introdescrip.html)

[2]
[https://www.youtube.com/watch?v=nwbqBdghh6E](https://www.youtube.com/watch?v=nwbqBdghh6E)

~~~
bogomipz
The Linux Foundation has a bunch:

[https://training.linuxfoundation.org/linux-
courses](https://training.linuxfoundation.org/linux-courses)

~~~
bogomipz
I find it hard to believe someone would downvote a recommendation for
suggesting the Linux Foundation in response to a question asking if there were
any good courses on Linux Kernel internals. The quality is excellent the price
is inline with just about any 4 or 5 day vendor training class. I know of no
other such class outside of a university setting.

If you had didn't have a positive experience then please share it.

~~~
gautamsomani
Agreed. But its a bit expensive too.

------
Animats
UNIX-like kernels are easy, in that you don't have to have that much running
before you can run "Hello World". I'd like to see more on microkernels. You
have to have more pieces running before you get to "Hello World".

Also, the emphasis on virtual memory and page faults is becoming dated. Paging
out to disk is obsolete technology. RAM is too cheap, and mobile devices don't
page.

~~~
justin66
> Also, the emphasis on virtual memory and page faults is becoming dated.
> Paging out to disk is obsolete technology. RAM is too cheap, and mobile
> devices don't page.

I've got to admit, I thought of John Carmack advocating for pretty much the
opposite direction for operating systems earlier this year, for making greater
use of memory mapped files, unified virtual memory for CPU and GPU, and so on:
[https://twitter.com/ID_AA_Carmack/status/742191010013286400](https://twitter.com/ID_AA_Carmack/status/742191010013286400)

I wonder what you meant by "mobile devices don't page."

~~~
astrange
> I wonder what you meant by "mobile devices don't page."

Mobile devices have memory-mapped pages, but they don't have VM or overcommit.
Your process just gets killed if it's using too much memory.

Page faults are still important though… actually even more important.

~~~
justin66
Are we talking about the same thing when we say "mobile devices?" Like,
Android phones? Because if there's something lobotomized about their virtual
memory, that's something I'm curious about, if you could share a reference of
some sort.

~~~
astrange
I don't know if Android swaps (almost certainly not) but iOS does not swap. It
doesn't have a pager. Of course it does have "VM".

~~~
justin66
I dug into it a little. It's mostly for posterity at this point but if anyone
wants to read about it, look up the Android lowmemory killer, which is sort of
an enhancement to the OOM killer's functionality. It's a conventional enough
Linux virtual memory otherwise.

------
njade
I have to say - the course is very well organised. For me atleast, the
structure and flow is exactly how I approach my learning. A video overview ->
a though provoking discussion -> the problems -> hints -> academic paper ->
solution. Neat.

------
black_stallion
The professor who made this class is leaving UB next fall. I'd be lucky to be
able to attend this one last course under him(the class is gonna be a full
house this time) before he moves out of UB, a sad event in itself :(

~~~
redmi07
While the course / content is itself good. The attitude of the professor is
very questionable.

[https://blue.cse.buffalo.edu/posts/2016-10-22-the-best-
way-t...](https://blue.cse.buffalo.edu/posts/2016-10-22-the-best-way-to-not-
get-tenure/) is a rant from him.

Quiet a few PhD students have quit from him and does not have a good
reputation for being nice.

~~~
angry_octet
Please don't slander people without references from throwaway accounts.

~~~
angry_octet
Some long term HN habitués obviously (given the downvotes, though strong
oscillations at the moment) think slandering people anonymously is okay. I'm
curious why this would be. Is is because they think people would be penalised
unfairly (e.g. by their institution) if they "told the truth" about someone?
Wouldn't critism be more effective if you backed it with your identity?

Obviously when universities conduct class assessments they are able to do a
census of actual participants. Here anonymity is sensible.

Your slander would be more acceptable if you had used content from a first
hand experience, as it common on e.g. ratemyprofessor. Reading the (anonymous)
statements about him online it does seem like he is a polarising figure,
especially that the course works is a lot harder (in the sense of pushing
peoples' capabilities) but many people rate him as one of their best
lecturers...
[http://www.ratemyprofessors.com/ShowRatings.jsp?tid=1626392](http://www.ratemyprofessors.com/ShowRatings.jsp?tid=1626392)
[https://www.quora.com/How-good-is-the-MS-in-Computer-
Science...](https://www.quora.com/How-good-is-the-MS-in-Computer-Science-and-
Engineering-program-of-the-University-at-Buffalo-considering-the-quality-of-
education-job-internship-scene-and-part-time-jobs)

Overall I come away with the impression that a whole bunch of students were
totally unprepared for his class ("Need to know C", since when isn't C a
prerequisite for operating systems???). The projects sound too big for the
time available, something I remember well from undergraduate study.

------
unsignedinteger
Go bulls! I took Operating Systems with Kosar and worked on Pintos rather than
the OS-161 modules. Honestly don't know what I was thinking, Challen's class
seems far more interesting...

------
alistproducer2
[http://wiki.osdev.org/Main_Page](http://wiki.osdev.org/Main_Page) has a LOT
of great info on OS theory and practice as well.

Edit: added "as well." I don't want to give the impression that the OP is an
inferior source.

------
melvin0008
I have taken this course and the assignments are fun and challenging. Learnt a
lot.

------
bogomipz
Wow, this really great. Thank you for sharing.

I didn't any "about" link. Does anybody know who did this or what the
affiliation is? In this Youtube link I see "Buffalo":

[https://www.ops-
class.org/courses/buffalo/CSE421_Spring2015/...](https://www.ops-
class.org/courses/buffalo/CSE421_Spring2015/#_lectures)

Is this SUNY/Buffalo State maybe?

The lecturer in lecture 1/38 is fantastic. Does anybody know who this person
is?

~~~
deeebug
University at Buffalo, SUNY. The person that teaches the course (who is the
lectuerer) is Geoffrey Challen
([https://blue.cse.buffalo.edu/people/gwa/](https://blue.cse.buffalo.edu/people/gwa/))

Source: I took this class last semester (Spring 2016)

~~~
bogomipz
Thanks. Do you know if he made all this available then or is this something he
did in conjunction with SUNY? The reason I ask it because of the domain and it
simplicity of navigation.

------
Philipp__
This is godsend! Today I found some final notes and resources over the
internet, wanting to put my C/C++ skill to good use and build and learn
something. Always was attracted to OS (having OS class in a year but I
couldn't wait), so thanks for sharing this so much! Can't wait to get started
tonight!

------
hellllloworld
its the best class i've ever taken. definitely worth solving the assignments!

------
skmh
Wow! Thank you for sharing. Learnt a lot.

This is really worth keeping bookmarked. Highly recommended.

------
kim0
That actually looks quite good! Can anyone who took this training vouch for
it?

~~~
hellllloworld
Yes. Mark Zuckerberg vouched for it.
[https://postimg.org/image/4b23cfczh/](https://postimg.org/image/4b23cfczh/)

------
fatzombi
ᕙ(`▿´)ᕗ thanks alot for sharing

------
justin66
"Ops?"

No, really, I'm asking.

~~~
ignorestartups
In this context it probably means Operating Systems (i.e. low level
programming)?

(But i've been seeing the same term used for like System Administration /
"Support Services" / the I.T. Department in general, or something.)

------
RawData
Wow this looks pretty cool!

------
j_m_b
Do they have anything like this for learning how to transpile from lisp to
other languages? =)

~~~
aban
Not a course, but here's a nice blog post [0] on writing a lisp->JS transpiler
(350 LOC) that was recently shared [1] on /r/haskell.

[0]: [http://gilmi.xyz/post/2016/10/14/lisp-to-
js](http://gilmi.xyz/post/2016/10/14/lisp-to-js)

[1]:
[https://www.reddit.com/r/haskell/comments/57sg9q/building_a_...](https://www.reddit.com/r/haskell/comments/57sg9q/building_a_lispjs_transpiler_from_scratch_in_350/)

------
googler1500
Very nice. Look forward to using this.

------
jza00425
Mark this, will check it later. Thx

