Professor: Chris Gill |
e-mail: cdgill@wustl.edu |
office: McKelvey 1039 (office hours outside of class meetings are by appointment) |
http://www.cse.wustl.edu/~cdgill/courses/cse532/
Course Piazza page:
Contents
Reading materials will be assigned for many of the topics. It is to your advantage to go over the readings prior to class time, and to ask questions about anything that may be unclear. Supplemental resources including web materials and additional books that may be helpful will also be suggested.
Tue Aug 31 Course Introduction (slides: in ppt format) (studio exercises) |
Concurrent and Networked Objects (slides: in ppt format) Wrapper Facade Pattern (slides: in ppt format) |
Assigned Reading: [Williams] Chapter 1 |
Thu Sep 2 (studio exercises) |
Thread-Specific Storage Pattern (slides: in ppt format) |
Concurrency and Threads in C++11 Assigned Reading: [Williams] Chapter 2 (optional: [Stroustrup] Chapter 42.1-42.2) (slides: in ppt format) Intro to Generic Programming in C++ (optional: Wikipedia article on generic programming) (slides: in ppt format) |
Tue Sep 7 (studio exercises) Lab 0 Assigned Due 11:59pm Mon Sep 20 | Synchronization Patterns (slides: in ppt format) |
Sharing Data Between Threads in C++11 Assigned Reading: [Williams] Chapter 3 and Appendix A.1 (optional: [Stroustrup] Chapter 42.3) |
Thu Sep 9 (studio exercises) | Event Handling Patterns Asynchronous Completion Token Pattern (slides: in ppt format) Concurrency Patterns Monitor Object Pattern (slides: in ppt format) |
Synchronizing Concurrent Operations in C++11 Assigned Reading: [Williams] Chapter 4 and Appendix A.5 |
Tue Sep 14 (studio exercises) | Active Object Pattern (slides: in ppt format) |
Designing Lock-Based Concurrent Data Structures in C++11 Assigned Reading: [Williams] Chapter 6 |
Thu Sep 16 (studio exercises) |
Memory Model and Operations on Atomic Types in C++11 Assigned Reading: [Williams] Chapter 5 (slides: in ppt format) |
|
Tue Sep 21 (studio exercises) Lab 1 Assigned Due by 11:59pm Wed Oct 13 |
Designing Lock-Free Concurrent Data Structures in C++11 Assigned Reading: [Williams] Chapter 7 (slides: in ppt format) |
|
Thu Sep 23 (studio exercises) |
Designing Concurrent Code in C++11 Assigned Reading: [Williams] Chapter 8 (slides: in ppt format) |
|
Tue Sep 28 (studio exercises) |
Advanced Thread Management in C++11 Assigned Reading: [Williams] Chapter 9 (slides: in ppt format) |
|
Thu Sep 30 |
(slides: in ppt format) All studios in the course so far are due by 11:59pm Mon Oct 4 |
|
Tue Oct 5 |
10:00am to 11:20am in McKelvey 1020 open book, open notes (hard copy only, no electronics) |
|
Thu Oct 7 (studio exercises) |
Testing and Debugging Multithreaded Applications Assigned Reading: [Williams] Chapter 11 (slides: in ppt format) |
|
Sat Oct 9 through Tue Oct 12 |
Fall Break (no course meetings)
| |
Thu Oct 14 (studio exercises) Lab 2 Assigned Due by 11:59pm Mon Nov 8 |
Half-Sync/Half-Async and Leader/Followers Patterns (slides: in ppt format) Lab 2 Design Discussion (slides: in ppt format) |
|
Tue Oct 19 No additional exercises assigned: after the lecture presentation and discussion, open time to catch up on studios or work on lab 2 | A Concurrency and Synchronization Pattern Language (slides: in ppt format) | |
Thu Oct 21 No additional exercises assigned: after the exam grading review, open time to catch up on studios or work on lab 2 |
Exam 1 Grading Review and Discussion |
|
Tue Oct 26 (studio exercises) | From Concurrent to Networked Software Systems (slides: in ppt format) | |
Thu Oct 28 (studio exercises) | Reactor Pattern (slides: in ppt format) |
Optional Reading: [C++NPv1] Chapter 7 Optional Reading: [C++NPv2] Chapters 3 and 4 Optional Reading: [APG] Chapter 7 |
Tue Nov 2 (studio exercises) |
Acceptor/Connector Pattern (slides: in ppt format) |
Optional Reading: [C++NPv2] Chapter 7 Optional Reading: [APG] Chapter 7.6 Optional Re-reading: [Williams] Chapter 9.2 |
Thu Nov 4 (studio exercises) |
Extension Interface Pattern (slides in ppt format) Interceptor Pattern (slides: in ppt format) |
Optional Reading: [C++NPv2] Chapter 3 Optional Reading: [POSA2, pp. 141-174] |
Tue Nov 9 (studio exercises) Lab 3 Assigned Due by 11:59pm Fri Dec 10 |
Component Configurator Pattern (slides: in ppt format) Lab 3 Design Discussion (slides: in ppt format) |
Optional Reading: [C++NPv2] Chapter 5 Optional Reading: [APG] Chapter 19 |
Thu Nov 11 no additional exercises assigned: open time to catch up on studios or work on lab 3 |
A Service Access and Configuration Pattern Language (slides: in ppt format) |
|
Tue Nov 16 |
(slides: in ppt format) | |
Thu Nov 18 | 10:00am to 11:20am in McKelvey 1020 open book, open notes (hard copy only, no electronics) | |
Tue Nov 23 |
Open time to work on studios or lab 3, office hours in Urbauer 216 during scheduled class time All studios since the first exam are due by 11:59pm Tue Nov 23 (note new deadline) |
|
Wed Nov 24 through Sun Nov 28 |
Thanksgiving Break (no course meetings)
| |
Tue Nov 30 |
Open time to work on lab 3, office hours in Urbauer 216 during scheduled class times |
|
Thu Dec 2 | ||
Tue Dec 7 |
Exam 2 Grading Review and Discussion |
After the exam grading review, open time to work on lab 3, office hours in Urbauer 216 during scheduled class time
|
Thu Dec 9 |
Open time to work on lab 3, office hours in Urbauer 216 during scheduled class time (held by James Orr, Guest Lab Facilitator)
|
Each lab will require a lab report. Report format and length and content requirements will be described in each lab assignment. The actual report will be submitted via e-mail, as well, so it must go into a file.
Labs will be performed in teams of 1, 2 or 3 people (but not more than 3): teams may be different for each lab assignment or may remain the same for all labs. Each team should submit its solution and lab report for each project.
Labs submitted within 24 hours after the posted deadline will be accepted with a 10% penalty up front, and labs submitted between 24 and 48 hours after the posted deadline will be accepted with a 20% penalty up front. Labs submitted after that will not be graded except in the case of extenuating circumstances approved by the professor.
You may discuss your lab projects with other students outside your team only during course meeting times. Discussion of lab projects within a team, is encouraged at any time. Each team must design and implement its own solution, and prepare its own report.
The following labs have been assigned so far in the course:
We'll use the required textbook both for class material and as a reference. Revelant portions of the required text will be assigned throughout the semester: please read each assigned section before the course meeting where it will be discussed.
Optional texts:
The in-semester exams will be roughly proportioned to cover the material in both of the tracks in the course. The best way to study for the exams is to keep up with the readings, studio exercises, and labs during the semester. The first exam will cover the material up to that point in the course, and the second exam will cover the material after the first exam.
The last grading component is an evaluation of your participation in the class, and an evaluation of your application of the tools and techniques discussed in class and used in the studios and labs. This component is separated out to:
Completing and submitting the assigned studio exercises by the specified deadlines will constitute a significant baseline for the participation grade.
Labs | 50 percent Lab 0: 5 percent Lab 1: 10 percent Lab 2: 15 percent Lab 3: 20 percent Exam 1 |
20 percent |
Exam 2 |
20 percent |
Participation |
10 percent |
|
Each studio and lab assigned in this course is expected to be completed collaboratively by up to three people (and not more than that). Student teams may change from assignment to assignment, but the sharing of code between teams without prior permission of the instructor is strictly prohibited, and you must acknowledge and document in detail all contributions that anyone has made to the work.
Exams must be completed individually without assistance from any other person and without reference to materials or devices, except as specifically allowed by the instructor (documentation of what is allowed will be described in class, provided in the corresponding exam review slides, and written on the font page of the exam).
Cheating costs everyone something. Someone who cheats misses out on the intended opportunity to improve through the assigned work, and like anyone helping them cheat is at risk of diminished reputation as well as specific sanctions. Cheating also degrades the value of the degree earned by those who complete their work with integrity. If you have any doubt about whether something is allowed under the academic integrity policy for this course, please ask your instructor first.
Academic integrity is itself worth studying and thinking about as a key component of your education. Please read, familiarize yourself with, and reflect on the McKelvey School of Engineering's and Washington University's undergraduate and graduate policies on academic integrity.