/afs/cs.pitt.edu/usr0/skhattab/public/html/cs1550/index_files/image001.png

CS/COE 0449 - Introduction to Systems Software

Spring 2019

 

Contact Information

Instructor

 

 

Office Hours

Sherif Khattab, 6307 SENSQ

(412) 624-8438

skhattab@cs.pitt.edu

MW: 10am-noon

TH: 3pm-6pm

F: 3pm-5pm

Please reserve at: https://khattab.youcanbook.me/

 

TA

 

 

Office Hours

 

TA

 

 

Office Hours

 

James Tomko, SENSQ 5806

(Section 27824)

jat190@pitt.edu

MW: 10-noon

Zac Yu, SENSQ 5806

(Section 27823)

zac.yu@pitt.edu

M: 2:30 – 4:30

 

Nathan Ong, SENSQ 6804

(Section 30803)

nro5@pitt.edu

T: 1:00-4:00pm

 

Arun Balajiee, SENSQ 6148

(Grader)

arl122@pitt.edu

W: 10am-1pm

 

 

 

Lectures

 

MW 1:00-2:15 @ PUBHL G23

Recitations

27824: Monday 3:00-3:50 @ SENSQ 5505

27823: Tuesday 11:00-11:50 @ SENSQ 5502

30803: Wednesday 10:00-10:50 @ SENSQ 5505

Student Feedback

Please send us your anonymous feedback

Top Hat Join Code

412040

 

Course Description and Goals

 

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.

 

This course begins with the creation of executable programs in the C programming language. We will then explore the resultant program as it is 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:

 

1.     Learning C programming. C is the most common language used for systems software.

2.     Exploring the layout of an executable programs code and data both as stored on disk and loaded into memory.

3.     Interacting with the abstractions that libraries and the operating system provide.

4.     Implementing our own abstractions and managing hardware resources through device drivers.

 

Prerequisites

 

 

Before enrolling in this course, you need to have completed CS/COE 0445 Data Structures and have completed or be currently enrolled in CS/COE 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.

Textbooks

 

1.     Practical C: Oualline, Steve. Practical C Programming. OReilly, Sebastopol, CA, 1997. ISBN: 1-56592-306-5

 

You may substitute it with (but youre 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

 

2.     There are three additional textbooks that are available online in PDF form that we will refer to throughout the term.

Misurda: Jonathan Misurda, CS 0449: Introduction to Systems Software (online).

ALP: Mark Mitchell, Jeffrey Oldham, and Alex Samuel, Advanced Linux Programming (online).

LDD3: Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman, Linux Device Drivers, Third Edition (online).

 

Grading Policy

 

Midterm and Final exams (45%): 3 closed book/notes exams worth 15% each. Make-up exams can be scheduled well in advance.

 

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 school following University procedures. Smart Watches will be forbidden on test days.

 

Projects (40%): five projects worth 8% each. Late submissions are allowed for up to two days with a 10% reduction per late day. This must be your own individual work. Do not look at the solution of anyone (or even part of it), and do not let anyone else look at yours (or even part of it). You should figure out the solutions by yourself --- do not ask anyone how to solve the problem, and do not seek the answer from some other source. 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.

 

Recitation Labs and Quizzes (10%): 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. The lowest one of the labs and quizzes will be dropped.

 

Lecture Participation (5%): Mini-quizzes on Top Hat during each lecture. The join code for Top Hat is 412040.

Important Dates

 

Midterm Exam 1

Wednesday 1/30

Midterm Exam 2

Wednesday 3/6

Final Exam

Wednesday 4/17

 

 

 

 

 

 

Weekly Schedule

Project #

Out on

Due on @11:59pm

1

F 1/25

M 2/11

2

F 2/15

SU 3/10

3

SU 3/10

M 3/25

4

F 3/29

W 4/10

5

TH 4/11

SU 4/21

 

 

Week

Topic

Reading

Announcements

Wk 1 (1/7-1/11)

Intro to the Course

C Programming: Data Types and Representation

Practical C, Chapters 1-6, 8, 11

Wk 2 (1/14-1/18)

C Programming (continued): Operators & Bitwise Manipulation, Control Flow, Arrays

Practical C, Chapters 7, 9, 10

Spring Term add/drop period ends on 1/18

Wk 3 (1/21-1/25)

No class on 1/21 (MLK)

C Programming (continued): Strings, Functions, Scope vs. Lifetime, Pointers

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

Spring Term extended add/drop period ends on 1/25

Project 1 out on 1/25

Wk 4 (1/28-2/1)

C Programming (continued): I/O, Console, Files, Memory management, malloc/free

Midterm exam 1

Practical C, Chapters 15-23

Midterm exam 1 on Wednesday 1/30

Wk 5 (2/4-2/8)

Program Representation, Linking (Static and Dynamic), Libraries, archives, shared objects, Executable file formats

Misurda, Chapters 3 and 4

 

Wk 6 (2/11-2/15)

Processes & Address Spaces, Data Representation, Globals, constants, Activation Records, Arrays and Structures

Misurda, Chapters 5 and 7

Project 1 due on 2/11 @ 11:59pm

Project 2 out on 2/15

Wk 7 (2/18-2/22)

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

Misurda, Chapter 8; ALP Chapters 3, 8

Wk 8 (2/25-3/1)

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

Practical C, Chapters 7,10,18

 

Wk 9 (3/4-3/8)

Review for second midterm exam

Midterm exam 2

Monitored Withdrawal Deadline on 3/8

Project 2 due on 3/10 @ 11:59pm

Project 3 out on 3/10

Midterm exam 2 on Wednesday 3/6

Wk 10 (3/11-3/15)

Spring Recess No classes

Wk 11 (3/18-3/22)

Linux Device Drivers

Signal Handling

LDD3, Chapter 1 and 2

Wk 12 (3/25-3/29)

Communication and Networking (Berkley Sockets, Pipes, Shared Memory)

Misurda, Chapter 11

Project 3 due on 3/25 @ 11:59pm

Project 4 out on 3/29

Wk 13 (4/1-4/5)

Threading, User vs. Kernel Threading, Scheduling/yield/sleep, Pthreads,

Misurda, Chapter 9; ALP, Chapter 4

Wk 14 (4/8-4/12)

Synchronization, Deadlocks

Misurda, Chapter 10

Project 4 due on 4/10 @ 11:59pm

Project 5 out on 4/11

Wk 15 (4/15-4/19)

Review for the Final Exam

Final Exam

Prepare for the Final

Project 5 due on 4/21 @ 11:59pm

Final exam on Wednesday 4/17

 

Important Links

 

PuTTY - an SSH client for Windows

File Transfer Clients:

Windows users: WinSCPFileZilla

Mac/Linux users: FileZilla

 

Students with Disabilities

 

If you have a disability for which you are or may be requesting an accommodation, you are encouraged to contact both your instructor and Disability Resources and Services (DRS), 140 William Pitt Union, (412) 648-7890, drsrecep@pitt.edu, (412) 228-5347 for P3 ASL users, as early as possible in the term. DRS will verify your disability and determine reasonable accommodations for this course.

Academic Integrity

Students have the responsibility to be honest and to conduct themselves in an ethical manner while pursuing academic studies. Students have the right to be treated by faculty in a fair and conscientious manner in accordance with the ethical standards generally recognized within the academic community (as well as those recognized within the profession). Should a student be accused of a breach of academic integrity or have questions regarding faculty responsibilities, procedural safeguards including provisions of due process have been designed to protect student rights. These may be found in Guidelines on Academic Integrity: Academic Integrity Policy of the School of Computing and Information.

Religious Observances

In order to accommodate the observance of religious holidays, students should inform the instructor (by email, within the first two weeks of the term) of any such days which conflict with scheduled class activities.

Acknowledgements

 

Most of the material of this course are based on Dr. Wonsun Ahn's CS 0449 course at Pitt.