CSc 71010/CSCI 77100: Programming Languages/Software Engineering

3 hrs, 3 credits. Computer Science, City University of New York (CUNY) Graduate Center/Hunter College.


Field Value
Instructor: Raffi Khatchadourian
Office: 1090H Hunter North Building (695 Park Ave)
Phone: (212) 650-3988
Office hours: M (in-person), F (Zoom) 4:00-5:00 pm or by appointment
Semester: Fall 2022
Section: CSc 71010-01 (45557)/CSCI 77100-01 (57381)

Course Description

This course exposes students to seminal topics and recent trends in Programming Languages and Software Engineering. The focus will be on program analysis and software maintenance and evolution. The theme of this course offering will be programming language concepts and software engineering for Machine Learning (ML), including Deep Learning (DL), systems. Such systems have become pervasive in society recently, and their programming and engineering come with unique challenges. Our focus in this course will be to improve the nonfunctional aspects of these systems. Nonfunctional aspects of software may include security, run-time performance,1 and modularity. DL systems mainly work with a lot of data; thus, performance—especially in the training stage—is of the utmost importance. However, programming and engineering such systems are complex, especially for data scientists, who may not be classically trained Software Engineers—as such, having both programmability and performance of DL systems is our goal. Doing so would avert potential errors, misclassifications, faulty predictions, and performance bottlenecks, which otherwise cost time, energy, and money.

In this course, we will be investigating the following:

  1. Innovative future automated software development techniques (program analysis, software engineering, and human-computer interaction) of ML/DL software systems.
  2. Technical research thrusts enabling new ways to program and engineer ML/DL systems.

This course will allow students to pursue research-oriented term projects individually or in small teams (2-3 students). Students may choose projects from a list of project ideas provided by the instructor. Alternatively, students may pitch a project to the instructor or class. Projects should involve programming languages and software engineering. Projects exploring the intersection of programming languages, software engineering, software maintenance and evolution, and ML/DL systems are particularly encouraged.

The investigations will be coupled with a firm theoretical foundation in programming languages, program analysis and transformation, integrated development environment (IDE) engineering, and software maintenance and evolution. Other topics may include control-flow analysis, dataflow analysis, SSA form, type inference, pointer and alias analysis, side-effect analysis, and program slicing. Imperative and Object-Oriented programming paradigms—and their application in dynamic languages (like Python)—will be thoroughly considered.

The course materials will include an introduction to basic foundations static (compile-time) program analysis, as well as some related program transformations. Static program analyses are traditionally used in compilers and interpreters for performance optimizations and in software engineering tools for understanding, evolution, debugging, and testing. The material will be helpful for students working in compilers, systems, software engineering, and programming languages or incorporating such areas into their ongoing research in other areas (interdisciplinary research).

Course Objectives

Course Organization

The course will have the following parts:

Lectures by the Instructor

The lectures will establish background for the term project. The instructor will present an overview of essential programming languages and software engineering concepts, including static analyses and related program transformations. The instructor will start from scratch and cover several specific analyses/transformations and the corresponding theoretical foundations. Previous knowledge of program analysis is not assumed.

Presentations by Students

Students will prepare and deliver presentations on selected topics. By doing so, students will practice giving scientific presentations.



Students may implement the project individually or with small teams (2-3 students). Projects should be specific to each student/student team and tailored to their ongoing and future research.

Textbooks and Materials

Selected research papers will be available online.


You should have basic knowledge of an imperative, Object-Oriented programming language, such as Java, C++, or Python. Furthermore, it would help if you had some experience developing medium to large software systems to appreciate the engineering challenges appropriately involved. Speak with me if you are unsure whether you have the necessary background.


As this course is meant to be interactive, attendance is expected for each class meeting. Excused absences include University-related travel (e.g., to attend an academic conference), job interviews, and illness; please notify me beforehand or as soon as possible.

Mode of Delivery

This course is in-person in Graduate Center 3212.


All students, faculty, and staff must comply with and stay current on all university safety and health guidance. Accommodations will be made based on university guidelines.

Discussion and Communication Guidelines

The following are my expectations for how we should communicate as a class. Above all, please remember to be respectful and thoughtful.

Office Hours

Office hours will be held in person (once a week) and via Zoom (once weekly). See Bb for details. Attending office hours is optional, and no appointment is necessary. Please arrange an alternative meeting time if you cannot make it during the scheduled office hours. Appointments during office hours are disallowed.


Please post all class-related discussions on Bb. Emails to the instructor must be via a CUNY email address for FERPA reasons. Also, please ensure that your correct email address is entered into the CUNY Blackboard.

Discussion Board

We will use the Bb discussion board for questions and discussions. Participation in Bb discussions is optional.

Bulletin Board

You should check CUNY Blackboard (Bb) regularly since the instructor will post all class material there. You are responsible for any email the instructors might send there. Please ensure you have configured Bb to use your CUNY email address.

Student Expectations

For this course, you must:


Category Mode Percentage
Assignments Individual 15%
Class participation and discussion Individual 10%
Paper critiques Individual 15%
Paper presentation Individual 20%
Research project Individual or team 40%


Academic Violations

The classroom environment employed will be that of a professional one. While students may discuss course materials and assignments with others, any submitted work in this course must result from individual effort only. Students are strongly advised to read the following resources regarding academic integrity:

Written Assignments

Your written assignments should be your original work. General high-level discussion of assignments with other students in the class is allowed, but all actual work should be your own. Refrain from providing your solutions to other students.


Projects should be done independently, within your group, or alone. General high-level discussion of projects with other students in the class is allowed.

Key Dates

Event Date
No classes Oct 4-5
Withdrawal deadline Dec 14
Reading day Dec 14
Finals week Dec 15-21

Counseling & Wellness Services

The Wellness Center Student Counseling Services offers short-term individual and group counseling and psychotherapy, couples counseling, consultation and referral services, and various programs and workshops relevant to graduate student life. Students can find more information on the Counseling Services website.

Special Needs

Students with special needs should see me for accommodation.

ADA Compliance

The Graduate Center and CUNY’s policy is to provide appropriate accommodations to students with disabilities. Any student with a disability who may need accommodations in this class is advised to speak directly to the manager of Student Disability Services, located in Student Affairs, room 7301, or call 212-817-7400 as early in the semester as possible. All discussions will remain confidential. Students can find more information on the Disabilities Services website.

Family Educational Rights and Privacy Act (FERPA)

Please review the student rights concerning education records.

Sexual Misconduct

Please review the CUNY policy on sexual misconduct.


This syllabus is based on syllabi by Danny Dig, Atanas Rountev, Neelam Soundarajan, Mike Bond, and Subash Shankar.

  1. In this course, when we mention “performance,” we will refer to run-time performance. In AI, the term “performance” is often associated with how well an ML model works in terms of its ability to make predictions and perform classifications. This course will refer to this as model accuracy instead of performance.↩︎