TWiki
>
CS385spring12 Web
>
Syllabus
(revision 6) (raw view)
Edit
Attach
---++ CS385 - Syllabus | Instructor | Dr. Jakob Eriksson <jakob@uic.edu> | | Meets | 3:30-4:45 pm TR, in 209 BH | | | 4-4:50 pm W, in 309 BH | | Office hours | Wed 4:50-6 pm (in ERF 2054) | | || | Teaching Assistant | Timothy Merrifield <tmerri4@uic.edu> | | TA Office Hours | FRI 1-2, M 11-12 (in ERF 2054) | | Lab Phone | 312-413-2103 | ---++ OVERVIEW By the end of this course, you will have a good understanding of the main elements that work together to form an Operating System. You will have significant experience with C programming for low-level application development, and some exposure to operating system development. You will have acquired familiarity with standard tools for revision control, debugging, application performance and system diagnostics. While the class combines theory and practice, there will be a focus on practical demonstrations in lecture and extensive hands-on programming experience. Plan to spend 10 +/- 5 hours per week on homework programming, depending on your current proficiency. ---++ MATERIALS We will be using the 8th edition of the main textbook below, but you should be able to get by with the 7th edition as well. *Operating System Concepts* 8/e <br /> _Silberschatz, Galvin and Gagne_ <br /> Wiley All assignments are done in C. This is an excellent (and classic) introduction to the language. *The C Programming Language* <br /> _Kernigan and Ritchie_ <br /> Prentice Hall <!-- Any architecture-specific discussions, as well as all the Linux kernel code we will be studying, will be based on the x86-64 (a.k.a. amd64) architecture. These will be handy references for the x86-64 architecture and the System V application binary interface: * [[http://support.amd.com/us/Processor_TechDocs/24593.pdf][AMD64 Architecture Programmer's Manual Volume 2: System Programming]] * [[http://support.amd.com/us/Processor_TechDocs/24594.pdf][AMD64 Architecture Programmer's Manual Volume 3: General Purpose and System Instructions]] * [[http://www.sco.com/developers/devspecs/abi386-4.pdf][System V Application Binary Interface (ABI)]] * [[http://www.x86-64.org/documentation/abi.pdf][System V ABI x86-64 supplement]] * [[http://www.cs.cmu.edu/~fp/courses/15213-s07/misc/asm64-handout.pdf][x86-64 Machine Level Programming]] --> additional materials will be supplied throughout the course in the form of URLs. ---++ PREREQUISITES This class is programming intensive, with all assignments done in C. C programming will be taught in the class, but our approach to C will be based on a prior understanding of assembly language. CS366 is a required prerequisite: concurrent enrollment only with instructor consent, and strongly not recommended unless you have prior assembly experience. ---++ EVALUATION Evaluation will be done through 1 midterm (20 points), 1 final (30 points) and 10 homeworks (75 points). Totals of 100 points or higher will count as 100 points for the purpose of the final grade. Grades will be based on a relative curve, determined after the final exam. ---++ ACADEMIC INTEGRITY Consulting with your classmates on assignments is encouraged, except where noted. However, turn-ins are individual, and copying code from your classmates is considered plagiarism. For example, give the question "how did you do X?", a great response would be "I used function Y, with W as the second argument. I tried Z first, but it doesn't work". An inappropriate response would be "here is my code, look for yourself". To avoid suspicion of plagiarism, you *must* specify your sources together with all turned-in materials. List classmates you discussed your homework with and webpages from which you got inspiration or copied (short) code snippets. All students are expected to understand and be able to explain their turned-in materials. Plagiarism and cheating, as in copying the work of others, paying others to do your work, etc, is obviously prohibited, is grounds for failing the course, and will be reported. ---++ TOPICS COVERED (tentative) 1 The C programming language 1 from source code to executable 1 relationship to assembly language 1 types and expressions 1 functions and function calls 1 dynamic memory management 1 essential programmer tools 1 Purpose, Function and Structure of an OS 1 Boot 1 Processes 1 User / Supervisor modes, privileged instructions 1 System Calls 1 Contexts 1 Process Management 1 Linking and loading 1 Processes vs. Threads 1 CPU Scheduling 1 Concurrency 1 Interrupts, multiprocessing, simultaneous multithreading 1 Synchronization mechanisms 1 Race conditions and deadlocks 1 Memory Management 1 Operation of malloc() 1 Virtual memory and paging 1 Memory mapping with mmap() 1 Understanding and Diagnosing Program Performance 1 Profiling and the 80/20 rule 1 The memory hierarchy 1 Threaded vs. Event-driven programming 1 Storage Management 1 File systems 1 Mass storage devices 1 I/O and Device Drivers 1 Protection and Security <!-- * Set ALLOWTOPICCHANGE = jakob, tmerri4 -->
Edit
|
Attach
|
P
rint version
|
H
istory
:
r7
<
r6
<
r5
<
r4
<
r3
|
B
acklinks
|
V
iew topic
|
Raw edit
|
More topic actions...
Topic revision: r6 - 2012-01-13 - 00:11:18 - Main.tmerri4
CS385spring12
Syllabus
Lecture Notes
Homeworks
Discussion Board
Subversion help
Additional Material
ABOUT US
Our Department
Recent News
Contact Us
ACADEMICS
Prospective Students
Undergraduate
CS Minor
Graduate
Courses
RESEARCH
Overview
By Faculty
Labs
PEOPLE
Faculty
Adjuncts
Staff
Students
Alumni
Copyright 2016 The Board of Trustees
of the University of Illinois.
webmaster@cs.uic.edu
WISEST
Helping Women Faculty Advance
Funded by NSF