Overview
What this challenge is about.
Build a dead-code detector for a Python monorepo using call-graph analysis and test it on real code. Get a verifiable certificate.
The scenario
The company is a late-stage (Series D) business-to-business software-as-a-service vendor in Sydney whose expense-management product is built on a single shared Python repository accumulated by seven years of fast hiring and shifting priorities.
The Brief
What you'll do, and what you'll demonstrate.
Build a static dead-code detector that reaches above 80 percent precision on its top 50 findings while correctly excluding code that is only reached through indirect references.
Earning criteria — what you'll demonstrate
- Construct a whole-program call graph for Python by parsing source into abstract syntax trees and resolving names across modules
- Identify and correctly attribute indirect references that defeat naive reachability analysis (entry points, dynamic attribute lookups, web routes, task registration)
- Reason about static-analysis precision and recall, and measure precision honestly against hand-validated ground truth
- Translate analysis findings into a safe, reviewable refactoring plan that respects pull-request size limits
Program Fit
Where this fits in your program.
Sharpens the same skills your degree expects you to demonstrate.
Aligned coursework coming soon.
Skills
Skills you'll demonstrate.
Each one shows up on your verified credential.
- Dataflow Analysis
Apply dataflow analysis to solve real industry problems and demonstrate production-level capability.
- Ast
Apply ast to solve real industry problems and demonstrate production-level capability.
- Call Graph
Apply call graph to solve real industry problems and demonstrate production-level capability.
- Python Programming
Apply python programming to solve real industry problems and demonstrate production-level capability.
- Static Analysis
Apply static analysis to solve real industry problems and demonstrate production-level capability.
- Refactoring
Apply refactoring to solve real industry problems and demonstrate production-level capability.
Careers
Career paths this challenge builds toward
Completing this challenge demonstrates skills that transfer directly to these roles:
Software Engineer (Developer Tooling)
Engineers who build internal tooling routinely write analyzers over large codebases. This challenge mirrors that work end to end: parsing source into abstract syntax trees, building a call graph, and turning findings into changes teammates can safely review and merge.
This challenge sharpens
- ast
- call-graph
- python-programming
Static Analysis Engineer
Static-analysis roles demand precise reachability reasoning and honest precision measurement. Here you confront the exact failure mode that breaks naive tools — indirect references — and must quantify how well your analysis performs against hand-checked ground truth.
This challenge sharpens
- dataflow-analysis
- static-analysis
- call-graph
Platform / Codebase Health Engineer
Platform teams own the health of large shared repositories. This challenge bridges directly to that work: you diagnose accumulated dead code and produce a staged, low-risk refactoring plan that keeps a monorepo maintainable as the company scales.
This challenge sharpens
- refactoring
- static-analysis
- python-programming