CSC 335 Operating Systems
Syllabus
Instructor: Prof. Chris Fernandes
Email: fernandc@you.know.the.rest
Office Hours: TBA
or anytime my door's open!
Office: 219 Steinmetz Hall
Phone: 388-6401
Course Webpage: http://nexus.union.edu
Text (1 required):
Silberschatz, Gagne, and Galvin,
Operating System Concepts. 10th edition, Wiley, 2018.
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.
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 Wed,
May 8th.
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 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.
Grading
- Written homework: 10%
- Programming projects: 45%
- 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 understanding NACHOS.
You should be working together (either physically
or virtually) so you can ask each other questions like, "what
is this line in NACHOS doing?"
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. This includes ChatGPT and similar sites.
- 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
Seriously. The textbook and vital NACHOS documents are the only way
to understand the details of the projects. You won't understand what
you need to do if you only rely on my lectures.
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 Schaffer Library rm 224. 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.