Course Syllabus

Welcome! This Syllabus for CS344, Operating Systems I, describes the materials, objectives, and the course policies that I expect us all to adhere to. For everything else, please refer to our course Home Page.

Instructor

Benjamin Brewster
Email: brewsteb@oregonstate.edu
Office: KEC 2113

Subject Matter

In this course we will be learning about scripting and how it connects user programs and OS utilities together, communicating with the Operating System via system calls and utilities, creating and managing multiple processes at once, and inter-process communication, including networking. We will use UNIX as our model OS. By the end of the course, you should be able to:

  • Explain why multiprogramming is important for modern operating systems.
  • Explain the general structure of a multiprogrammed operating system.
  • Explain the purpose and operation of system calls.
  • Write a program utilizing system calls.
  • Write a program using a scripting language.
  • Explain how to use regular expressions to parse input data.
  • Write a program that spawns processes and provides mutual exclusion for variables or other resources shared by the processes.
  • Write a program that uses sockets to implement a client/server system.
  • Explain how a common file system works, including structure, I/O operations, and security.
  • Describe the memory organization of a typical process in a common operating system.

You will be using UNIX and C extensively in this course, though C will be reviewed; I expect that you have some experience programming, compiling, and using C and its libraries.

Course Materials

The course material is presented over the course of four Blocks, the culmination of each being a specific, detailed programming assignment geared towards the material covered. Our required material includes videos and articles, all written by the Instructor.

Please see our Home Page for links to the material

Here are a couple of good books which are entirely optional (we require neither homework nor readings from these):

William E. Shotts, Jr., The Linux Command Line 13.07, LinuxCommand.org (free download!)
Michael Kerrisk, The Linux Programming Interface (TLPI), No Starch Press, 2010, ISBN: 978-1-59327-220-3

Assignments

There are five programming assignments in this course: four complex, and one simple. The programming assignments are completed on our class server (see the Home Page for more) and then turned in to Canvas.

When you submit the programming assignments to Canvas, don't be alarmed that Canvas renames the files. This is just normal Canvas behavior. We have to rename them anyway, so don't worry about it.

I highly recommend that you read the programming assignment for each Block when it becomes available. Start the assignments immediately - they will take time to accomplish. I promise they're interesting!

You must use only our class server, as described on the Home Page, to test your programs and homework for this course. You may of course use your own computer to do development work on, but everything must compile and be runnable on the course server to earn points. More importantly, do not use other OSU servers to run our class assignments on, as much of our software will crash the server; this is why we have been given our own machine! If you fail to heed this requirement, running our software on a non-class server will hurt your grade!

Tests

Here is some information about testing in this course:

  • There are no mid-term exams in this course.
  • Our Final Exam is an online Quiz here in Canvas. As with all of our assignments, you will not use ANY form of proctor for this test.
  • Since the Final is online only, you can take it from anywhere you want!
  • The Final is entirely multiple choice.
  • In terms of materials you can have with you, the Final is open book, open notes, open compiler, open server, but NOT open group (i.e. you have to take it by yourself).
  • The Final should take (far) under two hours.
  • You'll be able to take the Final during a portion of Finals Week: in fact, you can already see the precise availability dates on the Assignments page here in Canvas. You can take it any time in between the listed end points.
  • There is no particular study guide for the Final. The topics covered are everything in all of the lectures and homework, except Program Py (Python) which is NOT covered at all on the Final.
  • To review, I recommend reading through all of the lecture slides.

Grading

Many of the assignments will be using grading scripts provided to you, and all have a set of specifications given that you must adhere to to both learn the material and earn the points possible. To assign grades to your submissions, the graders will be following a set of grading instructions (that you'll have access to). Note that the graders may run additional tests not communicated beforehand to verify that your program is adhering to the specifications, though nothing will be added to the specification. For example, if a grader suspects that a submitted program has been written in such a way that it passes a listed grading test, but does not adhere to the specification, then an additional test is likely to be run. However, any additional test done shall be easily justified as checking that the program adheres to the specification. The amount of points to be awarded or taken away by these additional tests is at the discretion of the grader.

Any crashes, hangs, errors, infinite loops, etc. not covered in the grading instructions and/or grading scripts will cause your program to lose points. The amount lost depends on the severity, how much it affects the rest of the program, and how it is recovered from, if at all, all based on the discretion of the grader.

If you have grading questions about the homework, you must contact the TAs, as they do ALL of the grading (except for the final, which is graded automatically by Canvas). You can see the contact information for our TAs on our Home Page.

We do not use any sort of proctoring for any assignment or test in this class.

All assignments must be submitted on Canvas, according to the posted due date and time, or they will be subject to penalties. All programming assignments that are submitted late by less than 24 hours will have 10% deducted from their grade (e.g. your program submitted at 12:01pm, if it was due at 12:00pm, will be worth 90% of its graded value). Programming assignments submitted late equal to or more than 24 hours, but less than 48 hours, will have 25% deducted from their grade. Programming assignments may not be submitted late past 48 hours, and will be worth 0 points.

Note that Canvas has three types of dates in relation to Assignments: the "available" date, "due" date, and "available until" date. The due date is the date that the Assignment must be turned in by for full credit. The other "available" dates allow me to control when the Assignment can be accessed, which helps keep all of the students in the same place at the same time. The "available until" date is used to prevent submissions of Assignments past 48 hours; it is NOT the due date: it is after the due date.

The Final Exam and Syllabus Quiz cannot be submitted late.

If you have a major event in your life that will prevent you from timely completing your work, you should notify me as soon as you encounter it. In order to receive an extension on an assignment, for whatever reason, you must contact me well before the due date, if possible. Extensions of these kinds are generally reserved for issues you can't control, such as medical reasons or family emergencies. Merely being busy does not count!

There won't be a curve applied to the grading of this course, nor is there any rounding or weighting of assignments and/or the final. The points you see are the points you get, including in the table below. The grading scale is as follows, and will be adhered to strictly (I have already taken into account some pretty generous rounding):

91.5 ≤ A  100
89.5 ≤ A- < 91.5
87.5 ≤ B+ < 89.5
81.5 ≤ B < 87.5
79.5 ≤ B- < 81.5
77.5 ≤ C+ < 79.5
71.5 ≤ C < 77.5
69.5 ≤ C- < 71.5
67.5 ≤ D+ < 69.5
61.5 ≤ D < 67.5
59.5 ≤ D- < 61.5
≤ F < 59.5

Note that when you take the final, you won't be able to see how you did on the individual questions and answers, nor will they be given afterwards. It'll simply give you a point grade, and that's it.

Academic Honesty

You must follow these rules and regulations while working on assignments at OSU and for this course.

I have no problems with you working together to solve problems, work through coding bugs, etc. I do require that final assignment and test answers be your own work; do not complete the assignments in groups - turning in work that has a substantial amount of someone else's work will be worth zero points. It is to your advantage to cite resources that you use for help (web links, book page numbers, classmates, etc.).

Relax

Really, this is a fun course. I do my best to be entertaining, and not overly boring. You'll find me easy to communicate with, and actively involved! The information we cover is fundamental to your education in computer science, and is actually pretty interesting. :)

If you're not having fun, you're doing it wrong!

OSU Accessibility Statement

Accommodations for students with disabilities are determined and approved by Disability Access Services (DAS). If you, as a student, believe you are eligible for accommodations but have not obtained approval please contact DAS immediately at 541-737-4098 or at http://ds.oregonstate.edu. DAS notifies students and faculty members of approved academic accommodations and coordinates implementation of those accommodations. While not required, students and faculty members are encouraged to discuss details of the implementation of individual accommodations.

Course Summary:

Date Details