Last Updated: 2019-02-19 Tue 16:38

CSCI 4061: Introduction to Operating Systems

University of Minnesota

4 credits, Sprint 2019

Table of Contents

1 Basic Information

1.1 Catalog Description

Processes/threads, process coordination, interprocess communication, asynchronous events, memory management/file systems. Systems programming projects using operating system interfaces and program development tools.

1.2 Prerequisites

  • C or better in CSCI 2021
  • Entrance into the Computer Science Major

In addition to the formal prerequisites, a solid understanding of C programming is essential to completing this course. We will review this briefly at the start of the course but folks with rusty C skills will want to review vigorously early on. Suggested resources on C appear in the Course Materials Section.

1.3 Course Goals

Students that complete CSCI 4061 will posses the following characteristics.

  • Understand some of the central abstractions most operating systems provide such as processes, files, I/O facilities, communication, paging, threads, synchronization, and network communication.
  • Can explain why these abstractions allow the OS to provide security, integrity, flexibility, and efficiency to users of a computer.
  • Knowledgeable of some of the responsibilities that the OS kernel has and how it makes hardware features available to user programs through system calls.
  • Be familiar with the specific system calls used in the Unix environment to create processes, communicate and coordinate between processes, manage memory, manipulate files, and communicate over the network.
  • Capable of creating modest-sized programs in the C language that employ Unix system calls effectively.
  • Insight into broad issues associated with systems programming such as basic communication protocols, efficiently using virtual memory, coordinating shared resources while avoiding deadlock, and internal structures to support the operating system.

1.4 Instructor

Name Chris Kauffman
Sections 001
Email kauffman@umn.edu
Office Keller 6-198
Phone 612-626-7510

1.5 Teaching Assistants

Name Role Email  
Jaskaran Veer Singh GTA singh882@umn.edu 50%
Andrew Banman GTA banma001@umn.edu 50%
Minjun Wu GTA wuxx1354@umn.edu 25%
Venkat Parthasarathy GTA parth039@umn.edu 25%
Travis Carlson GTA carl4980@umn.edu 25%
Re-assigned      

1.6 Lectures and Discussion/Lab

Meeting Day / Time Location Staff
Lecture 001 T,H 09:45 AM - 11:00 AM Vincent Hall 16 Kauffman
Laboratory 002 M 08:00 AM - 08:50 AM Keller Hall 1-250  
Laboratory 003 M 09:05 AM - 09:55 AM Keller Hall 1-250  
Laboratory 004 M 10:10 AM - 11:00 AM Keller Hall 1-250  
Laboratory 005 M 11:15 AM - 12:05 PM Keller Hall 1-250  

1.7 Course Materials

Textbook

Advanced Programming in the UNIX Environment, 3rd edition (REQUIRED) by Stevens and Rago
Our main course text which gives a good introduction to the API provided by the UNIX system.
UNIX systems programming : communication, concurrency, and threads (Optional) by Robbins and Robbins
Sometimes used as the main course text for 4061, this book has similar coverage to Stevens/Rago.
Operating System Concepts, 9th Edition (Optional) by Silberschatz et al.
A broad overview of operating systems issues without details specifics for any individual OS.

Computing

It is assumed you will have access to a computer with the ability to edit, compile, and run Unix programs. Some university labs provide this ability; the first week of the course will cover how to set up your personal environment as well. If you have difficulty accessing a suitable environment, contact the course staff.

You will need to create a CSE Labs account for use on assignments and during Discussion. Accounts can be created here: https://wwws.cs.umn.edu/account-management/

1.8 Communication

  • Piazza is the central site for our announcements and discussion board. The announcements and discussion board are part of the required reading for the course.
    • Sign up for our piazza site here: http://piazza.com/umn/spring2019/csci4061
    • All instructors and TAs can view all material on Piazza
    • Do not e-mail course staff about programming problems; use the discussion board.
    • Use public posts on Piazza to discuss programming project requirements, labs, and other material related to the course.
    • When prompted by a TA, use private posts on Piazza to share portions of your code pertaining to your questions. Don't share your project code in public posts.
    • Refer to the Piazza main page for etiquette on what should be posted publicly versus privately.
    • Email course staff only for logistical issues such as meeting outside of office hours, missing lab/lecture, grading disputes, medical situations, etc.
  • Canvas is used for project submission and to post grades. The course Canvas is available here: https://canvas.umn.edu/courses/97657
  • Office Hours will be posted on the course Canvas and Piazza sites.

2 Coursework

2.1 Lectures

During lectures we will discuss operating system concepts and instructors will provide demos of programming relevant to other course work. In addition to attending the regular meeting times, you are strongly encouraged to visit the professor and teaching assistant(s) during office hours to further your understanding of the material: we are here to help you learn.

2.2 Textbook Readings

Readings from the textbook relevant to each lecture are listed in the schedule. You will increase your understanding of lectures by reading associated textbook sections ahead of time, though this is not assumed. We may provide additional reading material to supplement the textbook which will be posted on the course web page.

2.3 Lab Sections

Lab sections meet once per week and attendance is required. In each meeting, the lab leader will guide students through exercises to reinforce course concepts. These exercises are required and worth a small portion of the overall grade for the course. Students are encouraged to freely collaborate on lab exercises which are usually due a few days after the lab meets.

2.4 Programming Assignments

Students will receive a number of programming assignments during the semester. Each project will involve writing programs and answering questions about them to illustrate an understanding of course material. Specific projects may allow collaboration between pairs of students or require individual work. Pay careful attention to the guidelines for each programming project. Projects are usually large and require a significant amount of work to complete.

2.5 Exams

There will be two midterm exams during the semester. Exams take place during the regularly scheduled lecture period. There will also be a comprehensive final exam at the end of the semester. Refer to the schedule for dates of the exams. Refer to the schedule for dates of the exams.

3 Grading Policies

3.1 Graded Components

Final grades will be determined by scores obtained on the components below according to their associated weight.

Component Weight Policy
Lab Work (14) 10% Drop two lowest scores
Programming Projects (3-4) 40% No drops
Midterm Exam 1 15%  
Midterm Exam 2 15%  
Final Exam 20%  

If circumstances require it, the grading scale may be adjusted, generally in the students' favor.

3.2 Final Grade Determination

Final grades will be assigned without rounding according to the following criteria.

Percent Grade Percent Grade Percent Grade Percent Grade
>= 93 A 87-89 B+ 78-79 C+ 65-69 D+
90-92 A- 83-86 B 73-77 C 60-64 D
    80-82 B- 70-72 C- <60 F

If circumstances require it, the grading scale may be adjusted, generally in the students' favor.

3.3 Lab Exercises Grading

No late submissions for Lab Exercises will be accepted. Missing the deadline results in 0 credit. The two lowest scores on Lab Exercises will be dropped in final grade calculations

Attendance at the first lab meeting is mandatory. Attendance at the remaining labs is encouraged but optional.

In order to receive full credit for completing Lab Exercises, students must fulfill two requirements.

  • Check-off 30%: Demonstrate to a TA that a student understands answers to questions. This must be done in person in groups of one or two. Check-offs can happen during the lab period of during a TA office hour.
  • Submit 70%: Submit required files according to the lab instruction. This can be done at any time and from anywhere with a network connection. Submitting does not require attending lab. All students must submit files even if they were checked off in a group during lab.

Students may collaborate with other students in our section of CSCI 4061 to complete exercises and are encouraged to do so. Submitting identical code for exercises is acceptable so long as you adhere to the PRIME DIRECTIVE.

3.4 Programmin Assignment Grading

Rules for collaboration on programming projects are indicated in the project description and is usually limited to one partner. Utilize the discussion board and office hours of course staff if you have questions about the projects.

Project grading will usually be divided into two portions usually weighted evenly.

  1. Automatic Testing (~50%): Public tests will be used to assess the correctness of programs. Running these tests while constructing your program will indicate exactly what your score on this portion will be.
  2. Manual Inspection (~50%): Each project will include a checklist of features your programs should exhibit. These usually comprise things that cannot be easily checked via unit tests such as good variable name selection, proper decomposition of a problem into multiple functions or cooperating objects, overall design elegance, and proper asymptotic complexity. These features will be checked by graders and assigned credit based on level of compliance.

3.5 Late Assignment Submission

Late submission of assignments is governed by the following.

  • No assignment will be accepted more than 48 hours after a deadline
  • On-time assignments receive no penalties
  • Assignments submitted 1-24 hours late are capped at 75%
  • Assignments submitted 25-48 hours late are capped at 50%
  • Students can use a maximum of 3 Day-Late Tokens over the entire semester
  • On submitting late, up to two tokens are automatically charged to the student which will "buy back" a higher max score.
  • Token charges happen automatically and require no communication:
    • Submitting 1 day late will automatically charge 1 token
    • Submitting 2 days late will automatically charge 2 tokens unless only 1 token remains
  • Each unused token is worth 0.25% bonus credit overall in the course so submitting on time confers benefit at the end of the course
  • To avoid penalties and losing tokens, submit on time.
  • The table below gives examples of when an assignment is submitted, whether penalties apply, how tokens are charged, and their effects on assignment scores
    Pre- #Used #Used Post-      
    Token Tokens Tokens Token Raw Penalized  
Ex# Submitted Max Before After Max Score Score Comments
1 On-time 100% 0 0 100% 93 93 On-time means:
2 On-time 100% 0 0 100% 68 68 1. No tokens lost
3 On-time 100% 0 0 100% 46 46 2. No penalties
4 1-24 hours late 75% 0 1 100% 93 93 1 token used, max 100%
5 1-24 hours late 75% 3 3 75% 93 75 No tokens remain, max 75%
6 1-24 hours late 75% 2 3 100% 68 68 1 token used, max 100%, no benefit
7 1-24 hours late 75% 3 3 75% 68 68 No tokens remain, max 75%
8 25-48 hours late 50% 0 2 100% 93 93 2 tokens used, max 100%
9 25-48 hours late 50% 2 3 75% 93 75 1 token used, max 75%
10 25-48 hours late 50% 3 3 50% 93 50 No tokens, max 50%
11 25-48 hours late 50% 1 3 100% 68 68 2 tokens used, max 100%
12 25-48 hours late 50% 2 3 75% 68 68 1 token used, max 75%
13 25-48 hours late 50% 3 3 50% 68 50 No tokens, max 50%
14 >48 hours late 0% 0 0 0% 93 0 Not accepted or graded
15 >48 hours late 0% 1 1 0% 68 0 Not accepted or graded
16 >48 hours late 0% 3 3 0% 46 0 Not accepted or graded

3.6 Exam Policies and Grading

  • Your U-CARD is required for all exams. You may be asked to show ID on handing your exam in to verify your identity.
  • Missing an exam results in a zero score and make-up exams will be considered only in situations involving death, near death, and documented dangerous diseases. Proof of such circumstances will be required for a make-up to be considered.
  • Open Resource Exams: Unless otherwise specified, exams will be open resource: notes, textbook, editor, compiler, and any code the student finds useful is allowed to be used. No communication is allowed during the exam (no email/texting/chat), no Internet searches are allowed, and no unauthorized web sites may be visited. If in doubt, ask about specifics before or during the exam.

3.7 Grading Disputes

Disputes should be raised respectfully either in person or via e-mail. If it is not possible to reach a resolution, the professor may be contacted by the grader to resolve the dispute. Programming grading feedback should always include the grader who should be mailed first.

  • Projects: Email your grader
  • Lab work: Email your grader
  • Exams: We will use an online system to report exam grades. This system includes a mechanism to request a regrade of individual problems which will notify the grader responsible. Disputes should include rationale as to why an answer should not have received specific deductions.

If contact has not been initiated 1 week after a grade is posted, the chance to contest the grade has closed.

3.8 Bonus Credit

Bonus credit will be awarded based on participation in class discussions in lecture. Students may elect to sit in the first few rows of the room ("hot seats") and answer questions. Reasonable effort on answering questions in class will garner class participation credit. Participation points may also earned for involvement in the class discussion board such as giving suggestions to students with questions (but not revealing answers wholesale). The highest point winner at the end of the semester will receive a 3% bonus to their overall score in the course. All other students will receive a bonus proportional to the highest point winner. For example, someone tied with the highest point scorer will also receive a 3% bonus while someone with half the participation points will receive a 1.5% bonus.

A small amount of bonus credit also available for unused Day Late Tokens at the end of each semester.

4 Academic Integrity

PRIME DIRECTIVE: Be able to explain your own work including homework code and exam solutions. The work you submit should be the product of your own effort and reflect your personal understanding.

Nearly all cheating in programming can be averted by adhering to the PRIME DIRECTIVE. Students may be asked at any time to explain code or exam solutions they submit. Inability to do so will be construed as evidence of misconduct. More specific guidelines are given below.

4.1 Thou Shalt Not

Unless otherwise specified, all assessments in this course are individual efforts involving no unfair collaboration. For the purposes of this course, the following actions constitute scholastic misconduct (cheating) and will be reported.

  • Directly copying someone else's solution to an assessment problem, including student solutions from a previous semester
  • Directly copying an answer from some outside source such as the Internet or friend for a homework problem
  • Making use of an Instructor Solution manual to complete problems
  • Paying someone for a homework solution or submitting someone else's work as your own
  • Posting solutions to any web site including public posts to our course web site
  • Collaborating or copying someone else's answer during an exam
  • Taking another student's code with or without their consent.
  • Aiding or abetting any of the above
  • Witnessing any of the above and failing to report it to an instructor immediately

Refer to the following links for additional information.

4.2 Penalties

Any instance of misconduct that is detected will be referred to the Office of Community Standards and will likely result in failing the course. Be advised that the teaching team will be employing electronic means to detect plagiarism. This is extremely easy with computer code so keep your nose clean.

4.3 Fair Collaboration

The purpose of this course is to learn about programming and learning from one another is a great help. To that end, the following actions will NOT be considered cheating in this course.

  • Collaboration on Lab Exercises is allowed and encouraged. These are a great opportunity to help one another on work that counts towards your final grade. Just make sure that you understand any solutions you submit as per the PRIME DIRECTIVE.
  • Discussing projects at a high level with other course students is fair so long as no code is shared. Take great care at the point of showing your screen or letting others look.
  • Asking public questions on the course discussion board so long as limited code is posted.
  • If you are unsure whether a given collaboration is fair or not, stop the activity and clear it with your instructor.

At all times keep the PRIME DIRECTIVE in mind when studying with another student. The above collaborations should be limited to getting someone over a hurdle, not carrying them across the finish line.

4.4 Collaboration and other Sections

There is another section of CSCI 4061 running under a different instructor which is not coordinated with this one. Projects, lab topics, schedule, and exams will differ between sections. The policies within this syllabus apply only to our section and students should avoid collaborating outside of their own section to avoid problems.

5 General Policies

General university policies which apply to our course are listed here: https://policy.umn.edu/education/syllabusrequirements-appa

Summaries of those policies are below.

Students are expected to maintain a high level of civility for all participants in and out of class meetings. This includes respecting participants of all genders, ethnicities, and social backgrounds. Harassment of any type will not be tolerated and failure to behave in a respectful manner will be reported to the University.

Observance of religious events will be accommodated for students of any faith. All possible accommodations will be made for students with disabilities. Please contact the Disability Resource Center and the instructor for further information.


Author: Chris Kauffman (kauffman@umn.edu)
Date: 2019-02-19 Tue 16:38