CMPS-3600 Operating Systems
Gordon Griesel
Office: Science-III 337
Office Hours: see my schedule, or make an appointment
Email: gordon@cs.csub.edu

Course web site: https://www.cs.csub.edu/~gordon/3600/

Course meets:
MWF 11:00am - 11:50am (lecture 81671)
Thurs 10:00am - 12:30pm (lab 81672)

Course Description:
From the catalog:
A study of the introductory concepts in operating systems: historical development of batch, multi-programmed, and interactive systems; virtual memory, process, and thread management; interrupt and trap handlers, abstraction layer, message passing; kernel tasks and kernel design issues; signals and interprocess communication; synchronization, concurrency, and deadlock problems. Prerequisite: CMPS 2020 with a grade of C- or better. Prerequisites by Topic:
Programming skill in a high level language (preferably C or C++) Knowledge of data structures and algorithms.

NOTE: This course makes extensive use of the C programming language. Students who have only learned C++ should review a C tutorial for the differences between C ("pure C") and C++. Transfer students who have CMPS 2020 credit due to a Java course will need to take a more intensive self-directed study of the C programming language, as there are many syntax differences between C and Java.

Lecture Topics and Rough Schedule
The topics below are the general subjects of the course, and will
be introduced and discussed sequentially as the course progresses.
Subjects could be added or removed.

WeekChapterTopic list
Week 1 Chapters 1 & 2 Operating systems overview
Week 2 Chapters 1 & 2 Historical development
Week 3 Chapter 3 Process description & control
Week 4 Chapter 4 Principles of threaded programs
Week 5 Chapter 4 SMP & microkernels
Week 6 Chapter 5 Principles of concurrency
Week 7 Chapter 5 Semaphores
Week 8 Chapter 6 Principles of deadlock & starvation
Week 9 Chapter 6 Linux kernel concurrency
Week 10 Chapter 7 Memory management
Week 11 Chapter 8 Virtual memory
Week 12 Chapter 9 Uni-processor scheduling algorithms
Week 13 Chapter 10 Real-time scheduling
Week 14 Chapter 11 I/O scheduling
Week 15 Chapter 15 Security issues

Textbooks:
Operating Systems: Internals and Design Principles
9th edition
by William Stallings
Pearson
ISBN-13:  9780134670959
(Some earlier editions acceptable)
The C Programming Language
(ANSI C)
2nd Edition
by Brian Kernighan and Dennis Ritchie
Prentice Hall
ISBN-13: 978-0131103627
ISBN-10: 0131103628
The Linux Programming Interface
A Linux and UNIX System Programming Handbook
by Michael Kerrisk
No Starch Press, Inc.
ISBN-13: 978-1593272203
ISBN-10: 1593272200

Grading Policy:
labs, homework, quizzes, etc.  50% **********
Midterm exam-1                 15% ***
Project                        20% ****
Final exam                     15% ***
--------------------------------------------
Total                          100% 

Grading scale used during the semester...
    A   93%
    A-  90%
    B+  87%
    B   83%
    B-  80%
    C+  77%
    C   73%
    C-  70%
    D+  67%
    D   63%
    D-  60%
    F    0%

Class sessions
Class sessions will be held in Science-III room 240.

When class starts each day, you should be logged in to the Odin server.
Many class sessions will include some programming or a task to complete using
a text file on Odin.

Attendance
Class attendance is required.
Please be in your seat and ready when the class period begins.

Attendance marks:
   Late arrival to class - 1 mark
   Unexcused absence     - 2 marks

Each attendance mark will deduct 0.25% from your overall grade.

Labs
Lab attendance is required.
Labs are hands-on assignments to be done during a lab class period.
Lab Rules:
   1. Must not be late to lab.
   2. Must work the entire lab period, unless excused by instructor.
   3. Your program must compile and run at the end of lab period,
      when it is collected for scoring.
      A program that does not compile could receive a score of zero.

Homework
Homework assignments are posted on our web page.
Homework is usually a multiple-choice quiz.

General requirements of all assignments
Your assignments will sometimes be files stored on the Odin server. Your files
must be stored inside your 3600/ directory, and in the proper subdirectory.

Your 3600/ directory must be created using a script provided. The 3600/
directory is created so that your work is visible only to you and your
instructor. Do not change the permission of the directory after running
the provided script.

   Other general requirements:
     . Your name on the top line
     . Correct file name
     . Correct file location

   Programming assignments:
     . No compile warnings or errors
     . Program must run
     . Program output must be neat, clean, and complete.
     . C program code must follow the K&R coding style.
     . C program code must have consistent and correct indenting.

   Text file written assignments:
     . Your name on the top line
     . Neatly written text
     . Correct spelling and grammar

   Each assignment will also have some specific requirements in addition to
   those listed above.


Final Exam
A final exam will be given.
A date and time for the final exam will be posted.

Late Assignment Policy
Late assignments will not be accepted and can result in a score of zero.

Individual Work Policy
All work done in this course is individual work.
Sharing of source code is not allowed.
Possession of code written by other students is not allowed.
Asking or searching for code written by other students is not allowed.
Copying another student's work is plagiarism.
Copying answers or source code from the Internet is also plagiarism.

Academic Integrity Policy
All work done in this course is individual work.
Please do not share your work with other students.
You may discuss assignments with other students, but sharing of source code
is simply not allowed. Refer to the Academic Integrity policy printed in the
campus catalog and class schedule. Violations are enforced in accordance with
the Department's policy on academic honesty.

Absence from class
A student's responsibilities include attending classes.
If you miss a class, it is your responsibility to inform your instructor of
the reason for the missed class (documentation may be required) and to arrange
to make up any missed assignments, exams, quizzes, and class work,
to the extent that this is possible.
Excusable absences include, but are not limited to:
Illness, injury, death of an immediate family member, etc.
See a complete list at CSUB Catalog. Search for "University Absence Policy".

Protecting your own source code
Computer Science students are expected to take precautions to ensure that
their work cannot be accessed by other students. Our 3600 directory protects
your assignment files. For other files, use subdirectories and set permissions
that will protect your work. Contact your instructor for help.


No Recordings Allowed:
Under California Education Code Section 51512, it is illegal for any person, 
including a student, to use an electronic device to record what is happening 
in the classroom without the consent of the instructor.

The instructor for this course DOES NOT give consent for recording of any kind.

If a disability requires you to record a class session, then please 
contact SSD so accommodations can be made.


Your instructor reserves the right to amend this syllabus during the semester.