|
|
|
CS422: Course Overview
Instructor
- Fred Kuhns
- Email: fredk at cse dot wustl dot edu
also see instructor.html
Course Description
This course will explore the role of operating systems as managers of shared
local and remote resources. Using UNIX and Linux as conceptual and
experimental frameworks, students study algorithms and data structures that
support essential operating systems services. Concepts are reinforced through
programming exercises and comparative studies. Topics include: time sharing
and real-time scheduling of processes and threads, networking, memory
management, virtual memory, device management, concurrent programming and file
system organization.
Operating systems range in complexity from simple run-time executives on
single processor embedded devices to general purpose computing environments
distributed across the network on multiple heterogeneous systems.
Consequently, this course will look at operating system as an example of
developing a large and complex program and the various issues and concerns
that arise from such an endeavor. That is, an operating systems is nothing
more than a program, i.e. server, providing a set of services to clients, the
application programs. Throughout the course students will be asked to
consider a broad range of issues and complexities and possible solutions that
arise in developing complex operational environments. This aspect of the
course reinforces the necessity of structured design and development
methodologies.
A fundamental component of designing an operating system is in selecting the
proper set of resource abstractions and associated policies and mechanisms for
their management. In this course students will explore various resource types
and their common abstractions. For example, abstractions for memory,
computations context, CPU, files and networks. Then developing a general set
of mechanisms (algorithms) for manipulating, partitioning and scheduling the
resources for both internal use and for allocating to clients. The students
learn to differentiate between the resource (or its abstraction), mechansisms
to manipulate it and policies governing use.
Much of the course will be devoted to exploring the concurrent use of hardware
resources. This is a central theme to all operating system and is critical for
the development of correct programs.
Prerequisites
Prerequisite knowledge and experience:
- CS 241 - Algorithms and Data Structures
CS102/102and cs241 - provides the core understanding of software systems and
their development. The student gains an understanding of conventional data
structures (such as linked lists, trees, arrays and integers), basic
algorithms and a working understanding and appreciation for algorithm
complexity and the time versus space trade offs that can be made. These
courses also provide an understanding of how data is represented in the system
along with an introduction to software systems and development methodologies.
-
In addition to the above, the prospective student must have additional
experience designing and implementing software using a standard set of
development tools, preferebly in the UNIX environment (UNIX is the target
platform for the cs422 assignments because of source code documentation/paper
availability). Ideally, this experience includes familiarity with typical
software development tools such as a compiler (gcc preferred), debugger (gdb
preferred), and text editors. As for languages, either C or C++: if C++ then
familiarity with the core C constructs and the C standard library (libc) are
desirable. Options: a) CS342
CS342 Developing Object-Oriented Software with Patterns and Frameworks or
b) CS306/ CS265.
- Nice to have, but not required: CS306 - it is helpful to have an
understanding of the underlying hardware components in order to appreciate
the software constructs built on top of them. For example, the stack and
stack pointer and how it is used for function calls. Mapping C or C++
to assembly. Using a disassembler to debug difficult problems. How cache
works and the role of typical bus bridges. Looking at a typical system
(Intel for example) will help the students understand the OS abstractions
and optimization techniques.
However cs306 is not necessary to develop a sufficiently deep understanding of
the material presented in cs422. The first few lectures of cs422 provide
suffucient background.
-
Or equivalent experience in software development and a basic understanding of
computer architecture.
Grading
- Relative weighting:
- Exams - 40%
- Programming Assignments - 40%
- Homework and Quizes - 20%
Homeworks, Quizes, and Class Attendance
Expect either a quiz or homework assigment each week, though this will vary
depending on the work load. The quizes can be announced or unannounced.
There will be no makeup quizes.
Exams
There will be two exams: a mid-term and a final. Each exam will be worth
20% of your grade. Material tested on the final exam will be comprehensive.
Programming Projects
There will be 4-6 programming projects. Three of the assignments (called
projects below) will involve substantial programming. Students are assumed to
be competent in C or C++ and familiar with the UNIX operating system.
The general criteria for the grading of the programs is given below:
- Project Design 30%
- Are all conditions covered (errors, operations specified in assignment)?
- Have synchronization and process/thread scheduling issues been addressed?
- Have Proper measurement and/or data collection techniques been used?
- Does the overall design and implementation demonstrate an understanding
of the underlying issues?
- Does the solution demonstrate insight or have novel approaches been used?
- Structure 20%
- Is the software logically structured?
- Is it understandable: use of comments and informative symbol names?
- Have potential maintainability or portability issues been addressed?
- Documentation - 30% (program must operate properly for full credit)
- Is there a supplied README file and any other files required by the project?
- Does the analysis address all required issues and is it insightful?
- Is the documentation logically structured and is it understandable?
- Have instructions been followed?
- Program Operation - 20%
- Does the program work or does it terminate in an error?
- Does it accept the proper parameters?
- Are the results displayed properly?
- Are the results correct or reasonable?
Late Submissions
Homework and projects may be submitted up to three days late. However,
for each day late 5 points will be deducted. After the third
day the homework or project will not be accepted.
Occasionally, in special situations, arrangements for a late submission
can be made if requested well in advance of the due date.
|