Syllabus
Description:
This course explores modern interrupt-driven computer systems. It
considers models of computation and complex systems,
techniques for communication and synchronization of parallel and
concurrent software, and the protocols that make up the
Internet.
Textbook:
The primary book for this course is:
Bryant,
R.E.
and
D.R. O'Hallaron
(2016)
Computer Systems: A Programmer's Perspective, Pearson
, Boston, MA.
(Order from
amazon
, order from
Barnes and Noble
, compare at
bigwords
, compare at
CampusBooks4Less
, order from
Chegg
, or search
eFollett
)
The other required readings are available on-line (prefixed with
one or more letters).
Outline: This course is organized as follows, though specific topics and dates may change. (Readings are listed in the right-most column.)
Part I: Review and Background
|
1/10 |
A Review of C
,
Scope, Duration and Linkage
and
System Calls
|
B1
|
1/12 |
Files
,
Unix I/O
,
File Descriptors
,
Terminals
and
The C Calling Convention
|
10.1-10.3, 10.8-10.11
|
1/17-1/19 |
State Models
and
Implementing State Models
|
B2
and
B3
|
1/24 |
Control Flows
,
Exceptions/Interrupts
and
Coordination Problems
|
1.7.1, 8.1, 8.2
|
Part II: Concurrent Programming with Processes
|
1/26-1/31 |
Concurrent Processes without Interprocess Communication
and
An Aside on Memory Corruption
|
8.3, 12.1
|
2/2 |
An Overview of Interprocess Communication
|
|
2/9 |
Concurrent Processes with Limited Interprocess Communication:
Signals
|
8.4, 8.5
|
2/14 |
Exam 1
|
|
2/16-2/21 |
Concurrent Processes with Byte Stream Data Transfer:
Pipes and FIFOs
|
|
2/23-2/28 |
Synchronization of Processes with Semaphores
and
Semaphores for Coordination Problems
|
|
Part III: Concurrent Programming with Threads
|
3/2 |
Thread Basics
|
12.3
|
3/14 |
University Closed due to Inclement Weather
|
|
3/16 |
Shared Variables
|
12.4
|
3/21 |
Coordination:
Ensuring Mutual Exclusion
and
Notification of State Changes
|
12.5
|
3/23-3/28 |
Reentrancy
,
Thread-Specific Data
,
Thread-Local Storage
,
Thread-Safety
and
Comparing Multi-Threading and Multi-Processes
|
12.7
|
3/30 |
Exam 2
|
|
Part IV: Data Networks
|
4/4 |
Communication
,
A Layered View of Communication Networks
,
Internet Programming Basics
,
An Application Layer Protocol: DNS
and
Using DNS
|
|
4/6-4/13 |
The Transport Layer:
Multiplexing
,
UDP
,
UDP Sockets
,
TCP
and
TCP Sockets
|
11.4
|
4/18-4/20 |
The Network Layer:
Routers
,
IP
,
ICMP
and
Routing
|
11.3
|
4/25 |
The Link Layer:
Ethernet
,
ARP
and
WiFi
|
11.1, 11.2
|
Part V: Parallel Programming
|
4/27 |
Architectures and Communication Models
|
L&K
|
Attendance at lectures is not mandatory but is strongly encouraged.
You are expected to come to class prepared to ask and
answer questions. Hence,
you should complete the readings on a topic before it
is discussed in lecture.
Grading:
Final grades will be based on your performance on:
1
early exam during the semester (20% total)
,
1
later exam during the semester (30% total)
,
1
final exam during the
exam period (30% total)
and
several
programming assignments (20% total).
Programming Assignments: 10
programming assignments will be
assigned during the semester. Note that their due dates are subject
to change.
Make sure you read and understand all of the
policies
related to programming assignments.
Office Hours:
You may meet with Prof. Bernstein during his
scheduled office hours
or you may schedule an appointment with him.