02242: Program Analysis

Fall 2025

Christian Gram Kalhauge

Table of Contents
  1. Practical Information§1
    1. The Course§2
      1. Feedback§2.1
        1. Teaching Philosophy§2.2
          1. Didactic Contract§2.3
            1. The Challenge§2.4
              1. Questions§2.5
                1. Groups§2.6
                  1. Lecture Structure§2.7
                    1. Schedule§2.8
                    2. Project§3
                      1. Proceedings§3.1

                      You have reached the homepage of the 02242 Program Analysis course at DTU. The goal of this course is to learn you to derive information from computer programs, using different techniques.

                      This is the Fall 2025 edition, you can find the course material for 2024.

                      Practical Information §1

                      First let's quickly go over some practical information:

                      The Course §2

                      As mentioned the goal of the course is to introduce you to program analysis. Because of my Teaching Philosophy, I like to focus on practical work and collaboration. The course and the lectures are therefore structured differently from what you might be used to.

                      Feedback §2.1

                      This course is still in its infancy, feedback is therefore crucial to make it better for generations to come. You are welcome to send suggestions to chrg@dtu.dk or anonymously on this Google Form.

                      Teaching Philosophy §2.2

                      Personally, I have always thought we teach material backwards; first we give students all the information in a lecture, and then afterward we ask them to solve exercises. This is problematic as the student does not know what to do with the information, and when they figure out what they need to do, they have no way of getting the information.

                      So my teaching philosophy is a best summarized by the phrase:

                      You only learn from your mistakes.

                      Essentially, no matter what you, the student, is presented with, it will not be absorbed, unless it is needed by you to fill gabs in your understanding. And you only realize that there are gabs, if you fail at doing a task. My teaching style is therefore practical and hands on.

                      We know this form of teaching is taxing, and can feel frustrating, so please reach out if you need help, because it is the only way to learn.

                      Didactic Contract §2.3

                      During the course you will spend most of your time implementing different program analyses. It is therefore expected (and required) that you have a good level of programming experience. DTU sets the expected workload of one ETCS point to 28 hours. Since this is a 7.5 ETCS point course over 13 weeks + 1 week exam, one should expect to use 14 hours on this course a week, only 4 of which are in class.

                      Participation in the class or doing the assignments are not mandatory. However, they are the primary way we convey the material of the class. It will be very hard to pass the course without engaging with the material.

                      In return, I will teach you program analysis by presenting you with challenges to overcome, make the lectures relevant, help you to learn when you fail, and support you, so you do not give up.

                      The Challenge §2.4

                      Because of my Teaching Philosophy (§2.2), I will make sure you have the activity before the lectures. The goal of the course is very simply to do as well as possible on a benchmark suite called JPAMB. In short, the benchmark suite is a collection of java programs, which you will build multiple analyses for. You will try to build an analysis which is as good as possible.

                      In the end of the course you will be evaluated on how well you did at this task.

                      The rules are available in the README of the project.

                      You can upload the results of running the evaluation to Autolab, use the access code 7FNKZO.

                      Questions §2.5

                      At every lecture, I will ask 2-4 questions which can guide you to investigate different different aspects of program analysis.

                      Groups §2.6

                      To solve the challenges, we are going to have two kinds of groups:

                      • The Feedback Group is a group of ~8 random students. The goal of this groups is to have a place to hear about alternative solutions to your current problems. In the start of every class, you'll sit at these groups, as well as answer the Questions (§2.5) together.

                      • The Project Group is a group of 4 - 6 students. The goal of this group is do the final project and defend it together orally. The groups are due when handing in the proposal, and the groups cannot overlap with your feedback groups.

                      Lecture Structure §2.7

                      To foster an atmosphere of collaboration and give you a change to get peer-feedback on your ideas, we start every lecture with 30 minutes of feedback revolving around the questions given in class. Every lecture (except the first) is structure like so:

                      In the beginning of class we sit in our feedback groups.

                      • 13:00 Peer-feedback. In the beginning of the lecture you should sit with you feedback groups. Together with them you'll discuss your progress over the last week: what was easy and what was hard, as well as the questions from the previous lecture.

                      • 13:20 Communal Feedback. We'll then summarize the feedback in class, hopefully resolving the biggest questions from the last week.

                      • 13:30 Lecture. Then we'll have an interactive lecture about the problem of the day. Here we can cover any problems and questions that have come up during the Getting started section.

                      • 15:00 Lab-work, with TA's.

                      Schedule §2.8

                      The lectures are on Mondays at 13:00 to 17:00. This is a tentative list of topics and might change. As I update the lecture notes, the links to the old lecture notes will disappear.

                      NoDateTopic
                      0109-01Introduction
                      0209-08Syntactic Analysis
                      0309-15Semantics
                      0409-22Dynamic Analysis
                      0509-29Lab-day
                      0610-06Bounded Static Analysis
                      10-13Autumn holiday
                      0810-20Lab-day & Proposal Due
                      0710-27Unbounded Static Analysis
                      0911-03Concolic Execution (OLD)
                      1011-10Context Sensitive Analysis (OLD)
                      1111-17How to write a good paper (OLD)
                      1211-24Lab-day
                      1312-01Q/A & How to-do a good presentation & Paper Due
                      12-10Exam
                      12-11Exam
                      12-12Exam

                      Project §3

                      During the course we will be doing a project together with your project group.

                      See 🗒 The Project for details!

                      Proceedings §3.1

                      After the exams, we will collect the papers on a voluntary basis in a proceedings, which is shared among the participating students and with the students of the classes years to come. Furthermore, every semester, we will assign a paper the best paper award, which will be indicated in the proceedings.

                      You can find the proceedings from last year on Learn.