Attribution-NonCommercial-ShareAlike 4.0 International

Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International license.


CSCI 49380/79526: Fundamentals of Reactive Programming Seminar

3 hrs, 3 credits. Department of Computer Science, Hunter College, City University of New York.


Field Value
Instructor: Raffi Khatchadourian
Office: 1090H Hunter North Building
Phone: (212) 650-3988
Virtual office hours: TF 3:00-4:00 pm or by appointment
Semester: Fall 2020
Section: CSCI 49380/79526-01
Grader: Yiming Tang

Course Description

This is a seminar course on the fundamentals of reactive programming. Reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. With this paradigm, it is possible to express static (e.g., arrays) or dynamic (e.g., event emitters) data streams with ease. Also, you may communicate that an inferred dependency within the associated execution model exists, which facilitates the automatic propagation of the changed data flow.^wikipedia

In essence, reactive programming is a development model structured around asynchronous data streams. In this course, we will dive into the fundamentals of reactive programming. The first part will be a hands-on, practical introduction to reactive programming, including its features, common usages, advantages, and drawbacks. In the second part, since this is a seminar-style class, we will explore research topics surrounding reactive programming, including how to improve it, adopt it in existing systems, and other open problems.

Outline and Schedule of Course Topics

Possible course topics are as follows:

  • Functional programming overview/recap.
  • Asynchronous programming.
  • The actor programming model.
  • Eventual consistency.
  • Stream processing.
  • Failure handling and processing rate.
  • Current research on reactive programming.
  • Open problems involving reactive programming.

Learning Targets

The learning targets include techniques for designing and implementing scalable, resilient, responsive, and highly-concurrent systems correctly and efficiently using high-level abstractions. This course aims to teach students how to:

  • Effectively build asynchronous computations.
  • Develop concurrent systems using Actors.
  • Understand the characteristics that make systems resilient to failures yet scalable.
  • Deal with infinite and finite data streams.
  • Understand how back-pressure can affect data and control flow.

By also understanding the research surrounding this area, we also hope to begin a research project to improve the state-of-the-art of reactive programming that involves the entire class.


  • CSCI 33500: Software Analysis and Design III or equivalent.

Students are highly advised to be well-versed with at least one high-level, Object-Oriented programming language. Although prior knowledge of functional programming is helpful, it will be reviewed early in the course.

Textbooks and Materials

Title Author ISBN Type
Scala for the Impatient Horstmann 978-0134540566 Required
Scala reactive programming: build scalable, functional reactive microservices with Akka, Play, and Lagom Posa 978-1787288645 Recommended


Category Percentage
Assignments 25%
Project 50%
Presentation 20%
Participation 5%

Key Dates

Event Date
Withdrawal Deadline Dec 13
Final Exam Slot Dec 15 5:45-7:45 pm



In the first part of the course, I will lecture on fundamental topics of reactive programming with the goals of establishing background for the homework and projects. No previous knowledge of reactive or functional programming is expected.


There will be several homework assignments targeting technical problems related to the material discussed in class. The goal of these assignments is to strengthen the students’ technical skills and insights. Each will be assigned in Blackboard along with submission instructions. Written assignments will be uploaded to Blackboard, and programming assignments—if assigned—will be uploaded to GitHub classroom and submitted via gradescope. The exact instructions will follow. Programming assignments must include command-line instructions on how to run the program if applicable.


There may be multiple projects, either individual or class-wide, depending on the outcome of the class. If no class-wide project emerges from the class discussion and talks, then students may choose an individual project from a list provided by the instructor. For more advanced students, a customized project related to their ongoing research may be chosen with instructor approval and consultation.


In the second part of the course, students will be required to briefly present a research paper on reactive programming. I will provide a list of papers from which students may choose. Students may lobby the instructor if there is an unlisted paper of the students' interest.


  • Deadlines and due dates for assignments will be assigned in class.
  • Late assignments will be penalized.
  • No extensions will be given for extra credit assignments.
  • Assignments are the result of individual effort unless otherwise noted (e.g., group projects).


Attendance is expected for each and every class meeting. Each student is allowed five (5) absences for any reason except on days when there are presentations or exams. Absences exceeding the allowance or absence on a presentation day for any reason results in a 0.2% deduction from the attendance grade.

Academic Violations

Hunter College regards acts of academic dishonesty (e.g., plagiarism, cheating on examinations, obtaining unfair advantage, and falsification of records and official documents) as serious offenses against the values of intellectual honesty. The college is committed to enforcing the CUNY Policy on Academic Integrity and will pursue cases of academic dishonesty according to the Hunter College Academic Integrity Procedures. Special attention is given to CONTRACT CHEATING (this is where students have work completed on their behalf which is then submitted for academic credit).


Emails to the instructor must be via a CUNY Hunter College email addresses for FERPA reasons. Also, include the class name or number in the subject line of the email. Please post all class-related discussion on the Bb discussion board. Also, please ensure that your correct email address is entered into the CUNY Blackboard.

Bulletin Board

You should check the Blackboard (Bb) site regularly, since all class material will be posted there. Please make sure you have configured Bb to use your CUNY Hunter College email address. You are responsible for any email the instructors might send there.

Computer Science Facilities & Labs

All computer science students can use any of the general-purpose labs throughout Hunter College. In addition, computer science majors and students enrolled in CSCI courses can an obtain an account on the Computer Science Department Network. More information can be found on the Computer Science Department's website.

Counseling & Wellness Services

Counseling & Wellness Services (CWS) provides mental health, health and wellness services aimed at enhancing students' quality of life and maximizing personal and academic growth and development. More information can be found on the Counseling & Wellness Services website.

Special Needs

Students with special needs should see me for accommodation.

ADA Compliance

In compliance with the American Disability Act of 1990 (ADA) and with Section 504 of the Rehabilitation Act of 1973, Hunter College is committed to ensuring educational parity and accommodations for all students with documented disabilities and / or medical conditions. It is recommended that all students with documented disabilities (Emotional, Medical, Physical and / or Learning) consult the Office of Accessibility located in Room E1124 to secure necessary academic accommodations. For further information and assistance please call (212-772-4857)/TTY (212-650-3230).

Family Educational Rights and Privacy Act (FERPA)

The Family Educational Rights and Privacy Act (FERPA) (20 U.S.C. § 1232g; 34 CFR Part 99) is a Federal law that protects the privacy of student education records. The law applies to all schools that receive funds under an applicable program of the U.S. Department of Education.

FERPA gives parents certain rights with respect to their children's education records. These rights transfer to the student when he or she reaches the age of 18 or attends a school beyond the high school level. Students to whom the rights have transferred are "eligible students."

  • Parents or eligible students have the right to inspect and review the student's education records maintained by the school. Schools are not required to provide copies of records unless, for reasons such as great distance, it is impossible for parents or eligible students to review the records. Schools may charge a fee for copies.
  • Parents or eligible students have the right to request that a school correct records which they believe to be inaccurate or misleading. If the school decides not to amend the record, the parent or eligible student then has the right to a formal hearing. After the hearing, if the school still decides not to amend the record, the parent or eligible student has the right to place a statement with the record setting forth his or her view about the contested information.
  • Generally, schools must have written permission from the parent or eligible student in order to release any information from a student's education record. However, FERPA allows schools to disclose those records, without consent, to the following parties or under the following conditions (34 CFR § 99.31):
    • School officials with legitimate educational interest;
    • Other schools to which a student is transferring;
    • Specified officials for audit or evaluation purposes;
    • Appropriate parties in connection with financial aid to a student;
    • Organizations conducting certain studies for or on behalf of the school;
    • Accrediting organizations;
    • To comply with a judicial order or lawfully issued subpoena;
    • Appropriate officials in cases of health and safety emergencies; and
    • State and local authorities, within a juvenile justice system, pursuant to specific State law.

Schools may disclose, without consent, "directory" information such as a student's name, address, telephone number, date and place of birth, honors and awards, and dates of attendance. However, schools must tell parents and eligible students about directory information and allow parents and eligible students a reasonable amount of time to request that the school not disclose directory information about them. Schools must notify parents and eligible students annually of their rights under FERPA. The actual means of notification (special letter, inclusion in a PTA bulletin, student handbook, or newspaper article) is left to the discretion of each school.

For additional information, you may call 1-800-USA-LEARN (1-800-872-5327) (voice). Individuals who use TDD may use the Federal Relay Service.

Or you may contact us at the following address:

Family Policy Compliance Office U.S. Department of Education 400 Maryland Avenue, SW Washington, D.C. 20202-8520

Sexual Misconduct

In compliance with the CUNY Policy on Sexual Misconduct, Hunter College reaffirms the prohibition of any sexual misconduct, which includes sexual violence, sexual harassment, and gender-based harassment retaliation against students, employees, or visitors, as well as certain intimate relationships. Students who have experienced any form of sexual violence on or off campus (including CUNY-sponsored trips and events) are entitled to the rights outlined in the Bill of Rights for Hunter College.

a. Sexual Violence: Students are strongly encouraged to immediately report the incident by calling 911, contacting NYPD Special Victims Division Hotline (646-610-7272) or their local police precinct, or contacting the College's Public Safety Office (212-772-4444).

b. All Other Forms of Sexual Misconduct: Students are also encouraged to contact the College's Title IX Campus Coordinator, Dean John Rose ( or 212-650-3262) or Colleen Barry ( or 212-772-4534) and seek complimentary services through the Counseling and Wellness Services Office, Hunter East 1123. CUNY Policy on Sexual Misconduct Link:

Instructor Biography

Raffi Khatchadourian is an Assistant Professor in the Computer Science Department at Hunter College and the Graduate Center of the City University of New York (CUNY). He received his MS and PhD degrees in Computer Science from Ohio State University and BS degree in Computer Science from Monmouth University in New Jersey. Prior to joining CUNY, he was a Software Engineer at Apple, Inc. in Cupertino, California, where he worked on Digital Rights Management (DRM) for iTunes, iBooks, and the App store. He also developed distributed software that tested various features of iPhones, iPads, and iPods. His research focus is techniques for automated software evolution, particularly those related to automated refactoring and source code recommendation systems with the goal of easing the burden associated with correctly and efficiently evolving large and complex software.


Portions of this syllabus are based on those of Atanas Rountev's and Neelam Soundarajan's seminar courses at Ohio State University, as well as the edX Programming Reactive Systems course.

Fork me on GitHub