Term and Credits
Fall 2022-2023
3 Credits
Room and Time
Section 001 - TR 2:00PM-3:20PM Prof. Boady [3675 Market Street Room 1053]
Section 002 - MW 3:00PM-4:20PM Prof. Boady [3675 Market Street Room 1053]
Instructor
Mark Boady
Electronic Mail Address:
mwb33@drexel.edu
Office: 3675 Market Street Room 1063 (near snack machine)
Extention: 215-895-2347
Office Hours:
Monday and Wednesday 4:30-5:30PM
Teaching Assistant(s)
Giang Doan
Electronic Mail Address:
gdd33@drexel.edu
Office:
CLC 3675 Market Room 1066
Office Hours:
Thursday 6:00-8:00PM, Friday 4:00-6:00PM
Adeeb Abbas
Electronic Mail Address: aa4239@drexel.edu
Office: Online (Discord/Zoom)
Office Hours: Wednesday 6:00-8:00PM, Friday 4:00-6:00PM
Course Description
Covers programming of concurrent, cooperating sequential processes. Studies race conditions, critical sections, mutual exclusion, process synchronization, semaphores, monitors, message passing, the rendezvous, deadlock, and starvation.
Course Objective and Goals
Topics
Audience and Purpose within Plan of Study
Students who take this course will learn how to develop good quality multi-threaded and parallel software. There are many application areas (mobile, gaming, operating systems) where knowledge of how to properly use concurrency is essential. However, the thorniness of figuring out what a concurrent program is allowing and disallowing undesirable execution paths means learning more than how to invoke a few new control statements or code libraries. This is an area where a programmer's ability to explain "why it works" is important as the inventiveness to generate a program that specifies "how it works". In order to write code that works, students of concurrent programming need learn and master new ways of understanding the behavior of programs. This requires some rigor, reliance on abstraction, and attention to detail and form. We try to make this accessible and as non-scary as we can, but there’s no avoiding the learning effort. If you don't have a minimum of five hours outside of class every week to work on this course, our experience with your predecessors indicates that you'll have a hard time getting past the minimum requirements. "Work hard just before the assignments are due" isn't usually sufficient.
Prerequisites
This subject benefits from the abilities to creatively use the software development and mathematical tools that students know as advanced undergraduates: CS260 (minimum Grade D), CS281 (minimum Grade D) or CS283, or equivalents, CS 270 (logic and proof from Mathematical Foundations of Computer Science).
What Students Should Know Prior to this Course
What Students will be able to do upon Successfully Completing this Course
Textbook
C++ Concurrency in Action (Second Edition)
Author: Anthony Williams
Published: February 10, 2019
ISBN-10: 1617294691
ISBN-13: 978-1617294693
Buy from Amazon
Grading and Policies
Final grades will be determined by your total points weighted according to this distribution. Grades may be curved but are generally computed via the formula below. It may be modified at the instructor's sole discretion, but letter grades will generally not be lower than those shown here.
Late Policy
Academic Honesty Policy
The CCI Academic Honesty policy is in effect for this course. Please see the policy at http://drexel.edu/cci/resources/current-students/undergraduate/policies/cs-academic-integrity/.
Academic Honesty Violations will be reported to the University. Punishment will be determined by the severity of the incident. Punishments include, but are not limited to,
Reflection Essay
Each week you will need to write a short reflection on the topics you learned the previous week.
Homework Assignments
There will be one homework assignment per week. It will normally contain multiple components. Some programming and some written.
Assessments
There will be two self assessments. You will answer a series of essay questions about content in the class so far. You will propose a letter grade for your progress and skill on the material.
Extra Credit
Discord Channel
University Policies
In addition to the course policies listed on this syllabus, course assignments or course website, the following University policies are in effect:
CCI’s Commitment to Diversity, Equity, and Inclusion (DEI)
The College of Computing & Informatics commits to creating a positive and safe learning environment for everyone – instructors, professional staff, and students – both inside and outside of the classroom. We embrace the diversity of thoughts, perspectives, and experiences that each community member brings, and we honor everyone’s identity (including, but not limited to, race, ethnicity, age, gender, socioeconomic status, sexuality, religion, veteran status, and disability). We encourage each community member to share information regarding pronouns, religious and cultural holidays, accommodations, and any other information that will assist instructors in fostering a supportive and inclusive community environment. For more information about CCI’s commitment to DEI, visit Diversity, Equity & Inclusion Council | Drexel CCI.
Appropriate Use of Course Materials
It is important to recognize that some or all of the course materials provided to you are the intellectual property of Drexel University, the course instructor, or others. Use of this intellectual property is governed by Drexel University policies, including the IT-1 policy found at: https://drexel.edu/it/about/policies/policies/01-Acceptable-Use/ Briefly, this policy states that all course materials including recordings provided by the given prior written approval by the University. Doing so may be considered a breach of this policy and will be investigated and addressed as possible academic dishonesty, among other potential violations. Improper use of such materials may also constitute a violation of the University's Code of Conduct found at: https://drexel.edu/cpo/policies/cpo-1/ and will be investigated as such.
Recording of Class Activities:
In general, students and others should not record course interactions and course activities in lecture, lab, studio or recitation.
Students who have an approved accommodation from the Office of Disability Resources to record online lectures and discussions for note taking purposes should inform their course instructor(s) of their approved accommodation in advance. The recording of lectures and discussions may only be carried out by the students enrolled in the class who have an approved accommodation from Disability Resources with their instructors' prior knowledge and consent. Students with approved accommodations may be asked to turn off their recorder if confidential or personal information is presented.
If a student has any comments, concerns, or questions about provided class materials and/ or recording, talk to your course instructor first. If this does not resolve the issue, you can also reach out to the Department Head, and use the process described for a grade appeal to move your concern forward. The process described for grade appeals can be found at:
https://drexel.edu/provost/policies/grade-appeals/
Tentative Course Schedule
Please see the appropriate assignment webpages for a detailed description of course deliverables.
Week | Topic | Assignments | |
1 (September 19, 2022) |
Lecture 01 - Concurrency Theory Part 1 Lecture 02 - Concurrency Theory Part 2 |
Reflection 1 - Due Wednesday 9/21 at 11:59PM |
|
2 (September 26, 2022) |
Lecture 03 - CPP Introduction Lecture 04 - CPP Thread Basics |
Reflection 2 - Due Wednesday 9/28 at 11:59PM Assignment 1 - Due Friday 9/30 at 11:59PM |
|
3 (October 3, 2022) |
Lecture 05 - Case Study: Mandelbrot Set Lecture 06 - Objects in CPP |
Reflection 3 - Due Wednesday 10/5 at 11:59PM Assignment 2 - Due Friday 10/7 at 11:59PM |
|
4 (October 10, 2022) No Class Oct 10 |
Lecture 07 - Locks and Condition Variables Lecture 08 - Semaphores |
Reflection 4 - Due Wednesday 10/12 at 11:59PM Assignment 3 - Due Friday 10/14 at 11:59PM |
|
5 (October 17, 2022) |
Lecture 09 - Producer-Consumer Problem Lecture 10 - Reader-Writer Problem |
Reflection 5 - Due Wednesday 10/19 at 11:59PM Assignment 4 - Due Friday 10/21 at 11:59PM |
|
6 (October 24, 2022) |
Lecture 11 - Quicksort + No Starve Mutex Lecture XX - No Class Complete Take Home Midterm |
Reflection 6 - Due Wednesday 10/26 at 11:59PM Midterm Assessment - Due Friday 10/28 at 11:59PM |
|
7 (October 31, 2022) |
Lecture 12 - Async Lecture 13 - Dinning Philosophers |
Reflection 7 - Due Wednesday 11/2 at 11:59PM Assignment 5 - Due Friday 11/4 at 11:59PM |
|
8 (November 7, 2022) |
Lecture 14 - Concurrent Queues Lecture 15 - Channels |
Reflection 8 - Due Wednesday 11/9 at 11:59PM Assignment 6 - Due Friday 11/11 at 11:59PM |
|
9 (November 14, 2022) |
Lecture 16: Thread Pools Lecture 17: Threaded Web Server |
Reflection 9 - Due Wednesday 11/16 at 11:59PM Assignment 7 - Due Friday 11/18 at 11:59PM |
|
10 (November 21, 2022) [Thanksgiving Week] |
No Lectures - Campus Closes 10pm Tuesday Nov 22 | ||
11 (November 28, 2022) |
Lecture 18: Map-Reduce Lecture 19: C++ Atomics |
Reflection 10 - Due Wednesday 11/30 at 11:59PM Assignment 8 - Due Friday 12/2 at 11:59PM |
|
12 (December 5, 2022) |
Final Assessment - Due Wednesday 12/7 at 11:59PM Extra Credit Survey - Due Wednesday 12/7 at 11:59PM |