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. Invariants, coverage, mutation Aug 20 · Thu-4 L12. Fuzz testing intro & coverage-guided fuzzing
(two lectures combined)
Topic 1 → 2 HW 1 due Aug 21
5 Aug 25 · Tue-5 L13. Grammar-based fuzzing Aug 26 · Wed-5 L14. Concurrency testing Aug 27 · Thu-5 L15. Lattices, fixed points, worklist & MOP
(two lectures combined)
Topic 2 → 3 HW 2 out
6 Sep 1 · Tue-6 L16. Reaching definitions Sep 2 · Wed-6 L17. Available expressions Sep 3 · Thu-6 L18. Very busy expressions Topic 3
7 Sep 8 · Tue-7 L19. Live variables & DCE Sep 9 · Wed-7 L20–L21. Interval analysis; widening & abstract interpretation
(two lectures combined)
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 Industry Talk 1
Room 5G4 · 4:00–4:55 PM
Sep 23 · Wed-8 L22–L23
(two lectures combined)
Sep 24 · Thu-8 L24 HW 3 out Project proposal due Sep 20 Industry Talk 1
9 Sep 29 · Tue-9 L25 Sep 30 · Wed-9 L26 Oct 1 · Thu-9 L27
10 Oct 6 · Tue-10 L28 Oct 7 · Wed-10 L29 Oct 8 · Thu-10 L30 HW 3 due Oct 9 Progress meeting 1 · Oct 5–9
11 Oct 13 · Tue-11 L31 Oct 14 · Wed-11 L32 Oct 15 · Thu-11 Industry Talk 2
Room 5G4 · 2:00–2:55 PM
HW 4 out Industry Talk 2
12 Oct 21 · Wed-12 L33 Oct 22 · Thu-12 L34 No Tue class this week (institute calendar).
13 Oct 27 · Tue-13 L35 Oct 28 · Wed-13 L36 Oct 29 · Thu-13 L37 HW 4 due Oct 30 Progress meeting 2 · Oct 26–30
14 Nov 3 · Tue-14 Industry Talk 3
Room 5G4 · 4:00–4:55 PM
Nov 4 · Wed-14 L38–L39
(two lectures combined)
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 L40 Nov 11 · Wed-15 L41–L42
(two lectures combined) · 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 Lectures Count
1Foundations & Program Representation (incl. Clang / LLVM IR, specifications, invariants & coverage)L1–L1111
2Testing (fuzzing, grammar-based, coverage-guided, concurrency)L12–L143
3Dataflow AnalysisL15–L217
4Pointer AnalysisL22–L243
5Constraint-Based AnalysisL25–L284
6Type SystemsL29–L324
7Symbolic ExecutionL33–L364
8Automated Test GenerationL37–L393
9LLM-Assisted Software AnalysisL40–L423
Total42

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.