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 2016 for international students of the University of Jyväskylä who are taking part on 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 weekly.
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.
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.
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/
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.
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 2016 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 unnecessarily deep on this course.