CS 0449–Intro to Systems Software

Spring Term: 2184

 

Class

Recitation

Recitation

Time:

1:00 – 2:15 PM

11:00 – 11:50 AM

3:00 – 3:50 PM

Days:

MW

T

M

Room:

5502 SENSQ

5505 SENSQ

5505 SENSQ

Webpage:

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

Contact Information

 

Instructor: Jonathan Misurda

 

TA: Narges Honarvar Nazari

Office:

6203 Sennott Square

Office:

5501 SENSQ

Email:

jmisurda@cs.pitt.edu

Email:

nah114@pitt.edu

Office Hours:

Mon: 10am–noon
Wed: 11am–noon
Tue, Thu: 2:15pm–3:15pm

Office Hours:

Mon: 9:00am–noon
Tue: 3:00–6:00pm

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 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 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.

Textbooks

[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. Links can be found on the course website.

Class Policies

Exams:  There will be two midterms and a final. The exams will be closed book/notes. The final exam will be Friday, April 27, 2018, from 2:00 – 3:50 PM in the normal classroom. 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 department following University procedures.

At the risk of seeming like a Luddite, smart watches will be forbidden on test days. Please keep them someplace out of sight for the duration of the exam.

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. LATE WORK IS NOT ACCEPTED. Contact me before the deadline for clarifications.)  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.

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

100

95

90

89

85

80

79

75

70

69

65

60

< 60

Letter

A+

A

A-

B+

B

B-

C+

C

C-

D+

D

D-

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.

Academic Integrity

Students are expected to comply with the University of Pittsburgh’s Policy on Academic Integrity. Any student suspected of violating this obligation for any reason during the semester will be required to participate in the procedural process as outlined in the University Guidelines on Academic Integrity. For further information, see: http://www.pitt.edu/~provost/ai1.html

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.

The textbooks are indicated as follows:

 

 

Week 1: 1/8/2018 – 1/10/2018

Readings: Practical C, Chapters 1-4, 6, 8, 11

 

Topics:

·       Intro to the Course

·       C Programming

o   Data Types and Representation

 

Week 2: 1/15/2018 – 1/17/2018

Monday, January 15, 2018: MLK Day (No Class)

Friday, January 19, 2018: Add/Drop Ends

 

Readings: Practical C, Chapters 5, 7, 9

 

Topics:

·       C Programming (continued)

o   Operators & Bitwise Manipulation

o   Control Flow

o   Arrays

 

Week 3: 1/22/2018 – 1/24/2018

Friday, January 26, 2018: Extended Drop Period Ends

 

Readings: Practical C, Chapters 10, 12-14, 17; Misurda, Chapters 1-2

 

Topics:

·       C Programming (continued)

o   Strings

o   Functions

o   Scope vs. Lifetime

o   Pointers

 

Week 4: 1/29/2018 – 1/31/2018

Readings: Practical C, Chapters 15-23

 

Topics:

·       C Programming (continued)

o   I/O

o   Memory management

§  malloc/free

Week 5: 2/5/2018 – 2/7/2018

Wednesday, February 7, 2018: First Midterm Exam

 

Topics:

·       C Programming (continued)

o   Structures

·       Review for first midterm exam

Week 6: 2/12/2018 – 2/14/2018

Readings: Misurda, Chapters 3 - 4

 

Topics:

·       Program Representation

·       Linking

o   Static

o   Dynamic

·       Libraries, archives, shared objects

·       Executable file formats

Week 7: 2/19/2018 – 2/21/2018

Readings: Misurda, Chapters 5 - 7

 

Topics:

·       Processes & Address Spaces

·       Data Representation

o   Globals, constants

o   Activation Records

o   Arrays and Structures

Week 8: 2/26/2018 – 2/28/2018

Readings: Misurda, Chapter 8; ALP Chapters 3, 8

 

Topics:

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

Spring Break: 3/5/2018 – 3/7/2018

 

Spring Break: No classes

 

Week 9: 3/12/2018 – 3/14/2018

Friday, March 16, 2018: Withdrawal Deadline (For “W” grade)

 

Readings: Practical C, Chapters 7,10,18

 

Topics:

·       Multi-file Development

o   Providing an interface/API

o   Header files

o   Makefiles

 

Week 10: 3/19/2018 – 3/21/2018

Wednesday, March 21, 2018: Second Midterm Exam

 

Topics:

·       Review for second midterm exam

 

Week 11: 3/26/2018 – 3/28/2018

Readings: LDD3, Chapters 1 & 2

 

Topics:

·       Linux Device Drivers

·       Signal Handling

Week 12: 4/2/2018 – 4/4/2018

Readings: Misurda, Chapter 9; ALP, Chapter 4

 

Topics:

·       Threading

o   User vs. Kernel Threading

o   Scheduling/yield/sleep

o   Pthreads

Week 13: 4/9/2018 – 4/11/2018

Readings: Misurda, Chapter 10

 

Topics:

·       Synchronization

·       Deadlocks

 

Week 14: 4/16/2018 – 4/18/2018

Readings: Prepare for the final exam

Topics:

  • Review for the final exam

Finals Week

 

Final Exam: Friday, April 27, 2018, from 2:00 – 3:50 PM in the normal classroom.