CMSC433 Programming Language Technologies and Paradigms, Spring 2022

Instructor

Name Office E-mail Office Hours
Liyi Li IRIBE 5128 through ELMS email system available by appointment or email

TAs

Name E-mail Office Hours (AVW 4160)
Sean Lin through ELMS email system

See ELMS

Eitan Cohen through ELMS email system

See ELMS

Katherine Kim through ELMS email system

See ELMS

Yujian Zhao through ELMS email system

See ELMS

Mingwei Zhu through ELMS email system

See ELMS

Mark Mohades through ELMS email system

See ELMS

Yvonne Zhou through ELMS email system

See ELMS

Kevin Xu through ELMS email system

See ELMS

Sean Yang through ELMS email system

See ELMS

Office hour visualizer

Information

Location TuTh 12:30-1:45PM, EGR 1202
Midterm March 17 12:30-1:45PM ONLINE
Final ONLINE (TBD)
Textbooks There are no required or recommended texts. See ELMS for more information.

Class announcements will be posted via ELMS; please check the course announcements page daily.

This course covers principles associated with programming concurrent and distributed software.  The background of the course is about concurrency. We learn different methods to interact with concurrent programs. The core of the course is about the programming language and software engineering aspects of programs, including specification understanding and implementation, specification writing and reasoning, specification and program validation and verification. Specific topics to be covered will come from the following list:  machine concurrency models, high-level message passing models, multi-threaded testing and monitoring, program model checking, static analysis including polymorphic type systems and multi-threaded type systems, and program verification including  Hoare Logic and Separation Logic. Other topics may be introduced at the discretion of the instructors.

Assignments will be assigned in ELMS or Gradescope on Tuesday at 12:00 AM and due on Thursdays at 11:59 PM

Schedule1Schedule2
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. Assignments                                     70%
  2. Midterm                                              10%
  3. Final exam                                          20%

 

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.

Assignments & Tests

See ELMS for more information.

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.

We will be using Java and OCaml for coding. Machine problems (coding assignments) will be submitted via Gradescope. Homeworks will be provided as Quizzes on ELMS. Instructors should be reached by Piazza or email. Course materials and resources will be present on ELMS. Resources are on ELMS.