CS 0449 – Introduction to Systems Software

Fall Term: 2081

 

 

Class

Recitation

Recitation

Time:

9:30 – 10:45 AM

10:00 – 10:50 AM

12:00 – 12:50 PM

Days:

TH

F

F

Room:

5129 Sennott Sq.

5505 Sennott Sq.

5505 Sennott Sq.

Webpage:

http://www.cs.pitt.edu/~jmisurda/teaching/cs0449.htm

 

 

Contact Information

 

Instructor: Jonathan Misurda

 

TA: Mohammed Mohammed

Office:

6213 Sennott Square

 

Office:

6805 Sennott Square

Email:

jmisurda@cs.pitt.edu

 

Email:

mohammed@cs.pitt.edu

Office Hours:

MW 1:00-3:00
TH 11:00-12:00

 

Office Hours:

MW 11:30-12:45
T 11:30-1:00
F 11:00-12:00 and 2:15-3:15

 

 

Description

 

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.

 

Prerequisites

 

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.


Course Purposes and Goals

 

This course begins with the creation of executable programs in the C programming language. We then explore the resultant program as it as stored and as it is loaded to be executed. Next, we will examine the interactions between our code and the code that is already 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 as follows:

·         Learn programming in C, the most common language used for systems software

·         Explore the layout of an executable program’s code and data both stored on disk and loaded into memory

·         Interact with the abstractions that libraries and the operating system provide

·         Implement our own abstractions, and manage hardware resources through device drivers

 

Textbooks

 

[Required Text]

 

Oualline, Steve. Practical C Programming. O’Reilly, Sebastopol, CA, 1997.

 

ISBN: 1-56592-306-5

 

Class Policies

 

Exams:  There will be two midterms and a final. The exams will be closed book/notes. The final exam will be Thursday, December 13, 2007 from 12:00 p.m. – 1:50 p.m. in the regular 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.


Grading

 

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

 

 

Disability Resources and Services:

 

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.

 

 


Term Schedule: 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.

 

Week 1: 8/28/2007 - 8/30/2007

Readings: Practical C, Chapters 1-4, 11

 

Topics:

  • Introduction to the Course
  • C
    • Data Types and Representation
    • Operators & Bitwise Manipulation

 

Week 2: 9/4/2007 - 9/6/2007

Readings: Practical C, Chapters 5-9

 

Topics:

  • C (continued)
    • Control Flow
    • Functions
      • Scope vs. Lifetime

Week 3: 9/11/2007 - 9/13/2007

Readings: Practical C, Chapters 10, 12-13, 17

 

Topics:

  • C (continued)
    • Arrays
    • Strings
    • Pointers

 

Week 4: 9/18/2007 - 9/20/2007

Readings: Practical C, Chapters 14-23

 

Topics:

  • C (concluded)
    • I/O
      • Files
    • Memory management
      • malloc/free
    • Structures, and Unions

Week 5: 9/25/2007 - 9/27/2007

 

 

Thursday, September 27: First Midterm Exam

 

Topics:

  • Review for first midterm exam

 

Week 6: 10/2/2007 - 10/4/2007

 

Topics:

  • Program Representation
    • Linking
      • static
      • dynamic
    • Libraries, archives, shared objects
    • Executable file formats

 

Week 7: 10/9/2007 - 10/11/2007

 

Topics:

  • Processes
    • Address Space
  • Data Representation
    • Globals, constants
    • Activation Records
    • Arrays
    • Structures

 

Week 8: 10/16/2007 - 10/18/2007

 

Topics:

  • Interaction with Operating System
    • interrupts (int 0x80, int 3)
    • calling convention/ABI
  • Syscalls
  • Signal Handling

 

Week 9: 10/23/2007 - 10/25/2007

 

Topics:

  • Using APIs
    • Posix
    • Win32
  • Threading
    • User vs. Kernel Threading
    • scheduling/yield/sleep
  • Deadlocks/Synchronization
  • pthreads/CreateThread

 

Week 10: 10/30/2007 - 11/1/2007

 

Thursday, November 1: Second Midterm Exam

 

Topics:

  • Review for second midterm exam

 

Week 11: 11/6/2007 - 11/8/2007

 

Topics:

  • Communication and Networking
    • Berkley Sockets
    • Pipes
    • Shared Memory

 

Week 12: 11/13/2007 - 11/15/2007

Topics:

  • Multi-file Development
    • Providing an interface/API
    • Header files
    • Makefiles

 

Week 13: 11/20/2007 - 11/22/2007

 

Thursday, November 22: Thanksgiving Break (University Closed)

 

Topics:

  • HW Interaction
    • Polling
    • Memory mapping

 

Week 14: 11/27/2007 - 11/29/2007

 

Topics:

  • Device Drivers

 

Week 15: 12/4/2007 - 12/6/2007

 

Topics:

  • Review for the final exam

 

Final Exam: 12/13/2007

 

Final Exam Thursday, December 13, 2007 from 12:00 p.m. – 1:50 p.m in SENSQ 5502