CS 0449–Intro to Systems Software
Spring Term: 2094
|
Class |
Recitation |
Recitation |
Time: |
2:30 - 3:45pm |
4:00 - 4:50pm |
3:00 - 3:50pm |
Days: |
TH |
T |
F |
Room: |
5502 SENSQ |
6110 SENSQ |
5502 SENSQ |
Webpage: |
Instructor: Jonathan Misurda |
|
TA: Asim Jamshed |
||
Office: |
6213 Sennott Square |
|
Office: |
5324 Sennott Square |
Email: |
|
Email: |
||
Office Hours: |
Mon, Tue, Wed 12:30–2:30 |
|
Office Hours: |
Thurs 4–7, Fri 4:30–7:30 |
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.
Before enrolling in this course, you need to have completed CS 0441 – Discrete Structures for Computer Science, CS 0445 – Data Structures, and have completed or be currently enrolled in CS 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.
This course begins with the creation of executable programs in the C programming language. We will then explore the resultant program as it as 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:
· Learning C programming. C is the most common language used for systems software.
· Exploring the layout of an executable program’s code and data both as stored on disk and loaded into memory.
· Interacting with the abstractions that libraries and the operating system provide.
· Implementing our own abstractions, and manage hardware resources through device drivers.
[Required Text]
Oualline, Steve. Practical C Programming. O’Reilly, Sebastopol, CA, 1997.
ISBN: 1-56592-306-5
You may substitute instead (but you’re 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
[Online Required Texts]
There are three additional textbooks that are available online in PDF form that we will refer to throughout the term.
Exams: There will be two midterms and a final. The exams will be closed book/notes. The final exam will be Tuesday, April 21, 2:00 - 3:50 p.m., in the normal classroom.
Cheating on exams will not be tolerated. Anyone caught cheating will be given a zero for the test and reported to the department following University procedures.
Projects: There will be 5 out-of-class assignments given. These are to be completed in the given time (no extensions will be given without a valid excuse.) These are meant to be your own work; anyone found to be collaborating will be given a zero for the assignment. Collaborating also means using code from previous terms, other universities, your friends, or finding it on the Internet.
Labs and Quizzes: 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.
Participation: Attendance will not be taken, but in a small class, any absence will be noticed. Several unexcused missed classes will adversely affect your grade.
Your grade will be based upon 3 exams, 5 projects, labs and quizzes (the lowest one of which will be dropped), and participation:
First Midterm |
15% |
Second Midterm |
15% |
Final Exam |
15% |
5 Projects |
40% (8% each) |
Labs and Quizzes |
10% |
Participation |
5% |
Total |
100% |
The scale for the term will be:
Percentage |
Letter |
100 |
A+ |
95 |
A |
90 |
A- |
89 |
B+ |
85 |
B |
80 |
B- |
79 |
C+ |
75 |
C |
70 |
C- |
69 |
D+ |
65 |
D |
60 |
D- |
less than 60 |
F |
If you have a disability for which you are requesting an accommodation, you are encouraged to contact both your instructor and Disability Resources and Services, 216 William Pitt Union, (412) 648-7890, as early as possible in the term. DRS will verify your disability and determine reasonable accommodations for this course.
The daily topics are subject to change depending on our pace. They are there to assist you in the readings so you can focus on those concepts prior to class.
The textbooks are indicated as follows:
Week 1: 1/6/2009 - 1/8/2009 |
Readings: Practical C, Chapters 1-4, 6, 8, 11
Topics: · Intro to the Course · C Programming o Data Types and Representation o Operators & Bitwise Manipulation o Control Flow
|
Week 2: 1/13/2009 - 1/15/2009 |
Readings: Practical C, Chapters 5, 7, 9; Misurda, Chapter 1
Topics: · C Programming (continued) o Arrays o Strings o Functions
|
Week 3: 1/20/2009 - 1/22/2009 |
Monday, January 19, 2009: MLK Day University Closed Tuesday, January 20, 2009: No Class to keep in synch with MW section
Readings: Practical C, Chapters 10, 12-14, 17
Topics: · C Programming (continued) o Pointers o I/O § Console § Files
|
Week 4: 1/27/2009 - 1/29/2009 |
Readings: Practical C, Chapters 15-23
Topics: · C Programming (continued) o Memory management § malloc/free o Structures, and Unions
|
Week 5: 2/3/2009 - 2/5/2009 |
Thursday, February 5, 2009: First Midterm Exam
Topics: · Review for first midterm exam
|
Week 6: 2/10/2009 - 2/12/2009 |
Readings: Misurda, Chapters 2 - 3
Topics: · Program Representation · Linking o Static o Dynamic · Libraries, archives, shared objects · Executable file formats
|
Week 7: 2/17/2009 - 2/19/2009 |
Readings: Misurda, Chapters 4 - 6
Topics: · Processes & Address Spaces · Data Representation o Globals, constants o Activation Records o Arrays o Structures
|
Week 8: 2/24/2009 - 2/26/2009 |
Readings: Practical C, Chapter 10
Topics: · Conditional Compilation · Multi-file Development o Providing an interface/API o Header files o Makefiles
|
Week 9: 3/3/2009 - 3/5/2009 |
Thursday, March 5, 2009: Second Midterm Exam
Readings: Misurda, Chapter 8; ALP, Chapter 3
Topics:
· Review for second midterm exam
|
Spring Break |
University Closed
|
Week 10: 3/17/2009 - 3/19/2009 |
Readings: LDD3, Chapters 1-2
Topics: · Linux Device Drivers
|
Week 11: 3/24/2009 - 3/26/2009 |
Readings: Misurda, Chapter 9
Topics: · Threading o User vs. Kernel Threading o Scheduling/yield/sleep · pthreads · Deadlocks/Synchronization
|
Week 12: 3/31/2009 - 4/2/2009 |
Readings: Misurda, Chapter 10
Topics: · Communication and Networking o Berkley Sockets o Pipes o Shared Memory
|
Week 13: 4/7/2009 - 4/9/2009 |
Topics: · Buffering · Errors and Robust Programming
|
Week 14: 4/14/2009 - 4/16/2009 |
Readings: Review
Topics: · Review for the final exam
|
Finals Week: 4/20/2009 |
Tuesday, April 21, 2009: Final Exam: 2:00 - 3:50 p.m., in the normal classroom.
|