CS/COE 0449 - Introduction to Systems Software Spring 2019 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Contact Information |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Course Description and Goals |
A Computer System is comprised of both hardware and software
working in concert to accomplish useful work. In this course, we will explore
the issues of programming a real computer system by examining the
abstractions, interfaces, and design decisions that influence the way that
software runs. This includes the role the Operating System has in
communication and resource management. The perspective we will take is one of the lifecycle of a
program from implementation to execution. The simple act of compiling and
running a program, a sequence of events we often take for granted, is a
complex interaction of many different components that work together to manage
the computer’s resources and perform the desired task. Together, these
components form a working computer system. This course begins with the creation of executable programs in
the C programming language. We will then explore the resultant program as it
is stored on disk and as it is loaded for execution. Next, we will examine
the interactions between our code and the code provided via libraries or the
operating system to facilitate common, low-level tasks. Finally, we will look
at the abstractions and resource management undertaken by the OS and its
drivers to facilitate communication and hardware interaction. The goals of the course are: 1. Learning C programming. C is the most common
language used for systems software. 2. Exploring the layout of an executable
programs code and data both as stored on disk and loaded into memory. 3. Interacting with the abstractions that
libraries and the operating system provide. 4. Implementing our own abstractions and
managing hardware resources through device drivers. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Prerequisites |
Before enrolling in this course, you need to have completed
CS/COE 0445 Data Structures and have completed or be currently enrolled in
CS/COE 0447 Computer Organization and Assembly Language Programming If you
have any questions about the prerequisite material for the course, please ask
at the beginning of the term. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Textbooks |
1.
Practical C: Oualline,
Steve. Practical C Programming. OReilly,
Sebastopol, CA, 1997. ISBN: 1-56592-306-5 You may substitute it with (but youre responsible for the appropriate readings): Kernighan, Brian W. and Ritchie,
Dennis M. C Programming Language. 2nd Ed. Prentice Hall PTR, 1988.
ISBN: 0-13110-362-8 2.
There are three additional textbooks
that are available online in PDF form that we will refer to throughout the
term. Misurda: Jonathan Misurda, CS 0449: Introduction to Systems Software (online). ALP: Mark Mitchell, Jeffrey Oldham, and Alex Samuel, Advanced Linux Programming (online). LDD3: Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman, Linux Device Drivers, Third Edition (online). |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Grading Policy |
Midterm and Final exams (45%): 3 closed book/notes exams worth 15% each. Make-up exams
can be scheduled well in advance. Cheating on exams will not be tolerated. Anyone
caught cheating will be given a zero for the test or for the course and
reported to the school following University
procedures. Smart Watches will be forbidden on test days. Projects (40%): five
projects worth 8% each. Late submissions are allowed for up to two days with
a 10% reduction per late day. This must be your own individual work. Do not
look at the solution of anyone (or even part of it), and do not let anyone
else look at yours (or even part of it). You should figure out the solutions
by yourself --- do not ask anyone how to solve the problem, and do not seek
the answer from some other source. These are meant to be your own work;
anyone found to be collaborating will be disciplined in accordance to
University policy. Cheating means (but is not limited to): using code from
previous terms, other universities, your friends, finding it on the Internet,
getting help from unapproved forums, or outsourcing it. We will be using Moss, a tool from Stanford for
determining inappropriate collaboration. Recitation Labs and Quizzes (10%): Attending recitation is an important part of this course.
In recitation you will be able to work in a structured setting while
completing small tasks (Labs). Concepts from class will be expanded upon and
tested with unannounced quizzes. The lowest one of the labs and quizzes will
be dropped. Lecture Participation (5%): Mini-quizzes on Top Hat during each lecture. The join code
for Top Hat is 412040. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Important Dates |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Weekly Schedule |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Important Links |
PuTTY - an SSH client for Windows File
Transfer Clients: Windows
users: WinSCP, FileZilla Mac/Linux
users: FileZilla |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Students with Disabilities |
If you have a disability for which you are or may be requesting
an accommodation, you are encouraged to contact both your instructor
and Disability
Resources and Services (DRS), 140 William Pitt Union, (412) 648-7890,
drsrecep@pitt.edu, (412) 228-5347 for P3 ASL users, as early as possible in
the term. DRS will verify your disability and determine reasonable
accommodations for this course. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Academic
Integrity |
Students have the responsibility to
be honest and to conduct themselves in an ethical manner while pursuing
academic studies. Students have the right to be treated by faculty in a fair
and conscientious manner in accordance with the ethical standards generally
recognized within the academic community (as well as those recognized within
the profession). Should a student be accused of a breach of academic
integrity or have questions regarding faculty responsibilities, procedural
safeguards including provisions of due process have been designed to protect
student rights. These may be found in Guidelines on Academic Integrity: Academic
Integrity Policy of the School of Computing and Information. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Religious
Observances |
In order to accommodate the
observance of religious holidays, students should inform the instructor (by
email, within the first two weeks of the term) of any such days which
conflict with scheduled class activities. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Acknowledgements |
Most of the material of this course
are based on Dr. Wonsun Ahn's
CS
0449 course at Pitt. |