Subscribe

Archives

Categories

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.

Syllabus

CSc 71010/CSCI 77100: Programming Languages/Software Engineering

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

Details

Field Value
Instructor: Raffi Khatchadourian
Office: 1090H Hunter North Building (695 Park Ave)
Email: rkhatchadourian@gc.cuny.edu, raffi.khatchadourian@hunter.cuny.edu
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

  • Expand students' knowledge more broadly about Programming Languages, Software Engineering, and Software Maintenance and Evolution research, and become familiar with state-of-the-art research under the theme of ML/DL System programming and engineering.
  • Develop critical thinking abilities by being able to assess the quality of published research and pose new research questions.
  • Practice giving scientific presentations.
  • Engage in active learning activities in class, such as research discussions.
  • Practice developing a research project through all its stages: formulating a research problem, posing research questions, gathering related work, designing a solution, evaluating the solution empirically, and writing a research paper.

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.

Homework

  • There will be one or more homework assignments with minor problems related to the material presented in the lectures. Each will be assigned in Blackboard along with submission instructions. The exact instructions will follow.
  • Students should do assignments independently. General, high-level discussion of assignments with other students in the class is allowed, but all actual work should be your own. Written assignments that show excessive similarities will be taken as evidence of cheating and dealt with accordingly. See more details below under "academic integrity."
  • Assignments should be turned in by the beginning of the lecture on the due day. You can submit it 24 hours after the deadline; if you do so, your score will be reduced by 10%. The submission will only be accepted if you submit it up to 24 hours after the deadline.

Project

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.

Prerequisites

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.

Attendance

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.

COVID

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.

  • Writing style: This course's common theme is applying theoretical principles to problems in programming languages. As with all theoretical foundations, your solutions must be precise and detailed: you must work out all the necessary details to solve the problem using the approaches discussed in class. You must write your answers to convince the reader that you understand all these details. Be careful, precise, and thorough.
  • Tone and civility: maintain a supportive learning community where everyone feels safe and where people can disagree amicably and professionally. We will respect each other and practice courtesy at all times. Disrespectful language, including, but not limited to, sexist, racist, homophobic, or anti-ethnic slurs or bigotry, will not be tolerated. I am committed to making the classroom a comfortable space for all of us, and I ask that we all work toward this goal in all of the course's online areas.
  • Citing your sources: When we have academic discussions, please cite your sources to back up what you say. List the title and page numbers for the textbook or other course materials. For online sources, include a link.
  • Backing up your work: Consider composing your academic posts in a word processor, where you can save your work and then copying into Bb.

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.

Email

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:

  • Participate in class discussions and activities.
  • Do the homework assignments.
  • Read the assigned papers and submit one-page critiques before class.
  • Prepare and deliver presentations on selected topics.
  • Complete a term project.

Assessment

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%

[^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.

Notes

  • The instructor will assign 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 result from individual effort unless otherwise noted (e.g., group projects).

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

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.

Credits

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

Fork me on GitHub