CSC 335 Operating Systems
Syllabus
Instructor: Prof. Chris Fernandes
Email: fernandc@union.edu
Time/Place: MWF 10:30-11:35, Olin 106
Office Hours: TTh 2-3:30 (more to come)
or anytime my door's open!
Office: 219 Steinmetz Hall
Phone: 388-6401
Course Webpage: http://nexus.union.edu
Text (1 required). Available via Perusall. I recommend buying the $30 version.
Silberschatz, Gagne, and Galvin,
Operating System Concepts. 10th edition, Wiley, 2018.
COVID-specific rules (starting week 2)
- Masks must be worn at all times and should cover your mouth and nose.
- No eating or drinking during class.
- By the end of the second week, you should always be seated in the same place.
- During class, always use the same lab computer.
Course Goals
The purpose of this course is for you to understand the most important
concepts and systems associated with a modern operating system (OS).
The goals of this course are:
- to understand the responsibilities of an OS
- to understand how an OS handles
- concurrency
- job scheduling
- memory management
- file management
- security issues
- to refine your programming skills through the use and modification
of third-party software
Topics to be covered include:
- semaphores, monitors, and locks
- classic synchronization problems
- scheduling algorithms and deadlock avoidance
- paging systems
- virtual memory
The best way to understand an OS is to build one yourself,
so you'll spend a lot of your time on programming projects. You will
be writing code in Java but also in C.
Thus, an indirect goal of this
course is for you to practice becoming proficient in a programming
language with which you may not already be
familiar. The ability to independently learn new languages
is a skill every Comp. Sci. and Comp. Engg. should have.
Prerequisites
CSC 151 Data Structures and CSC 270 Computer Organization. CSC 270 is necessary
since the OS interacts with hardware a lot. You'll need to
remember what things like registers, the system stack,
the program counter, and the ALU do.
Evaluation
- Exams. There is 1 midterm on Fri,
February 4th.
If you cannot be at an exam for a good reason (illness, for
example)
please let me know so we can make other arrangements.
The final will be cumulative. On exams, you will be responsible
for all material covered in the readings and in lectures. Exams are
open book and open notes.
- Programming projects.
These projects are where a lot of the solidification of the OS concepts
we discuss in class will happen. You'll be adding on to a small
but incomplete OS called NACHOS. It is written in Java, and a lot of
your job will revolve around understanding the code already there and
figuring out what new code to add and where.
Programming projects are due at the start
of class on the day it is due.
You only need to turn in an electronic copy (on
Nexus) but it
must include a single pdf file with just
the modified portions of your code.
I'll show you how to easily make the pdf version
during the first week. Your assignment is not
turned in unless it includes the .py files and the pdf file.
Late projects will not be accepted. There will be an
automatic 30% deduction if your code does not compile.
- Homework. Written homework will be assigned
sporadically throughout the trimester. Homework is due
at the start of class on the day it is due.
Late homework will not be accepted.
- Readings. All reading assignments will be
on Perusall. Making sure you understand what you are reading is crucial
to your success. So you will be graded weekly on how much you make
insightful comments, ask pertinent questions, and answer others'
questions on Perusall.
Grading
- Perusall readings: 5%
- Written homework: 10%
- Programming projects: 40% Here's the breakdown:
- Warmup project: 5%
- Concurrency project: 5%
- Synchronization project: 10%
- System calls project: 10%
- Virtual memory project: 10%
- Midterm Exam: 20%
- Final Exam: 25%
Academic Dishonesty
Students often have some confusion about what might or might not be
considered "cheating" in a computer science
class. In general, you should take advantage of your instructors
and fellow students in working out
solutions to assignments. This especially applies to NACHOS and C
issues. You should be working together (either physically
or virtually) so you can ask each other questions like, "what
is this line in NACHOS doing?" or "how do you do pointers in C?"
As always, however, you should never give code to or receive code
from another person. And you should ONLY look at another person's
code to give help, never to receive it. Looking at someone
else's code to get "inspiration" for what to write is cheating.
It is ok to reuse code...
- that is part of a demo or on a slide
- that I give you (or that you write) as part of a past project
- that is in the textbook that we use for this course
It is NOT ok to reuse code...
- that is part of someone else's project
- that is on the Web/Internet
- that is in other textbooks
Here's the bottom line: except for the above, you have to write all the
code yourself, from scratch.
In all cases, you must explicitly cite any source
(like a web page or a helpdesk person) that you use to help
complete an assignment. Again, this is similar to writing an English
paper;
if you use a quote or material from someone else,
you have to give credit where credit is due. Otherwise you are
inappropriately plagiarizing or borrowing ideas. You do not have
to cite help from me.
We have an honorcode and I'm trusting y'all to follow it.
Read up on it at
http://honorcode.union.edu. All suspected
violations will be reported to the Honor Council chair and Dean
of Studies.
What you need to do
To prepare for class, you are required to do the following:
Show up
You are expected to be present for every class. However, I realize that
sometimes other things come up (interview, illness, etc.) so
just please let me know in advance or by phone/email if you're going to
be absent. Unexcused absences are NOT allowed and will
affect your grade. If you miss class, get notes from someone
and do the readings before coming to see me. I'm happy to
explain things, but I won't repeat lectures for you.
Read and annotate on Perusall
Reading assignments will follow the major topics covered that week in class.
Perusall lets you annotate the reading with questions, comments, and answers
to other students' questions. It's a good way to stay engaged with the reading.
Here's an overview
and a sample screenshot
of how the annotations look.
Perusall annotations for the week will be due by Sunday at midnight right
before a new week begins. Example: week 1's annotations will be due by
Sunday, January 9th, right before week 2 begins.
Check the webpage on Nexus
The reading assignments (and other announcements) will be
posted regularly on the course webpage. You are required
to check it at least once a week. I usually update it over the weekend.
Check your email twice a day
I know: it's old tech, but this school runs on email. I send out
a lot of tips, hints, announcements, error corrections, and
lecture addendums over email. Check it at least twice daily.
Accommodations
Union College facilitates the implementation of reasonable accommodations, including
resources and services, for students with disabilities, chronic medical conditions and temporary
disabilities resulting in difficulties accessing learning opportunities. All students needing services must
first register with Accommodative Services located in Reamer 303. It is strongly recommended that
accommodations be requested within the first two weeks of the term. Last minute requests can be denied.
Any student with a documented learning disorder is welcome to
come talk to me privately about options for completion of exams and
homework assignments.
The Bottom Line
Ask questions and seek help. This is the most important
point of all. I live to answer questions. Don't be afraid to
contact me every single day if you want. It's better
for everybody (you AND me) if you understand
things sooner rather than later. More often than not, there's
a line of people waiting to see me on the day before a project
is due. You'll get the help you need faster by starting on projects
sooner rather than waiting until the last minute.