Going through Linux From Scratch[1] manually and reading each component, while allowing yourself the time to look into interesting bits of each, is essentially this. I did it back in the early 2000's, and view it as one of the most useful educations I've ever gotten on how a Unix-like system functions (even if a lot of the knowledge is somewhat obsoleted now for many Linux distros with the introduction of systemd). I was doing it as research for how to ship a custom distro for a small purpose-built device, and while that never panned out, I've never once regretted spending the time to go through the process.
Re:The missing semester of CS education
by HPsquared on Tuesday February 04, 2020 @11:13AM
(#22237239)
This - it methodically takes you through all the little details inside the system that are usually taken for granted and hugely improved my confidence working with Linux. It also taught me a lot of what's in this class (e.g. editors, shell scripting, even a fair bit of troubleshooting)
Re:The missing semester of CS education
by kevstev on Tuesday February 04, 2020 @11:23AM
(#22237385)
I never successfully made it through LFS, maybe this is the year :)
Re:The missing semester of CS education
by commandersaki on Monday February 03, 2020 @11:20PM
(#22232365)
I did a similar Unix course. It was on quarter based system so it only lasted 3 months. We learned Unix from first principles. There were programming assignments that started off as shell scripts. We wrote manpages for our shell scripts. Then we learned C with the expectation you figure out the hard parts really really quickly (we were a Java school). We implemented various different C and Unix programs. We even reimplemented some of our shell scripts. We implemented a custom version of ls(1) with built-in sorting features.
In the last 3 weeks we built a full-blown Bourne shell in C including background jobs, shell/environment variables, pipelines, i/o redirection, lex/yacc parsing, etc. A lot of the features were extra credit (e.g. single pipeline a | b, versus infinite pipeline a | b | ...).
The class is unforgettable in my mind. I now mentally parse everything I do in the shell and imagine system call tracing every program I run.
Re:The missing semester of CS education
by aquaticsunset on Monday February 03, 2020 @10:59PM
(#22232247)
We had a very similar course at Penn State, as well. It's among three courses that I learned the absolute most from, and have had a huge amount of applicability to my life and career.
Re:The missing semester of CS education
by awbraunstein on Tuesday February 04, 2020 @12:37AM
(#22232738)
I took this class as well and agree that it was the most useful course I took at Penn. I still use all of the things that I learned in this class every day (especially emacs). Luckily, I took it early in school and it made subsequent classes so much easier. Thank you Perry Metzger!
Re:The missing semester of CS education
by hatmatrix on Tuesday February 04, 2020 @10:02AM
(#22236243)
He recently had a really interesting talk called Emacs: The Editor for the Next Forty Years [1]
Re:The missing semester of CS education
by abhisuri97 on Monday February 03, 2020 @11:51PM
(#22232524)
Nice to see some Penn alum on HN :)
Edit: And since this got some traction, here is the current version of the class: https://www.cis.upenn.edu/~cis191/ it looks pretty similar to what I took but they added a little bit of Python.