Program Analysis (CSCI-4450/CSCI-6450)

Meetings: SAGE 3713, TF 2-3:50pm

Brief Course Description


The primary topic of the course is theory of program analysis and its applications to many software engineering tasks such as testing, refactoring, debugging, verification, security, information flow and other.


Prerequisite: CSCI 2600 Principles of Software and CSCI 4430 Programming Languages


Learning Outcomes


The goal of this course is to introduce students to program analysis and its many applications to software engineering, particularly in improving software quality and software productivity.


Concretely, students who successfully complete the course should be able to 1) understand and apply well-known program analysis formalisms: (1) dataflow analysis and abstract interpretation, (2) types and type-based analysis, and (3) axiomatic semantics, 2) implement various program analyses in Java and Haskell using tools such as Soot, Checkers and Z3, 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 in Programming Languages, by Benjamin C. Pierce, The MIT Press, 2002.


Homework Assignments


There are about 8-9 homework assignments, which will be written homework, or larger programming assignments broken into parts. Assignments are individual, unless otherwise specified. (At least one assignment will be a team assignment.) Assignments are due on the due date at 2pm. You have 6 late days for the entire semester without penalty with a maximum of 2 late days per assignment. Exceptions to this policy will be allowed only for emergencies sanctioned by your class dean.




There are 8 open-notes in-class quizzes, which can be completed individually or in small groups.




There is one take-home final exam.




Each student will present one technical paper from a reading list.




The final grade will be computed according to the formula:


Quizzes – 20%

Assignments – 40%

Presentation – 10%

Take-home final – 25%

Attendance and participation – 5%


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.


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. We encourage discussion, 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.