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) |
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) |
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:
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).
The course will have the following parts:
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.
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.
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.
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.
The following are my expectations for how we should communicate as a class. Above all, please remember to be respectful and thoughtful.
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.
We will use the Bb discussion board for questions and discussions. Participation in Bb discussions is optional.
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.
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% |
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:
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.
Event | Date |
---|---|
No classes | Oct 4-5 |
Withdrawal deadline | Dec 14 |
Reading day | Dec 14 |
Finals week | Dec 15-21 |
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.
Students with special needs should see me for accommodation.
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.
Please review the student rights concerning education records.
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.
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.↩︎