Hello! We are about to go on a journey through the world of operating systems; we will learn a lot of interesting things about how modern operating systems work, such as:

Please read the syllabus and schedule documents for critical information about this course.

Summary

Welcome to CS 344, We are excited to have you in this course! The syllabus is a contract between student and instructor that defines each of our responsibilities and expectations for the course. You are responsible for reading and understanding the contents of this syllabus. Please contact the instructor(s) if you have any questions.

Catalog Course Description

Introduction to operating systems using UNIX as the case study. System calls and utilities, fundamentals of processes and interprocess communication.

Prerequisites

CS 261 [C] and (CS 271 [C] or ECE 271 [C])

Measurable learning outcomes

Upon completion of this course, students should be able to:

  1. Justify the need for a multi-programmed OS and explain the general structure of such systems.
  2. Select system calls for appropriate uses.
  3. Compare and contrast the process and thread abstractions and select the correct abstraction when needed.
  4. Assess and solve possible issues related to concurrent execution.
  5. Explain the file abstraction and system level I/O.
  6. Compare and choose mechanisms for inter-process communication.
  7. Write software by applying appropriate system programming principles and techniques.

Evaluation of Student Performance

Assignments are 70% of the course grade, and the final is the remaining 30%.

Credits

This course combines approximately 120 hours of instruction, online activities, and assignments for a total of four (4) credits.

Communication

This course uses:

  • Canvas to host course content, assingment submissions, and the gradebook.
  • Ed discussions for the online classroom environment and announcements.
  • MS Teams for office hours and real-time chatting
  • email for private or personal matters, including grading results and concerns.

Course Content

  • Topics: Introduction to basic structure of operating systems; system calls; processes and threads; concurrency and synchronization; files and the file-system; I/O; interprocess communication.
  • Programming assignments will use the C programming language, compiled against the C99 standard.

Course materials

All course materials are freely available online or through the school library.

Note: Check with the OSU Beaver Store for up-to-date information for the term you enroll (OSU Beaver Store website or 800-595-0357). If you purchase course materials from other sources, be very careful to obtain the correct ISBN

Expectations

This is a notoriously challenging course. For many of you, this is your first exposure to the C programming language and use of the command-line interface (CLI) to build, debug, and run your programs. Many of you have never used UNIX-like operating systems before. Beyond this, systems-level programming, regardless of language used, is very different from what many of you are familiar with coming from python scripting.

Workload and quality of work

You must become adept at parsing technical specifications, language documentation, manual (man) pages, etc to be successful in this course. Programming in C requires a high degree of discipline and meticulous attention to detail, and you will spend a lot of time writing very simple programs to exacting specifications. Preparation and planning are critical aspects of this process which students often overlook and suffer dearly for. Every hour spent reading saves several in the programming phase, and this investment compounds with each new assignment as you become more adept at quickly finding the information you need. Remember, you are learning both the contents of documentation and the skill of reading documentation.

Most of you have also come to rely on the internet in your programming. While internet resources can be helpful, they are very often dangerously wrong, and you are probably not experienced enough to discern one from the other. All of the information you need to complete this course is available in the course content and provided external sources, as well as the man(ual) pages on os1. It's also important that you refer to the correct versions of documentation. For example, man pages indexed on the internet almost certainly refer to different versions of software than what you are working with which can lead to bugs or unexpected behavior.

Students who are used to programming in python tend to approach assignments by just jumping straight in. This approach does not work well with learning C programming, and ends up taking more time and effort. Coding in python is like driving a car and coding in C is like being a car mechanic: most people can learn to drive just by doing, but mechanics have to study the cars that they work on for years before they are trusted to take yours apart. Factor in the time that it takes to read the manual when planning out assignments.

Frequency of participation

This is an asynchronous class, not a weekend class. Keep up with announcements and the discussion boards or you may miss something critically important. Do not wait until the last minute to start working.

Grading Policies

Assignments are graded so than an A approximates professional quality work, a B approximates work that requires polishing but would be acceptable in a professional environment, a C approximates work that would require review by a supervisor, and anything less than a C would be unacceptable in a professional environment.

Letter Grades

Letter grades are assigned according to the following table, using truncating rounding.

Grade Percentage Range
A 93 - 100+
A- 90 - 92
B+ 87 - 89
B 83 - 86
B- 80 - 82
C+ 77 - 79
C 73 - 76
C- 70 - 72
D+ 67 - 69
D 63 - 66
D- 60 - 62
F  0 - 59

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

Please refer to the registrar's Incomplete Grade Policy for more information.

Automated Grading

Your assignments are likely to be graded with automated tools, which serves three purposes:

  1. Immediate feedback on assignments
  2. Eliminates grade entry errors and other mistakes
  3. Frees instructional staff to focus on teaching

Automated grades are subject to review. If you believe there was a mistake in the grading process/parsing of output by the automated tools, contact the appropriate member of instructional staff for review. We may give partial credit for sections failed due to trivial bugs, typos, or other formatting errors on your part. We generally do not consider evidence that could have been tampered with (screenhots, etc).

Responsibility to test your own work

We may provide test scripts to assist with unit testing your work. These are not the same scripts that will be used to grade your submission, and passing one does not guarantee that you will pass the other. It is your responsibility to adhere to the assignment specifications, and any provided testing materials are not a replacement for thoroughly testing your own work.

Rubrics

Assignment rubrics describe the number of points you will receive for meeting certain criteria. You can however lose points for failing to meet specifications not explicitly stated in the rubric. A rubric item may include an example of how it might be tested, but this is not a guarantee that this is how it will be tested. For example, input file names, input sizes, file contents, etc may all be changed as long as the test falls within the assignment specifications and applies to that rubric criterion in question.

Late work

Late work is not eligible for credit and extensions are made rarely on a case-by-case basis. You have ample time to complete assignments and should plan to finish you work several days in advance of the due date with enough slack to account for personal issues. Last-minute extension requests within 24 hours of the due date will be denied.

Incomplete work

Submissions that fail to compile receive no credit. Partial credit is awarded for incomplete submissions, but all unimplemented sections should be replaced with placeholder code to prevent crashing. Crashes during evaluation will result in heavy penalties.

Makeup exams

Makeup exams will be given for excused absences. Excused absences are not given for travel plans, routine minor illness, etc. Excuses are generally not given after an absence has already occurred.

Plagiarism and academic integrity

All submissions must be fully your own work. Submitted work is diligently reviewed for plagiarism against other students' work as well as online content. We will be using the same tools and techniques that are used in real-world forensic copyright infringement analysis. Instances of suspected plagiarism will result in a grade of 0 on the assignment pending review by the university. Repeated instances of plagiarism will result in a request for your removal from the course.

Please note that directly copying any code from unapproved sources is considered plagiarism, regardless of whether it is cited. This includes renaming identifiers, reordering of statements in your code, creating unnecessary variables or macros, spinning sections off into their own functions, etc. when the result is functionally equivalent to the copied source; these actions may be additionally considered cheating (to evade detection) in addition to plagiarism, and the penalties may be more severe. You may be tempted to think you can beat the system, but be warned -- we have sophisticated analysis tools which have been designed to remove common obfuscation techniques like those listed above. Plagiarised code tends to be very obvious to instructors as well. If you're clever enough to beat them, you're probably clever enough to just do your own work in the first place :)

Sharing part or all of your assignment code with other students without authorization is considered cheating. Viewing solutions to assignments, whether directly or incidentally related to this course, is considered cheating. An example of this would be studying an open source implementation of a specification that an assignment is based on. Another would be viewing a previous/current student's github.

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, including cheating, plagiarism, assisting and others. See the Code of Student Conduct for details.

You are expected to do your own work and demonstrate academic integrity in every aspect of this course. Familiarize yourself with the standards set forth in the OSU Code of Student Conduct Section 4.2. You must only access sources and resources authorized by the instructor. You may not show your work to any other current or future students without the instructor's authorization. Violations of these expectations or the Code of Student Conduct will be reported to the Office of Student Conduct and Community Standards. If there is any question about whether an act constitutes academic misconduct, it is your responsibility to seek clarification and approval from the instructor prior to acting.u

General exceptions

We understand that learning from others and from examples can be immesaurably valuable, and we want to support your learning and promote collaborative learning as much as possible, while also taking a firm stance on academic dishonesty.

You may use (directly copy) any code from course documents, examples on os1 man pages, and directly provided by instructional staff in your work. You may copy code from outside sources that are general in nature and idiomatic. Idiomatic code is the widely agreed on "standard" way of performing certain actions. Idiomatic code is rarely more than 2-3 statements and performs a single discrete task that is generic and common to a variety of programs. It should be something you'd have thought of on your own, and that you can't imagine another way of doing.

Some examples of idiomatic code would be:

  • Calling a library function/system call and checking the return value for errors.
  • Performing a looping read/write operation to flush a buffer.
  • Checking the length of a formatted string, allocating memory for it, and then writing the formatted string to the allocated buffer.
  • etc.

Examples of non-idiomatic code that would be considered plagiarism if copied, whole or in part:

  • A string search and replace function.
  • A function that parses a file path into its constituent path components.
  • A sequence of instructions that perform bit manipulations to implement an encoding.
  • etc.

You may share useful resources, general programming advice, high-level/structural approaches to assignments (no assignment code; minimal-working examples of bugs are ok), input/output examples, etc. with other students. Note that this specifically does not authorize you to copy any code directly from other students.

Consider that the course follows the same policy of most programming discussion and Q/A boards: You may ask and answer questions, including snippets of code as necessary to illustrate a point or question, but we are not here to do your homework for you.

Retaking the course

If you are retaking this course, you may re-use your code from a previous attempt (but you may not re-use code from other courses). Please make sure that your re-used code complies with this terms' academic integrity policies and assignment specifications, since both may have changed. Also, ensure that your code from a previous term has not been shared in any way with others (such as posting to a public github) -- you can be found guilty of assisting if another student plagiarises your code. Contact the instructor(s) if you have any questions about this policy.

The impacts of cheating

Please remember: cheating is not a victimless action, and it directly harms everyone around you. Innocent students have been embroiled in academic integrity investigations because someone else plagiarised their work without their knowledge or consent. Cheating jeapardizes our ability to share solutions/walkthroughs to assignments in future terms, robbing students of a valuable learning resource. It also forces us to change assignments regularly, which reduces our time available to update other course content to benefit other students and can force us to switch to assignments with less instructional value. Investigating and reporting cheating also takes a considerable amount of instructional staff's time, which we wish we could apply towards teaching and improving content.

Boilerplate

The following sections are OSU required/recommended boilerplate that are not specific to this course.

Academic calendar

All students are subject to the registration and refund deadlines as stated in the Academic Calendar: https://registrar.oregonstate.edu/osu-academic-calendar.

Academic integrity

Integrity is a character-driven commitment to honesty, doing what is right, and guiding others to do what is right. Oregon State University Ecampus students and faculty have a responsibility to act with integrity in all of our educational work, and that integrity enables this community of learners to interact in the spirit of trust, honesty, and fairness across the globe.

Academic misconduct, or violations of academic integrity, can fall into seven broad areas, including but not limited to: cheating; plagiarism; falsification; assisting; tampering; multiple submissions of work; and unauthorized recording and use.

It is important that you understand what student actions are defined as academic misconduct at Oregon State University. The OSU Libraries offer a tutorial on academic misconduct, and you can also refer to the OSU Student Code of Conduct and the Office of Student Conduct and Community Standard's website for more information. More importantly, if you are unsure if something will violate our academic integrity policy, ask your professors, GTAs, Follow this link to access Accessibility Statements for commonly used software. academic advisors, or academic integrity officers.

Ecampus reach out for success

University students encounter setbacks from time to time. If you encounter difficulties and need assistance, it's important to reach out. Consider discussing the situation with an instructor or academic advisor. Learn about resources that assist with wellness and academic success.

Ecampus students are always encouraged to discuss issues that impact your academic success with the Ecampus Success Team. Email ecampus.success@oregonstate.edu to identify strategies and resources that can support you in your educational goals.

If you feel comfortable sharing how a hardship may impact your performance in this course, please reach out to me as your instructor.

For mental health

Learn about counseling and psychological resources for Ecampus students. If you are in immediate crisis, please contact the Crisis Text Line by texting OREGON to 741-741 or call the National Suicide Prevention Lifeline at 1-800-273-TALK (8255).

For financial hardship

Any student whose academic performance is impacted due to financial stress or the inability to afford groceries, housing, and other necessities for any reason is urged to contact the Director of Care for support (studentassistance@oregonstate.edu or 541-737-8748).
 

Expecations for student conduct

Student conduct is governed by the university's policies, as explained in the Student Conduct Code (https://beav.es/codeofconduct). Students are expected to conduct themselves in the course (e.g., on discussion boards, email postings) in compliance with the university's regulations regarding civility.

Statement regarding religious accommodation

Oregon State University is required to provide reasonable accommodations for employee and student sincerely held religious beliefs. It is incumbent on the student making the request to make the faculty member aware of the request as soon as possible prior to the need for the accommodation. See the Religious Accommodation Process for Students.

Statement regarding students with disabilities

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.

Student bill of rights

OSU has twelve established student rights. They include due process in all university disciplinary processes, an equal opportunity to learn, and grading in accordance with the course syllabus: https://asosu.oregonstate.edu/advocacy/rights.

Technical assistance

If you experience any errors or problems while in your online course, contact 24-7 Canvas Support through the Help link within Canvas. If you experience computer difficulties, need help downloading a browser or plug-in, or need assistance logging into a course, contact the IS Service Desk for assistance. You can call (541) 737-8787 or visit the IS Service Desk online.

Academic or student support services

For all other academic and student support services, refer to the Student Services link found in the course menu.

The following services are available to all Ecampus students:

Accessibility statements

This course uses technologies that may support accessibility in different ways. Please refer to the accessibility statement for each technology provider for details as to the level and types of accessibility that are supported.

Follow this link to access Accessibility Statements for commonly used software.

Privacy Policies

Follow this link to access Privacy Policies for commonly used external tools that require the user to create an account.

  • The materials on this course website are only for the use of students enrolled in this course for purposes associated with this course and may not be retained or further disseminated.
  • Course materials are cited within the Syllabus and Modules based on the copyright policy of each item.
  • When copyright permission is required, Ecampus has contacted the copyright owner.
  • When a fair use determination has been made, this has been documented.
  • Images that are not cited have been obtained from the public domain or via a paid subscription or are images taken by the instructor.
  • Please contact the instructor if you have any questions about the copyright and ownership of materials presented in this course.

The Schedule for the course is tentative and subject to change.

Week Topic
Week 0 Course Introduction - Software Configuration
Week 1 The Command-Line Interface. Text Mode Interfaces: Learning Vim. My First C Program.
Week 2 Fundamentals of C Programming: The C Language Specification and Standard Library
Week 3 System Calls: Filesystem Manipulation
Week 4 System Calls: Process Creation and Management
Week 5 System Calls: Process Creation and Management
Week 6 System Calls: Asynchronous Inter-Process Communication
Week 7 Pthread Library: Concurrency and Threading
Week 8 System Calls: Synchronous Inter-Process Communication
Week 9 System Calls: TCP/IP Network Programming
Week 10 System Calls: TCP/IP Network Programming
Week 11 Final Exam (asynchronous, unproctored, open book, open notes)