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.