C   M   S   C   4   3   3
Programming Language Technologies and Paradigms, Spring 2020

Instructor

Name Office E-mail Office Hours
(also available by appointment)
Anwar Mamat IRB 2244 anwar at cs TuTh 11:00am-12:00pm

TAs

Name Office E-mail Office Hours
Yucheng Liu AVW 4160 liuyc804@umd.edu

Tu,Th 2:00-3:00pm
F 2:00-4:00

Chandan Panguluri AVW 4160 cpangulu@umd.edu TuTh 11:00am-1:00pm
Hannah Bako AVW 4160 hbako@cs.umd.edu

MTuWTh 11::00-1:00pm

Rimon Melamed AVW 4160melamed.rimon@gmail.com

MW 2:00-4:00pm

Ben Eisner AVW 4160 beisner@terpmail.umd.edu

MW 11:30am-1:30pm

 

Phil Kfare AVW 4160 pkfare@terpmail.umd.edu

MW 9:30-11:30am

 

Office hour visualizer

Information

Location TuTh 3:30-4:45pm ESJ 2204
Midterm March 12, in class
Final  
Textbooks There are no required or recommended texts. See the resources page for useful online links.

Class announcements will be posted via Piazza; please check the course Piazza page daily. You may sign up for the class on Piazza here.

This course covers principles associated with programming concurrent and distributed software.  Specific topics to be covered will come from the following list:  concurrency, threads and processes, synchronization, design considerations (safety, liveness/deadlock, performance, reusability), algorithm parallelization, and distributed system development.  Other topics may be introduced at the discretion of the instructors.

Week/Day Tuesday
Jan 28 Introduction
Jan 30 Introduction to Concurrency
Feb 4 Thread Safety
Feb 6 Synchronization ( JCIP Ch. 2,3)
Feb 11 Deadlock
Feb 13 Sharing Objects ( JCIP Ch. 3)
Feb 18 Composing Objects ( JCIP Ch. 4)
Feb 20 Concurrent Collections
Feb 25 Synchronizers
Feb 27 Task Execution
Mar 3 Thread Pools (JCIP Ch. 6)
Mar 5 Fork Join Pool
Mar 10 Parallelizing Algorithms
Mar 12 Midterm
Mar 30 Streams
Apr 2 Akka Actors
Apr 7 Actors and akka in Java
Apr 9 Akka Cluster
Apr 14 Map Reduce, Hadoop
Apr 16 MPI
Apr 21 OpenMP
Apr 23 Nonblocking Synchronization
Apr 28 Java Memory Model
Apr 30 RMI
May 5 Scheduling
May 7 Final exam review
Project 1Auction Server
Project 2

Ratsie’s Simulation

Project 3

Maze Runner

Project 4

Resource Manager

Project 5

Twitter Analyzer

Syllabus subject to change until the start of the semester
Prerequisites: Prerequisites: CMSC330
Credits: 3 credits

This course covers principles associated with programming concurrent and distributed software.  Specific topics to be covered will come from the following list:  concurrency, threads and processes, synchronization, design considerations (safety, liveness/deadlock, performance, reusability), algorithm parallelization, and distributed system development.  Other topics may be introduced at the discretion of the instructors.

Coursework and Grading

Course work is as follows, together with how it will be weighted for final grades.

  1. Clicker Quizzes                                     5%
  2. Midterm                                              20%
  3. Projects (6)                                         45%
  4. Final exam                                          30%

 

Grades will be assigned based on the following anticipated ranges, which may be expanded based on what happens during the semester.  The lower and upper parts of each range will be reserved for +/- grades.

Range

Grade

90 – 100

A

80 – 89

B

70 – 79

C

60 – 69

D

  0 – 59

F

 

The CS Department’s grades server will be used to record grading information and make it available to you.

Tests

The midterm and final exam will be administered in class. Information gives the dates. Requests to take tests on different days will generally only be granted in the following circumstances: (1) a student has a religious observance falling on the same day that conflicts with the announced test date, or (2) a student is participating in an official University-sponsored activity that conflicts with the announced test date. Any such request must be made at least one week in advance so that alternative arrangements can be made.

In case of incapacitating illness on the day of a test, the student must contact his / her instructor as soon as possible, preferably by e-mail on the same day. In this case, the student must produce, within one week of the original test date, a written note from a health-care professional attesting to the nature and severity of the illness. The note must indicate the dates on which the student was incapacitated and a phone number for follow-up verification. When this documentation is provided, alternative arrangements for the test will be made. If no such documentation is produced within the given time frame, a score of 0 will be given on the test.

Projects

The course has a heavy project focus and will involve a substantial amount of programming. Projects are due on the date and time specified when they are assigned; extensions will only be given at the discretion of the instructor, and only for requests made in advance. In case of extenuating circumstances (illness, family emergency, etc.) please notify the instructor as soon as possible, and be prepared to provide written documentation about the matter.

The CS Department’s submit server will be used to handle project submissions. Please note, however, that in general public tests will not be provided. Students are responsible for conducting their own testing in advance of submitting their projects. Unless explicitly forbidden in a project assignment, however, students may share tests and discuss them with one another.

Important: Completing the programming assignments is an essential part of the course. Therefore, we may fail any student who does not make a good-faith attempt on all course projects, regardless of the student's performance or scores on the other coursework. We will define good-faith attempt as achieving at least 20 percent on the submit server for each project. To obtain these points you may submit solutions past the late deadline.

Projects must be submitted electronically following the instructions given in class. Projects may not be submitted by any other means (e.g., please do not email your projects to us). It is your responsibility to test your program and verify that it works properly before submitting. All projects are due at 11:59pm on the day indicated on the project assignment, according to the submission server's internal clock.

Projects may be submitted up to 24 hours late for a 10% penalty. For example, a project that would earn 90 points for an on-time submission will earn 81 (which is 90 times 0.90) if submitted late. Note that your project score as it appears on the project submission server will not include any late penalties. Any penalties will be incorporated into the final project grade on the grade server. If you submit both on-time & late, your project will receive the maximum of the penalty-adjusted scores.

Project extensions will not be granted due to system problems, network problems, power outages, etc., so do not wait to submit a project until the night it is due. You may submit multiple times up to the deadline, and only your last on-time submission is graded. Similarly, if you submit late, only your last submission before the deadline will be graded. No consideration in grading will be made for errors made in transferring files or submitting the wrong version of your project. Having a working, unsubmitted version will not count; only submitted code will be counted.

Projects will generally require coding in Java, although assignments in other languages, and using other packages, may also be made. The version of Java that will be used is Java 8. It is recommended that students install Java 8 and Eclipse 4.5 (Mars) on their personal machines if they wish to use their own equipment to work on projects. The CS department has tutorials on how to do this, and how to use Eclipse/JUnit/ etc.

Clicker Quizzes

Clicker quizzes will be given in-class during lectures. Effective August 22, 2017, students and faculty at UMD have access to TurningPoint (Clickers) mobile license subscriptions at NO cost. You can purchase a clicker device or use your phone app. Clicker device costs $16 at the University bookstore. You also have to register your device here: https://myelms.umd.edu/courses/1020311

Academic Integrity:

Unless stated otherwise by the instructor, any assignment you turn in for grading must be your own work. In particular, any code you submit as part of a project must have been written by you, and any solutions you prepare for a midterm or final exam must be exclusively of your own devising. Any transgressions of these principles are violations of the campus Code of Academic Integrity and will be handled as such. The webpage of the Student Honor Council contains a detailed explanation of what constitutes academic dishonesty, which includes not only cheating, fabrication, and plagiarism, but also helping other students commit acts of academic dishonesty by allowing them to obtain copies of your work.

Each case of suspected academic dishonesty will be referred to the University's Office of Judicial Programs. If the student is found to be responsible of academic dishonesty, the typical sanction results in a special grade "XF", indicating that the course was failed due to academic dishonesty. More serious instances can result in expulsion from the university. If you have any doubt as to whether a contemplated act of yours might constitute academic dishonesty, please consult one of the course instructors.

Excused Absences:

It is the student's responsibility to inform the instructor during the first two weeks of the semester of any intended absences from exams or class for religious observances. Absences related to official University events must be brought to the instructor’s attention at least one week in advance of the absence. In case of absences due to illness or other extenuating circumstances, the instructor should be notified as soon as possible, and appropriate documentation explaining the circumstances surrounding the absence should be provided. See the university-policy page for more details on this point.

Academic Accommodations:

Pursuant to university policy, any student eligible for and requesting reasonable academic accommodations due to a disability is requested to provide his or her instructor with a letter of accommodation from the Office of Disability Support Services (DSS) within the first two weeks of the semester. Note that arrangements for individual exams must be made with the instructor at least one week in advance.

Java Concurrency in Practice

Eclipse / Java installation | akka | Hadoop®

 

Concurrency games

Rulebook for in-class card games; will be updated throughout the semester