Our main course is lectured in Finnish, and the original course material is also mostly in Finnish, too. This page attempts to list source material that matches the Finnish course content most closely.
Course guidance in English will be available from March to May 2019 for international students of the University of Jyväskylä who are participating the course. Please contact the lecturer for details, if you have not done this already. We'll discuss the details in a kick-start meeting on Tue 19 March, 2019.
The method of student performance evaluation and grading will be decided before May, and it will be at least loosely based on the same learning objectives as on the Finnish main course. The learning objectives are listed in here. Because of the manageable number of non-Finnish students, I currently believe that personal evaluation based on written exercises, oral discussion, perhaps with real-time exercises, will be applicable.
Contents
Here is a recommended order of doing things:
We'll use "Operating Systems: Three Easy Pieces" by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau http://pages.cs.wisc.edu/~remzi/OSTEP/
Not all of the textbook sections are relevant to own, short and introductory, course. Most are, though. Here is a list of sections that cover the theoretical topics of our Finnish course version:
Preface - to understand what we're about to read.
Table of contents - to know what could be covered in double the time of our short course.
1 Dialogue - a first "dialogue" to grasp the style of the book.
2 Introduction - setting the targets: what is to be learned here and what on other courses. If you play with the related code package please make sure you first understand how to kill processes! The example codes will easily end up burning much more than 100% of CPU time of the system you run them on! It would not be nice on a multiuser system such as our university servers! Ask for help, if needed.
3 Dialogue on virtualization
5 Process API (homeworks seem nice, but the Finns don't do that much, so they are optional, although fun and instructive...)
(on our short course, we skip 8, 9, and 10)
12 Dialogue on memory virtualization
14 Memory API (highly useful, although optional on the Finnish course)
(on our short course, we skip 17)
19 Translation Lookaside Buffers
(we skip 23)
24 Summary on virtual memory
25 Dialogue on Concurrency.
29 Locked Data Structures (the Finns get much less information about this... only the basic idea of a locked variable or so...)
(we skip 33)
34 Summary on Concurrency
35 Dialogue on Persistence
38 RAID (The Finns get about 15 minutes of RAID and that's it... basic idea only...)
(we skip 41)
(we skip 43, 44, 45)
46 Summary on Persistence
(we skip 47-51, i.e., the rest of the book)
Chapters 1-12 and 24-26 or so of the book http://linuxcommand.org/tlcl.php which seems to have a free PDF download available.
In addition, "man" pages and examples of "find", "grep", "cat"
Shell scripting basics from: http://www.tldp.org/LDP/Bash-Beginners-Guide/html/ or http://www.learnshell.org/ or something similar..
C language basics from: http://www.learn-c.org/ (up to Chapter "Structures") or http://www.tutorialspoint.com/cprogramming/ (up to Chapter "C - Structures")
After rudimentary C, what completes our breadth-first overview is just a tiny bit of assembly language and command line debugging of compiled C code. Perfect material would be Chapters 1-4 and Appendix F of "Programming from the ground up" http://programminggroundup.blogspot.fi/
Finalize with something like (again "first Google hits"): http://www.thegeekstuff.com/2010/03/debug-c-program-using-gdb/ http://www.unknownroad.com/rtfm/gdbtut/ https://sourceware.org/gdb/onlinedocs/gdb/
One objective of the course is to learn how to use a Linux server machine via an ssh connection and text-based terminal. After learning the command line, the work with C programming and gdb can continue at on of the identical server machines jalava.cc.jyu.fi or halava.cc.jyu.fi provided for students and staff - I didn't find instructions in English, but it is basically quite simple (unless we need some troubleshooting):
- not knowing, or randomly banging the keys can be potentially dangerous (to your own files and data) very fast.
- So keep children, cats, people angry at you, etc. away from the keyboard while keypresses are going to a shell session!
- Type carefully - at first only the commands given in trustworthy tutorials that completely explain what the command is supposed to do. Every character matters, as you'll find out soon enough :)
These warnings are necessary at first, before you get to the point where you can safely improvise your own experiments and start the actual fun of it. The most important learning objective, of course, is to get to that point where you can start experimenting both safely and comfortably.
Learning and experimenting might be somewhat easier if you have your own Unix-like system with bash installed. Any Linux will do, Mac OSX terminal will do (although the book I linked might use some Linux-specific stuff), and on Windows you could install a virtual machine with any operating system.. But the university servers have a complete Linux environment readily at your use, and one of the goals is to learn remote use over the net, which is also one common and useful real-world application of the command line interface.
Naturally, the university systems do not allow regular users to do any system administration tasks, so trying anything with "sudo" or "su" needs to be done in your own system. (After you are very, very sure, what "sudo" means; system administration is not part of our introductory course).
There will be some programming exercises to verify your skills gained from the tutorials. Exact details will be announced later; I'll be notifying the Spring 2019 international students when these are determined. Expected outcome: exercises from the beginning of the tutorials linked above. The indicated chapters and "up-to chapter" notes apply. No need to go too deep on this course. We go into the topic "breadth-first", and "practical-skills-first".
Berkeley CS162 is just one of possible English courses available. They seem to have lecture videos available:
http://www.infocobuild.com/education/audio-video-courses/computer-science/CS162-Spring2015-Berkeley/
Not all content is relevant on our course. They have 25 lectures whereas we have 16, so they can and will go deeper. Also, it is possible that practicals such as shell, C, and assembly language are not covered in order to go deeper into theory about everything.
In Spring 2019, I believe we'll do fine with our own computer class meetings. But, that said, I sampled the Berkeley videos, and they rock!