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 2018 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. Any questions made by email will be answered, and I hope to arrange a couple of group meetings, likely on Mondays or Wednesdays, when also the Finnish lectures take place.
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. Most are, though. As of now, it is safe to start reading from the beginning.
Here is a short-list:
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 2018 international students when these are determined. As of now, you may do 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.
Berkeley CS162 Fall 2011 lectures 1, 2, 3, 4, 5, 6, 9, 15, 16, 19, 20, 21 are pretty much to the point. Link to videos: https://www.youtube.com/playlist?list=PLA32F8ECF0A0ED16A
There seems to be a matching course archive site at http://inst.eecs.berkeley.edu/~cs162/fa11/
Lectures other than the ones listed seem to deal more with databases, internet, security, and software engineering concepts, which we teach on other courses, not ITKA203 that deals mostly with operating system basics. I don't have prior experience about the videos, but I sampled some of them quickly, and they seem to be very well in line with what I (try to) teach on my Finnish lectures.
Please, keep a learning diary of the lectures, if you start to watch them. That way I can verify that you have been watching. Of each lecture video that I listed, answer the following questions:
Returning the learning diary in the end will is likely to be one required part of the course mode.