Course Syllabus
NOTE: Some links in this syllabus page may only be accessible to currently enrolled students.
In this course we will learn a lot of interesting stuff about modern operating systems, such as, communicating with them using system calls, creating and managing multiple processes at once, creating multiple threads, getting processes and threads to synchronize their actions, and how processes can communicate with each other, when they are on the same machine, as well as over the network. We will be extensively using Unix, C and its libraries, and Rust in this course. Knowledge of Rust is not a prerequisite for this course and we will teach you the necessary material.
At the completion of the course, you will be able to ...
- Justify the need for a multi-programmed operating system and explain the general structure of such systems.
- Select system calls for appropriate uses.
- Compare and contrast the process and thread abstractions and select an appropriate abstraction when needed.
- Assess and solve possible issues related to concurrent execution.
- Explain the file abstraction and system level I/O.
- Compare and choose mechanisms for inter-process communication.
- Write software by applying appropriate system programming principles and techniques.
Instructor
Hi! My name is Justin Goins. I've previously taught a wide variety of on-campus and Ecampus courses at OSU so I might have met you during earlier courses or at one of the Ecampus Career Showcases. I first entered the world of teaching during the summer of 2011 when I worked as the instructor for CS 271 (Computer Architecture). I loved the experience and later ended up teaching the course for several years while simultaneously working on my graduate research in the field of sensor networks.
After I finished my PhD I applied as a full-time instructor at OSU and I'm delighted to be teaching again. Since my research background is in electrical & computer engineering, I have the somewhat unusual distinction that I teach classes in both fields (CS & ECE). If you are curious to learn more about me, there is a short biography available online from my time as a graduate student.
Some of my outside hobbies include photography, swimming, and SCUBA diving. During the summer you're likely to find me swimming at the local Osbourne Aquatic Center or at the Marys River. I occasionally ride BMX bikes though I rarely attempt any tricks that I deem "too ambitious". I've confirmed that aches and bruises take longer to heal as you get older. :)
I try to stay involved in the local community and have volunteered at several schools in the Corvallis district. I feel that it's important for young students to explore the career opportunities that are available in the technical fields. Most students automatically assume that engineering and computer science are simply full of boring math but the reality is so much more interesting!
I look forward to teaching CS344 this term. In our day-to-day lives we often take computer operating systems for granted. However, there is a lot going on behind the scenes! This course will explore the topic and will provide you with a better understanding (and appreciation) of the complexities that lie hidden beneath the graphical interfaces.
Course Syllabus
A syllabus document is available as a pdf file.
Syllabus Quiz
Please don't forget to take the syllabus quiz so you can continue onto the learning modules: Syllabus Quiz
Instructional Staff
Role | Name | |
---|---|---|
Instructor | Justin Goins | justin.goins@oregonstate.edu |
Communication Policy
Grading & Regrading
We will attempt to grade the assignments within 7 days of the due date. For questions related to grading or regrading please directly email the TA who graded your assignment. TA's are assigned to grade assignments based on student last names as follows:
Start | End |
Grader |
---|---|---|
Grading information will be added in week 1. | ||
You can request a regrade on an assignment by contacting your grader within 48 hours of receiving your grade. Include what points were taken off and why you feel your assignment/project does in fact meet the requirements you were penalized for not meeting. Keep in mind, this is a discussion about meeting standards and to write your request for regrading as such.
Assignments & Course Content
Ask questions about assignments and course content, on Ed discussions or in office hours. You are likely to get an answer to your question far faster by posting in Ed than by emailing or sending a private message as there are more than forty people looking at those discussion boards.
Personal Questions
For personal questions, you can email the instructor from your OSU email account.
Office Hours
Instructors and teaching assistants will be present during their scheduled times to answer questions and offer assistance. You can also ask questions of other students if you choose.
Emails
If you email the instructors or the TAs, use your OSU email account. You must put CS344 in the subject line, or else we may miss it.
Response Time
We will strive to respond to email and Ed posts within two business days. We will aim to have the assignments graded within 7 days of the due date. Please note that we may not be accessible over the weekend and on holidays.
Office Hours
The best place to ask questions and get help is on Ed discussions. If you'd like direct, personal help, our Office Hours are also available (though you may have to wait patiently if there's a queue). The up to date list of office hours is provided on the "Home" page.
Note: Office hours will not be held on days that the University has off (holidays, inclement weather days, etc.). The Instructors and TAs reserve the right to cancel or move office hours, but will give appropriate warning, if possible.
Programming Languages Used
We will use C and Rust programming languages in the course. You can use the course's OSU server for coding and running your programs in both these programming languages.
Server Access & File Management
You'll need to access our course server via a command-line driven SSH client to complete your programming assignments. For Windows, you can download PuTTY here or you can use the Windows Subsystem for Linux. An SSH command-line client is already built-in to both Linux and MacOS's Terminal applications.
The course server you must use is os1.engr.oregonstate.edu - connect to this with your command-line client. This server has been set aside for us to use, and is where you should do ALL of your development. This is also the server we will be grading your software on. We will exclusively be using the bash shell on this server for grading and development, so make sure that's what you're using, too (see below for instructions on how to change your shell).
Follow the tutorial here to learn how to connect to our server with PuTTY. Note that you cannot connect to os1 from outside the OSU network; see the tutorial for details.
Do not use other OSU servers to run our class assignments on, as much of our software will crash the server you use; this is why we have been given our own machine! If you run your programs for this class on any other server at OSU, the EECS IT support team will notify me of it, and you will lose 15 points.
I highly recommend that you change the default shell used on our server to be bash (it's normally tcsh) by using this page: https://teach.engr.oregonstate.edu/teach.php?type=change_shell
If you suspect that you have started too many programs, and/or are otherwise having trouble logging in to our EECS servers, please use this page to kill off any programs running on your account that might be blocking your access:
https://teach.engr.oregonstate.edu/teach.php?type=kill_runaway_processes
If you still have trouble logging in, contact EECS Support at: support@engr.oregonstate.edu
Backup your software as you write it; keep archived copies of your homework as you work on it. If you accidentally delete or overwrite something from an EECS server, and you don't have your own backup, you may be able to do some restoration manually by following these instructions: http://it.engineering.oregonstate.edu/restoring-snapshots-command-line-macos-and-linux Additionally, you can contact support@engr.oregonstate.edu for help recovering data.
Course Summary:
Date | Details | Due |
---|---|---|