Syllabus

Program Analysis (CSCI-4450/6450)

Meetings: MTh 12-1:50pm in SAGE 4112
Website: http://www.cs.rpi.edu/~milanova/csci4450

Brief Course Description

 

The course is mostly concerned with the theory of static program analysis and its application in compilers, software engineering and security.

 

Prerequisite: CSCI 4430 Programming Languages

 

Learning Outcomes

 

The goal of this course is to introduce students to program analysis and its many applications in compilers, software engineering and security.

 

Concretely, students who successfully complete the course should be able to 1) understand and apply well-known program analysis formalisms: dataflow analysis, abstract interpretation, types and type-based analysis and axiomatic semantics, 2) implement various program analyses in Java and Haskell using tools such as Soot, Ghidra and Z3, and 3) demonstrate competence across programming paradigms.

 

No Required Textbook

 

Optional Textbooks

 

Papers (usually publicly available online), lecture notes and handouts will be assigned throughout the course.

 

Principles of Program Analysis by Flemming Nielson, Hanne Riis Nielson, and Chris Hankin, Springer, 1999.

 

Compilers: Principles, Techniques and Tools, by Alfred Aho, Monica Lam, Ravi Sethi, and Jeffrey Ullman (the Dragon Book), Addison-Wesley, 2007.

 

Types and Programming Languages, by Benjamin C. Pierce, The MIT Press, 2002.

 

Homework Assignments

 

There are 7 homework assignments, which are either problem sets, programming assignments or writeups. Assignments are individual, unless otherwise specified. Starting that this semester Program Analysis carries the Communication Intensive designation (approval pending) and therefore some assignments demand more intensive writing --- on one occasion you will be asked to reproduce results from a classical paper and analyze your finding in a writeup.

 

Assignments are due on the due date at Noon. You have 10 late days for the entire semester without penalty with a maximum of 5 late days per assignment.

 

Quizzes

 

There are 6-8 open-notes in-class quizzes, which can be completed individually or in small groups. We will drop the lowest quiz from the final grade.

 

Exam

 

There is one take-home final exam.

 

Presentation

 

Each student will give an approximately 20-minute presentation of a technical paper from a reading list and submit a critique of that paper.

 

Grading

 

The final grade for the CSCI-4550 section will be computed according to the formula:

 

Quizzes - 20%

Homework assignments - 35%

Presentation and critique - 12%

Take-home final - 25%

Attendance and participation - 8%

 

Letter grade assignment (grade modifiers are subject to adjustments):

 

[92 - 100]: A

[90 - 92): A-

[88 - 90): B+

[82 - 88): B

[80 - 82): B-

[78 - 80): C+

[72 - 78): C

[70 - 72): C-

[60 - 70): D

[0 - 60): F.

 

Graduate Students

 

The final grade for the CSCI-6450 section will be computed according to the slightly different formula:

 

Quizzes - 15%

Homework assignments - 38%

Presentation and critique - 12%

Take-home final - 27%

Attendance and participation - 8%

 

Some homework assignments and the take-home final will contain additional problems. In addition, graduate students registered for CSCI-6450 will be held to a higher standard, notably, an average of [94-100) will earn an A, an average of [92-94) will earn an A-, and an average of [90-92) will earn a B+. Other averages will be assigned letter grades according to the table above.

 

Academic Integrity

 

From The Rensselaer Handbook of Student Rights and Responsibilities (2012-2016): Intellectual integrity and credibility are the foundation of all academic work. A violation of Academic Integrity policy is, by definition, considered a flagrant offense to the educational process. It is taken seriously by students, faculty, and Rensselaer and will be addressed in an effective manner. If found responsible for committing academic dishonesty, a student may be subject to one or both types of penalties: an academic (grade) penalty administered by the professor and/or disciplinary action through the Rensselaer judicial process described in this handbook.

 

Assignments must be completed individually, unless otherwise stated. Discussion with the instructor, TA and other students in the class is encouraged, however, carrying out material (e.g., photos, writing) from a discussion is not allowed. The actual work must be your own. Submitty has advanced plagiarism detection capabilities, which we will use on every homework assignment. Excessive similarities between different submissions will result in grade penalties for all students involved, and a referral to the Dean of Students.

 

Exams are to be completed individually, using only materials allowed by the instructor. Excessive similarities between exams will result in grades of 0 for all students involved and a referral to the Dean of Students.

 

Posting your work on public websites such as Github is in violation of the course policy as well.