This Web page is still under construction! [Under construction!]

CONCURRENT PROGRAMMING SYLLABUS

Course

CS 04.391 Concurrent Programming, Spring 2010

CS 07.595 Advanced Topics in Computer Science: Concurrent Programming

Instructor

Stephen J. Hartley, office 3rd floor Robinson, phone 856-256-4500 ext. 3895
E-mail: hartley@elvis.rowan.edu
Home page: http://elvis.rowan.edu/~hartley/index.html
AOL Instant Messenger: PrfHartley

Meeting Time and Place

CS 04.391, Concurrent Programming; CS 07.595 Advanced Topics in Computer Science: Concurrent Programming

Office Hours

During the spring 2010 semester, my formal office hours are

If I have to go to a meeting during formal office hours, I will try, perhaps not always successfully, to remember to put a note on my office door.

If you need to make an appointment, or if you have a question, you can reach me by telephone at extension 3895 and by electronic mail at hartley@elvis.rowan.edu. My AOL Instant Messenger name is PrfHartley and you are welcome to try contacting me that way with questions instead of through e-mail or telephone. If you cannot connect, send e-mail to hartley@elvis.rowan.edu to remind me to start the AIM program (I use Linux pidgin or an equivalent).

I will be on campus, either in my office or at meetings, many Wednesdays and Fridays, but the times are variable and unpredictable. If you want to meet on a Wednesday or Friday, try to set up an appointment in advance.

Textbooks and Other Materials

Required Book

Andrew S. Tanenbaum, Modern Operating Systems, 3rd edition, Pearson Prentice Hall, 2008, ISBN 0-13-600663-9.

Required USB Drives

Two (2) or more flash (jump, keychain, thumb, USB) drives at least 256 megabytes in size each. You will be turning in projects on one of your USB drives. The other one is for keeping a backup copy of whatever you turn in. Write your name on a label and glue it to the outside of each of your flash drives.

Advanced Topics in Computer Science: Concurrent Programming

In addition to the above: Brian Goetz with Time Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, and Doug Lea, Java Concurrency in Practice, Addison-Wesley Professional, 2006, ISBN 0-321-34960-1.

Online Resources

Class Web pages start here:
http://elvis.rowan.edu/~hartley/Courses/ConcurrentProgramming/2010/Spring/index.html

Class Announcements Web page:
http://elvis.rowan.edu/~hartley/Courses/ConcurrentProgramming/2010/Spring/announcements.html

You need to check this page regularly! Announcements, corrections to assignments, adjustments to the syllabus, etc., will be made there.

Prerequisites:

CS 04.390 Operating Systems or equivalent.

General Course Description

From the Rowan Undergraduate Catalog: (CS 04.391, 3 s.h.) Introduces the motivation for and fundamental concepts of concurrent programming. Topics include processes, threads, context switching, atomic instructions/actions, shared data, race conditions, critical sections, mutual exclusion, synchronization, locks, barriers, semaphores, monitors, shared-memory multiprocessors, and an overview of distributed programming (distributed-memory multicomputers, interprocess communication, message passing, remote procedure call, rendezvous). The course includes developing concurrent programming skills by using a language that supports the multithreaded paradigm.

CS 07.595 Advanced Topics in Computer Science: Concurrent Programming is a graduate-level version of CS 04.391 Concurrent Programming. There will be more programming assignments, harder exams, and additional readings.

From Wikipedia, the free encyclopedia:

Concurrent computing is a form of computing in which programs are designed as collections of interacting computational processes that may be executed in parallel. Concurrent programs can be executed sequentially on a single processor by interleaving the execution steps of each computational process, or executed in parallel by assigning each computational process to one of a set of processors that may be close or distributed across a network. The main challenges in designing concurrent programs are ensuring the correct sequencing of the interactions or communications between different computational processes, and coordinating access to resources that are shared among processes. A number of different methods can be used to implement concurrent programs, such as implementing each computational process as an operating system process, or implementing the computational processes as a set of threads within a single operating system process.

Pioneers in the field of concurrent computing include Edsger Dijkstra, Per Brinch Hansen, and C.A.R. Hoare.

Operating systems material dealing with concurrent programming and synchronization: processes, threads, context switching, atomic instruction/action, shared data, race conditions, critical section, mutual exclusion, semaphores, process (thread) synchronization, monitors, interprocess communication, message passing, rendezvous.

The Java programming language: multiple threads, semaphores, monitors, message passing, rendezvous java.util.concurrent package. Java works on shared memory multiprocessors such as dual cores, uniprocessors, and multiple workstations on a LAN.

Goals and Objectives

The goal of this course is to acquaint you with the general principles of concurrent programming and the concepts and algorithms behind the management of cooperating sequential processes (threads). This material is a major topic in operating systems. Another goal is to give you concurrent programming experience using a language, such as Java, that supports semaphores, monitors, message passing, and the rendezvous.

By reading the textbook, participating in class, doing projects outside of class, and presenting projects in class, you will gain familiarity with the fundamental principles, techniques, terminology, and algorithms of concurrent programming.

Your progress in attaining these goals will be measured by five in-class closed-book exams, a comprehensive final exam, several projects done outside of class and presented in class, one office visit, and a written ``last'' assignment (URL below).

Office Visit

The office visit occurs in my office on the 3rd floor of Robinson building. It lasts 5--15 minutes and is not painful. Schedule an appointment if formal office hours are not convenient.

You must also fill out and hand in the questionnaire (found in the class Web pages) at the time of your office visit.

You may answer the questions on a separate sheet of paper and turn that in at the time of your visit, or you may print out the questionnaire and answer the questions on it, using the back if needed.

Your office visit will earn you points according to the following timetable.

Evaluation and Grading

The course grade will be determined as follows:

    Item     Percentage of final letter grade
    Office visit 5
    Five in-class closed-book exams 60
    Several programming projects 10
    Written ``last assignment'' 10
    Comprehensive final exam 15

CS 04.391: Your lowest exam score, such as a zero for one you miss, will be dropped, leaving four of five exam scores used to compute your semester average in addition to the other items listed above (final exam, last assignment, office visit). No makeup exams will be given!

CS 07.595: All exam scores will be counted because graduate students have no life outside of school and spend all their time on campus in their offices.

Final letter grades for the semester will be based on the usual 10-point scale where avg is your semester average calculated using the above scheme.

93 1/3 ≤ avg < 100 A
90 ≤ avg < 93 1/3 A-
86 2/3 ≤ avg < 90 B+
83 1/3 ≤ avg < 86 2/3 B
80 ≤ avg < 83 1/3 B-
76 2/3 ≤ avg < 80 C+
73 1/3 ≤ avg < 76 2/3 C
70 ≤ avg < 73 1/3 C-
66 2/3 ≤ avg < 70 D+
63 1/3 ≤ avg < 66 2/3 D
60 ≤ avg < 63 1/3 D-
avg < 60 F

An ``incomplete'' grade will be assigned only under extremely unusual exceptional circumstances, as determined by departmental policy and the instructor.

The Computer Science Department does not allow any of its courses to be taken Pass/No Credit.

CS 07.595: Page 28 of the graduate student handbook says, ``Note: In graduate work, grades lower than "C+" may not be used to fulfill degree or graduation requirements.''

Page 30 says, ``To be eligible for graduation, the student shall have completed at least 90 percent of the total course work within the "A--C+" letter grade range. A cumulative grade point average of 3.000 must be maintained for graduate work involved in the program course requirements. To maintain satisfactory academic progress, students may earn no more than six (6.0) semester hours in courses with grades of "C+" or below. Grades of "C-" and below do not meet the requirements for graduate credit and will not be applied to the credits necessary in graduate degree programs.''

Last Assignment

See http://elvis.rowan.edu/~hartley/Courses/lastHW.html for more information on the written ``last'' assignment.

Attendance

Regular attendance in class is required. For more information, see the following Rowan document (URL valid as of January 6, 2010):
http://www.rowan.edu/open/provost/policies/documents/AttendancePolicy-FacultyandStudentsResponsibilities-webrevS2009.pdf

Please inform the instructor in advance, preferably by e-mail, if you must be absent from a class.

Attendance has both a physical component and a mental component. One is not good without the other. Because of the participatory and discussion nature of this class, you are allowed 6.0 (six point zero) absences during the semester, either excused or unexcused. The allowance for CS 07.595 is 4.0 (four point zero). More than that for whatever reason, either excused or unexcused, will result in no credit for the class, that is, a final letter grade of F, W, or WF.

If you miss an exam, you will be charged one day of attendance in addition to getting a zero on the exam.

If you arrive late to class, you will be charged a half day of attendance. If I determine that you are unprepared for class discussion, you will be charged a half day of attendance. If you leave class early without informing me before class starts, you will be charged a half day of attendance.

If you are scheduled to present a project in class and you are not sufficiently prepared as determined by me, you will be charged a full day of attendance.

All in-class exams and the comprehensive final exam must be attended to earn any points. No makeup exams will be given!

Projects, Exams, and Final Exam

Projects are done outside of class and presented in class. They might be group/team or individual. They are graded pass/fail where ``fail'' means a loss of a full day of attendance as described above. No late projects will be accepted!

You might be asked to turn in a project on a flash (thumb, USB) drive on the specified presentation day, so be prepared for that. No USB drives will be accepted without a readable external label containing your name!

The five in-class exams and the comprehensive final exam are written in nature. Question types will be definition, short answer, and problem solving involving numerical computation. No makeups will be given.

The in-class exams and final exam are graded on the basis of 100 points total each. Because your lowest exam score is dropped, you can miss or totally mess up an exam without trashing your final letter grade for the semester.

Withdrawal From Class

Drop/add ends 11pm, Monday, January 25, 2010. Until then, you can easily drop and add courses (assuming there is room) to adjust your course schedule. A dropped course will not show up on your transcript.

During the first half of the semester (through March 8, 2010), a student may withdraw from a class by filling out the appropriate form and obtaining the instructor's signature. A grade of ``W'' is received on your transcript.

The Department of Computer Science policy on withdrawing after that date is that it will be approved only in extenuating circumstances beyond the control of the student, such as serious illness. In addition, after March 8, 2010, the department chair must also sign the withdrawal form. A grade of ``WP'' or ``WF,'' as determined by the instructor, is received on your transcript.

No withdrawal forms will be signed after April 5, 2010, except for extremely unusual exceptional circumstances, as determined by the instructor. In addition, after April 5, 2010, the department chair and dean must also both sign the withdrawal form. A grade of ``WP'' or ``WF'' is received, as determined by the instructor.

Acceptable Use Policies

Rowan has policies about acceptable use of its computers and networks by faculty, staff, and students. By registering for and taking this course, you are agreeing explicitly to abide by them.

Students Accommodation Statement

Your academic success is important. If you have a documented disability that may have an impact upon your work in this class, please contact me. Students must provide documentation of their disability to the Academic Success Center in order to receive official University services and accommodations. The Academic Success Center can be reached at 856-256-4234. The Center is located on the 3rd floor of Savitz Hall. The staff is available to answer questions regarding accommodations or assist you in your pursuit of accommodations. We look forward to working with you to meet your learning goals.

Academic Integrity

For more information, see the following Rowan document (URL valid as of January 6, 2010):
http://www.rowan.edu/open/provost/policies/documents/AcademicIntegrityPolicy_RAIVForm_AIVProcessOverviewFlowChart.pdf

Anything you turn in with your name on it must be your own work, that is, written or programmed by you and not copied from anyone or anywhere else. You must do anything you turn in with your name on it individually. For outside-class projects (that is, not exams), you may consult with other students and the course instructor to clarify points of confusion and share ideas. However, everything you turn in with your name on it must be your own work. Copying from others is expressly forbidden. Allowing others to copy from you is expressly forbidden.

Plagiarism and academic honesty guidelines: Each student does his/her own project or exam. For outside-of-class projects, you may ask other students and/or me about clarifying the project or for ideas about how to approach doing something in the project. You will do all the computer work yourself (including typing and mousing) and not allow another student to copy your work and not yourself turn in work copied from someone else. You will not ``dictate'' mousing and typing to another student nor be ``dictated'' to yourself.

Penalties for violation of this will range from a grade of zero on the assignment to a grade of F for the course, effective immediately, and a letter to the Office of the Dean. By registering in this course, each one of you is explicitly agreeing to abide by and adhere to the above statements on academic integrity.

If you use materials that you've obtained on the Internet, from a book, etc., you must include an appropriate reference. To use such materials without proper attribution is a form of plagiarism.

See page 73 of the Student Information Guide, available at http://www.rowan.edu/studentaffairs/infoguide/, for the University's policies on using Turnitin.com. Other University policies are available on the Provost's Web page http://www.rowan.edu/provost/policies/.

Classroom Decorum

Be on time. If you are late, we will all clap and give you a cheer, ``Glad you finally made it to class!'' You will be charged a half day of attendance.

Do not eat in class. If you do, you will be charged a half day of attendance and you will walk to the trash can to throw your food away. Coffee, tea, and water are okay; any slurping, though, and you will walk to the trash can to throw your drink away.

Do your best to remain in the room during class. If you must leave early, let me know before class starts; otherwise, you will be charged a half day of attendance.

Turn off or put into vibrate mode cell phones, PDAs, and pagers. You will receive a warning the first time your cell phone, PDA, or pager goes off in class or lab. If it happens again, you will be fined $20 (twenty dollars), which will be contributed to the Rowan University Foundation. If it happens yet again, you will be fined $20 and asked to leave for the rest of that class meeting.

Cell phones must be stored away in pockets, purses, or knapsacks; if on the desk, they must be face down. Wherever your cell is, your hands and fingers are not on it, i.e., no texting in class.

Laptops are to be kept closed and off except during designated ``laptop days'' when we will turn the classroom into a concurrent programming laboratory. We might also use part of a class meeting as a laboratory by using laptops for just part of the time.

If I catch you using a laptop for other purposes or if I call on you to answer a question and you are so engrossed in your laptop that you do not answer, you will be charged a half day of attendance.

Course Schedule

This schedule is approximate only and will be filled in as we go along. Please see the announcements page for when each exam is scheduled and each project is due and for what each will cover.

Section 1:

Topic     Week #  Date       Deliverables
Go over syllabus 1 Jan 19
History of concurrency Jan 21
Section 1.3, 2.2, and 2.4.6 review 2 Jan 26
Jan 28
3 Feb 2
Feb 4
Sections 2.3 and 2.5 4 Feb 9
Feb 11
5 Feb 16
Feb 18
6 Feb 23
Feb 25
7 Mar 2
Mar 4 Exam 1
8 Mar 9
Mar 11
Spring Break! Mar 15--19
9 Mar 23
Mar 25 Exam 2
10 Mar 30
Apr 1
11 Apr 6 Exam 3
Apr 8
12 Apr 13
Apr 15 Exam 4
13 Apr 20
Apr 22
14 Apr 27 Exam 5
Apr 29 Last Assignment due
Comprehensive Final Exam: 10:15--12:15, Tuesday, May 4, in Bunce 109


It is very useful to have contact information for some of the other people in the class if you miss a class or can't figure something out.

Take out a piece of paper and write down on it the names, phone numbers, and e-mail addresses of two nearby class members, particularly if you do not know them.

Name ______________________________________ Phone ___________________ E-Mail _______________

Name ______________________________________ Phone ___________________ E-Mail _______________


home page: http://elvis.rowan.edu/~hartley/index.html
e-mail: hartley@elvis.rowan.edu