Spring 2017 (Section 3, 16527) - 3 credit hours
JMU CS361 - Computer Systems II
Help Policies Solutions Study-Aids Tools
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.
Programming Assignment 1 ; Due: 1/19 (Warming Up)
Programming Assignment 2 ; Due: 1/24 (Statemachine Diagrams)
Programming Assignment 3 ; Due: 1/31 (Implementing State Models)
Programming Assignment 4 ; Due: 2/9 (Mutiple Processes)
Programming Assignment 5 ; Due: 2/21 (Signals)
Programming Assignment 6 ; Due: 3/2(Extended to 3/15) (Pipes and Semaphores)
Programming Assignment 7 ; Due: 3/21 (Multiple Threads)
Programming Assignment 8 ; Due: 3/28 (Thread Coordination)
Programming Assignment 9 ; Due: 4/18 (UDP)
Programming Assignment 10 ; Due: 4/27 (TCP)

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.

Copyright 2019