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. It's required that you understand and know the information contained both on this Syllabus and our Home Page.

Subject Matter

Yer gonna love it! 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.

About the Online Instructor

About the On-Campus Instructor

There is currently no on-campus section.

About the Course Designer


Download link

Course Materials & Schedule

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.

In lieu of a week-by-week schedule, please use the assignment list found at the bottom of this Syllabus: it lists the due dates of the five assignments, the Syllabus Quiz, and the Final.

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, (free download!)
  • Michael Kerrisk, The Linux Programming Interface (TLPI), No Starch Press, 2010, ISBN: 978-1-59327-220-3


There are five programming assignments in this course: four complex, and one simple. The programming assignments must be completed on our class server (see the Home Page for more) and then submitted 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! When submitting assignments, please be aware that neither the Instructor nor the TA(s) are alerted to comments added to the text boxes in Canvas that are alongside your assignment submissions, and they may not be seen. No notifications (email or otherwise) are sent out when these comments are added, so we aren't aware that you have added content! If you need to make a meta-comment about a submission, please include it in the submission .zip file itself, or email the person directly who will be grading it (see the Home page for grading responsibilities).

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!


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.


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 your grading TA, as the TAs 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.

If you believe a grade returned to you is incorrect, please submit proof to your grading TA within 48 hours of the grade being received by you. Your proof must consist of screenshots (not a copy/paste of the text) that clearly show you being in bash, on os1, and executing the grading method as proscribed. Your screenshots must show the places where the grading has been done incorrect, if any, and this grading must be done on the submission that you have made (i.e. redownload it yourself from Canvas to make these screenshots). If you don't provide proof, or if you ask for a regrade past 48 hours of the grade being given, a regrade won't be done.

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 in the assignments are the points available, 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), so please don't ask for "just a few more points":

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
0 ≤ 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.


Incomplete (I) grades will be granted only in emergency cases (usually only for a death in the family, major illness or injury, or birth of your child), if the student has turned in 80% of the points possible (in other words, usually everything but the final paper), and at the discretion of the instructor. If you are having any difficulty that might prevent you completing the coursework, please don’t wait until the end of the term; let me know right away.

Late Work Policy

All assignments must be submitted before the due date. Late submissions will not be accepted. If you do not submit before the due date, you will receive no credit.

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 72 hours; it is NOT the due date: it is after the due date.

The Final Exam and Syllabus Quiz cannot be submitted late.

Revision Grace Period

The "revision grace period" policy is for quizzes and assignments. If you are unable to fulfill a programming assignment to your satisfaction before the due date--for any reason--you may notify the TA (via a Canvas comment or email along with the original on-time submission) that you plan to submit a revision. Keep in mind, a revision submission may be denied if the initial submission does not reasonably contribute to the assignment solution. You may then submit a revision within 3 days. The final is not eligible for late revisions.

If you

  1. submit a partial fulfillment of the requirements before the due date,
  2. notify the TA when you submit your first attempt, and then
  3. resubmit a revised version of your work within 3 days,

your grade will reflect your final submission only without incurring penalties. If you do not resubmit within 3 days, your grade will reflect your original (potentially incomplete) submission.

Exceptions may be made at the instructor’s discretion for documented emergencies (e.g. unexpected hospitalization or extraordinary extenuating circumstances).

Assignment Extensions

To get an extension on an assignment, you'll need to have a major event occur in your life that will prevent you from timely completing your work, and you must then notify our Lead TA (listed on our Home Page) before hand, 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! If you cannot notify the Lead TA before the event occurs (sudden severe sickness, for example), then you must make contact as soon as possible to get an extension. We're fairly easy going about these, but you need to be upfront and immediate: don't wait!

If an extension is granted, a new due date is established and the same policies apply. 

Proctored Exams

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

Academic Honesty

The Code of Student Conduct prohibits Academic Misconduct and defines it as:

Any action that misrepresents a student or group’s work, knowledge, or achievement, provides a potential or actual inequitable advantage, or compromises the integrity of the educational process.

To support understanding of what can be included in this definition, the Code further classifies and describes examples of Academic Misconduct, as follows.

Prohibited behaviors include, but are not limited to doing or attempting the following actions:

  • Cheating. Unauthorized assistance, or access to or use of unauthorized materials, information, tools, or study aids. Examples include, but are not limited to, unauthorized collaboration or copying on a test or assignment, using prohibited materials and texts, unapproved use of cell phones, internet, or other electronic devices, etc.
  • Plagiarism. Representing the words or ideas of another person or presenting someone else’s words, data, expressed ideas, or artistry as one’s own. Examples include, but are not limited to, presenting someone else’s opinions and theories as one’s own, using another person’s work or words (including unpublished material) without appropriate source documentation or citation, working jointly on a project and then submitting it as one’s own, etc.
  • Falsification. Fabrication or invention of any information. Examples include, but are not limited to, falsifying research, inventing or falsely altering data, citing fictitious references, falsely recording or reporting attendance, hours, or engagement in activities such as internships, externships, field experiences, clinical activities, etc.
  • Assisting. Any action that helps another engage in academic misconduct. Examples include, but are not limited to, providing materials or assistance without approval, altering someone’s work, grades or academic records, taking a test/doing an assignment for someone else, compelling acquisition, selling, bribing, paying or accepting payment for academic work or assistance that contributes to academic misconduct, etc.
  • Tampering. Interfering with an instructor’s evaluation of work by altering materials or documents, tampering with evaluation tools, or other means of interfering.
  • Multiple submissions of work. Using or submitting work completed for another or previous class or requirement, without appropriate disclosure, citation, and instructor approval.
  • Unauthorized recording and use. Recording and/or dissemination of instructional content without the express permission of the instructor(s), or an approved accommodation coordinated via Disability Access Services.

Academic Integrity DOs and DON’Ts

  • You are encouraged to discuss course content with each other, including general discussion of homework assignments and how to fix specific issues.
  • You may post minimally-functional code snippets (or less) from your assignments to Slack or Piazza.
  • You may ask conceptual questions related to optimizing your code on Slack or Piazza.
  • You may not post any complete functions to Slack or Piazza.
  • You may not post any exam questions or solutions in any form.
  • You may not turn in work that has a substantial amount of someone else's program code
  • You may use code that I give you.
  • You must make any git repo you post this code on private, with the exception of the Portfolio assignment.
  • Reuse of any material in part or total must receive written permission from the instructor before including as part of any assignment.

 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. However, I do require that final assignment and test answers be YOUR OWN WORK; do not complete the assignment as a group project.

If you do submit such work anyway, your submission will be reported to the College of Engineering for disciplinary action, and a preliminary 0 grade will be entered in for that assignment, which grade will be finalized only when the College makes its ruling (which might not be for a few months).

We will automatically compare what you turn in against all other submissions, including this term, previous terms, other sections, and from online sources. Do not seek out previous submissions on GitHub (or other sources), even if you're only looking for inspiration.

To be clear: do not download someone else's code, change it, and then submit it, even if you cite what you are doing. This constitutes cheating and your submission will be reported to the College of Engineering for academic dishonesty. Warning: we are very good at detecting cheating.


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!

Contacting People for Help

You can always contact the Instructor for any reason! However, in order to speed up communications, there are several people assisting with the smooth running of this course. You will be in contact with your grading TA, the Lead TA, and myself throughout the term.

My contact details are given below; the contact details for everyone else, along with additional discussion about this, is given on the Home Page.

You may also seek help from us, or fellow students, on our Piazza message board. Details on this are also on the Home Page.

Online Instructor Contact Details
Bram Lewis

On-Campus Instructor Contact Details
No on-campus section.

Office Hours Schedule

Office hours will be held on Slack. The office hour schedule and Slack details are given on the Home Page.

OSU Accessibility

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 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.

Tools Used

We use a number of tools in this course, from terminal connection programs, to automated grading scripts, to memory leak finders. These are described on the Home Page and in the material as we go.

NOTE: Some links on this page may only be accessible to registered students.

Course Summary:

Date Details