Syllabus

The goal of this course is to introduce you to the field of binary program analysis. This is the art and practice of understanding the undocumented, internal principles of software that does not have source code available. We will be studying how program analysis techniques can be used to tell us things about how a program will behave, find vulnerabilities, and understand internal implementation details–all without access to source and with minimal human intervention.

As a secondary goal, this course aims to give you robust skills in both reading and writing academic research papers. To that end, we will be reading ~3 papers per week (though sometimes we will read a book chapter instead) and writing regularly. At the end of the semester, you will propose, research, and write a scientific paper related to some aspect of program analysis, reverse engineering, or software testing.

Note that this is primarily structured as a graduate research course. I realize that roughly half of you are undergraduates–that's okay! I will take it into account when approving and grading the research projects.

Grading

Grading is structured into three main components:

Each of these components is elaborated on below.

Weekly Writing Assignments

To do research you must not only have technical skills but also be able to effectively communicate your results. The best scientists are also journalists, exploring a topic and then reporting on it in a way that is easy to read and understand. Even if you decide not to do research in computer science, facility with technical writing will serve you well in job applications, writing an email to your boss arguing for a particular technical approach or project, or just proving people wrong on the Internet.

To practice the mechanics of good scientific writing, each week you will submit a three paragraph write-up about that week's reading. The first two paragraphs should summarize the main themes of the reading: what problems the papers are trying to solve, how they solve them, and how effective their solutions are.

The final paragraph should propose an idea for additional research in the same area as the reading. You won't be graded on the quality of these research ideas; it's just meant to get you used to thinking about published research as a jumping off point for new work.

Each of these will be graded on a pass/fail basis. Grammar and spelling mistakes, awkward phrasing, repetitive word choice and sentence structure, and unnecessary verbosity will result in failing that week's writing assignment. However, I will provide detailed feedback, and if you submit a corrected version by the next class I will change your grade.

If you want to improve your writing, here are a few recommendations:

In-Class Participation

During lecture I will periodically pick a name from a hat and call on that person to answer some question about one of the papers in that day's reading. If you can provide a reasonable answer, you get participation credit. If you aren't there or your answer demonstrates that you didn't try to read and understand the paper, you get no credit.

Note that it's okay to provide an answer that indicates you read the paper but didn't understand the specific thing I'm asking about. Particularly early on, you won't always understand every detail of a paper, and learning how to efficiently skim and get the gist of what's going on is an important skill in itself.

Final Research Project

The final research project will consist of a conference-length CS research paper and an accompanying presentation. We will prepare for this throughout the semester by talking about how to write an abstract, related work section, etc. You may work in groups of up to three people.

Project ideas can be found here.

Schedule

Cooperation Policy

The paper writeups must be done on your own. For the final research projects, you can work in groups of up to 3.

Moses Center Statement of Disability

If you are student with a disability who is requesting accommodations, please contact New York University’s Moses Center for Students with Disabilities at 212-998-4980 or mosescsd@nyu.edu. You must be registered with CSD to receive accommodations. Information about the Moses Center can be found at www.nyu.edu/csd. The Moses Center is located at 726 Broadway on the 2nd floor.