CS 5187 — Software Analysis

Monsoon Semester 2026 · 23 July – 12 November 2026 · Dept. of CSE, IIT Guwahati

Schedule

Weeks 1–3: classes Mon / Tue / Wed. From Week 4 (18 Aug): classes Tue / Wed / Thu — Tue 4:00, Wed 3:00, Thu 2:00 PM in Room 5G4. The Thursday slot now carries regular lectures as well as the two quizzes and Industry Talk 2.

Wk Mon Tue Wed Thu Notes
1 Jul 27 · Mon-1 L1. Course intro & motivation Jul 28 · Tue-1 L2. Static / dynamic / hybrid analysis Jul 29 · Wed-1 L3. Vulnerability assessment & secure coding Topic 1
2 Aug 3 · Mon-2 L4. Soundness, completeness, undecidability Aug 4 · Tue-2 L5. Precision, recall, F-measure Aug 5 · Wed-2 L6. Program representation: AST, CFG, IRs Topic 1
3 Aug 10 · Mon-3 L7. Clang tutorial: libtooling & AST analysis Aug 11 · Tue-3 L8. LLVM IR Aug 12 · Wed-3 L9. LLVM IR (continued): CFGs & class hierarchy Topic 1 HW 1 out
From Week 4 Classes move to Tuesday / Wednesday / Thursday (announced in L9, Wed 12 Aug).
4 Aug 18 · Tue-4 L10. Specifications, safety & liveness Aug 19 · Wed-4 L11. Hoare logic Aug 20 · Thu-4 L12. Invariants & specification inference Topic 1 HW 1 due Aug 21
5 Aug 25 · Tue-5 L13. Coverage & mutation testing Aug 26 · Wed-5 No class — holiday Aug 27 · Thu-5 L14. Introduction to fuzzing Topic 1 → 2 HW 2 out
6 Sep 1 · Tue-6 No class — Institute Day Sep 2 · Wed-6 L15. Fuzzing (cont.): grammar-based fuzzing & concurrency testing Sep 3 · Thu-6 L16. Lattices & fixed points; reaching definitions Topic 2 → 3
7 Sep 8 · Tue-7 L17. Available & very busy expressions Sep 9 · Wed-7 L18. Live variables & DCE; interval analysis & widening Sep 10 · Thu-7 Quiz 1
2:00–2:55 PM · Topics 1–3
Topic 3 HW 2 due Sep 11 Quiz 1
Sep 13–20 Mid-Semester Examinations
8 Sep 22 · Tue-8 L19. Industry Talk 1
Room 5G4 · 4:00–4:55 PM
Sep 23 · Wed-8 L20 Sep 24 · Thu-8 L21 HW 3 out Project proposal due Sep 20 Industry Talk 1
9 Sep 29 · Tue-9 L22 Sep 30 · Wed-9 L23 Oct 1 · Thu-9 L24
10 Oct 6 · Tue-10 L25 Oct 7 · Wed-10 L26 Oct 8 · Thu-10 L27 HW 3 due Oct 9 Progress meeting 1 · Oct 5–9
11 Oct 13 · Tue-11 L28 Oct 14 · Wed-11 L29 Oct 15 · Thu-11 L30. Industry Talk 2
Room 5G4 · 2:00–2:55 PM
HW 4 out Industry Talk 2
12 Oct 21 · Wed-12 L31 Oct 22 · Thu-12 L32 No Tue class this week (institute calendar).
13 Oct 27 · Tue-13 L33 Oct 28 · Wed-13 L34 Oct 29 · Thu-13 L35 HW 4 due Oct 30 Progress meeting 2 · Oct 26–30
14 Nov 3 · Tue-14 L36. Industry Talk 3
Room 5G4 · 4:00–4:55 PM
Nov 4 · Wed-14 L37 Nov 5 · Thu-14 Quiz 2
2:00–2:55 PM · Topics 4–8
Progress meeting 3 · Nov 2–6 Industry Talk 3 Quiz 2
15 Nov 10 · Tue-15 L38 Nov 11 · Wed-15 L39
last teaching day
Nov 12 · Thu-15 Student project presentations Final presentation · Thu Nov 12 Paper + repo due Fri Nov 13, 23:59 IST
Nov 14–21 End-Semester Examinations

Syllabus

# Topic Sessions Count
1Foundations & Program Representation (incl. Clang / LLVM IR, specifications, Hoare logic & invariants)L1–L1212
2Testing (coverage, mutation, fuzzing, grammar-based, concurrency)L13–L153
3Dataflow AnalysisL16–L183
4Pointer AnalysisL20–L212
5Constraint-Based AnalysisL22–L254
6Type SystemsL26–L294
7Symbolic ExecutionL31–L344
8Automated Test GenerationL35, L372
9LLM-Assisted Software AnalysisL38–L392
Industry talks (guest sessions)L19, L30, L363
TotalL1–L3939

Logistics

Classroom
Room 5G4, Core 5
Lecture days
Weeks 1–3: Mon / Tue / Wed · Week 4 onwards (from 18 Aug): Tue / Wed / Thu
Lecture times
Mon 5:00–5:55 PM · Tue 4:00–4:55 PM · Wed 3:00–3:55 PM · Thu 2:00–2:55 PM
Thursday slot
Now a regular lecture day. It also carries Quiz 1 (Thu 10 Sep), Industry Talk 2 (Thu 15 Oct), Quiz 2 (Thu 5 Nov) and the final project presentations (Thu 12 Nov).
Office hours
By appointment · email the instructor/TAs
Discussion
Microsoft Teams (CS 5187 channel) · course email list
Handouts & slides
Course Website
Progress meetings
Microsoft Teams (scheduled 1:1 or per group) or offline
Prerequisites
Data structures, C/C++ or Java, basic OS & compilers

Grading

End-semester exam
30 %
Mid-semester exam
25 %
H/W assignments
10 %
Quizzes (2)
10 %  (5 % each)
Term project
20 %  (see Project for internal breakdown)
Attendance
5 %
Total
100 %

Quizzes (10 %)

Quiz 1
Thu 10 September 2026, 2:00–2:55 PM · covers Topics 1–3 (Foundations, Testing, Dataflow).
Quiz 2
Thu 5 November 2026, 2:00–2:55 PM · covers Topics 4–8 (Pointer, Constraint-based, Types, SymExec, Test generation).

Term Project (20 %)

You'll pick a widely-used open-source target, build or adapt a program-analysis tool from the course, and try to find real bugs that get accepted upstream. Outcome is a short paper in FSE format with a reproducible GitHub artifact.

Implementation & results
50 % — Does the analyzer find real vulnerabilities and generate successful exploits or fixes?
Full marks on this component require a bug accepted by upstream maintainers.
Progress meetings & final presentation
25 % — Can you present and explain your work? Evaluated across 3 progress meetings + the final presentation.
Report (FSE format)
25 % — Is the work clearly described and illustrated?

Team & individual accountability

  • Group size: TBA
  • Each member must justify their contribution (a signed statement in the report plus commit history in the repo).
  • At every progress meeting and at the final presentation, each member must be able to answer any question about any part of the project. “That was X's part” is not an acceptable answer.

Timeline

Proposal submitted
Immediately after the mid-semester exam · by Sun 20 Sep 2026 via Microsoft Teams.
Proposal approved
Within one week · do not start work before written approval.
Progress meeting 1
5 – 9 Oct 2026 · scope firmed up, target OSS accessible, initial pipeline running. Book a slot on Teams.
Progress meeting 2
26 – 30 Oct 2026 · first end-to-end results, first bug candidates, evaluation plan.
Progress meeting 3
2 – 6 Nov 2026 · upstream reports/PRs filed, results consolidated, report draft.
Final presentation
Thu 12 Nov 2026 · 10–15 min per group + Q&A · open session on Teams.
Paper + repo due
Fri 13 Nov 2026, 23:59 IST · PDF + public GitHub repo + reproducibility instructions submitted via Teams before end-sem week.

Target open-source project

  • Must be widely used — think Linux kernel Chromium/V8 FFmpeg OpenSSL SQLite Postgres Node.js CPython LLVM and similar. Popular runtimes, browsers, kernels, media libraries, cryptography libraries, and databases are on-scope.
  • You cannot pick an obscure repo and simply point your tool at it. Rule of thumb: the project should have a large public user base and a functioning security / bug-triage process.
  • Get the target on the proposal so I can green-light it before you invest time.

Deliverables

  1. Proposal (2 pages): problem, target OSS project, technique, plan, team & role split. Sent to the instructor by 20 Sep 2026.
  2. Paper in FSE format: motivation, technique, implementation, evaluation, related work, threats to validity. Use the ACM Primary Article Template (LaTeX sigconf). PDF submitted with the artifact.
  3. Public GitHub repo containing:
    • Source code with a permissive license
    • README.md with build + run instructions, exact dependencies, and one-command reproduction of the headline result
    • Docker image or CI workflow that reproduces the evaluation from scratch
    • Bug reports / PRs / patches you filed upstream, linked with their state (open / acknowledged / merged)

What earns full marks on the “implementation” component

  • Your tool finds at least one real, previously-unknown bug in the target project and
  • The bug report / patch is accepted by upstream maintainers (merged PR, accepted CVE, or acknowledged advisory).
  • Partial credit is available for high-quality tooling and reproducible evaluation even if no bug lands; the ceiling on this component is capped without an upstream-accepted finding.

Staff

Instructor
Bernard Nongpoh · bnongpoh@iitg.ac.in
Teaching assistants

Policies

Collaboration. Discuss ideas freely; write up assignments individually. Cite any external references you consulted. Academic honesty. Standard institute rules apply. LLM use must be disclosed and cannot replace your own understanding of the material.