Design an Effort-Aware Bike Routing Feature for Lisbon
Overview
What this challenge is about.
Design an Effort-Aware Bike Routing Feature for Lisbon. Intermediate challenge in code. Writing production code that solves real engineering problems, earn a...
The Brief
What you'll do, and what you'll demonstrate.
Design a routing engine that recommends bike trips minimizing uphill effort over Lisbon's street graph, by tuning a custom edge-weight penalty so suggested routes are noticeably easier to climb without becoming unreasonable detours.
This is not a coding exercise. It is the work a software engineer does between a Jira ticket and a merged PR. That distinction matters to every hiring manager who has seen candidates solve LeetCode problems and none who have shipped production code under real constraints.
When you finish, you will have something most graduates do not: a real-world deliverable, verified by Ewance, that you can show to a hiring manager and say "I did this. Here is the proof."
Earning criteria — what you'll demonstrate
- Implement Dijkstra's algorithm correctly over a real-world street graph with a custom, domain-driven edge-weight function
- Reason about how changing edge weights changes optimal paths, and prove optimality on a fixed test set
- Tune a single model parameter against measurable acceptance criteria rather than intuition
- Benchmark graph queries and analyze the time complexity trade-offs between Dijkstra and an A* heuristic search
- Communicate algorithmic design and trade-offs to a non-technical product audience
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.
- Graph Algorithms
Apply graph algorithms to solve real industry problems and demonstrate production-level capability.
- Dijkstra
Apply dijkstra to solve real industry problems and demonstrate production-level capability.
- Algorithm Analysis
Apply algorithm analysis to solve real industry problems and demonstrate production-level capability.
- Python
Write clean, efficient Python for data processing, automation, and backend services.
- Benchmarking
Apply benchmarking to solve real industry problems and demonstrate production-level capability.
- Data Structures
Apply data structures 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:
Backend / Routing Engineer
Builds the navigation and routing services behind mobility and logistics apps. This challenge mirrors that work end to end: modeling a real road network as a weighted graph, implementing shortest-path search, and shipping it behind a controlled feature flag.
This challenge sharpens
- graph-algorithms
- dijkstra
- python
Algorithms & Performance Engineer
Owns the correctness and speed of core algorithms in latency-sensitive systems. Here you prove path optimality, benchmark queries against a budget, and reason about the Dijkstra-versus-A* complexity trade-off on real data structures.
This challenge sharpens
- algorithm-analysis
- benchmarking
- data-structures
Mobility Platform Software Engineer
Develops rider-facing features for micromobility platforms where physical-world constraints like terrain matter. This challenge bridges to that role by turning elevation data into a tunable routing experience and benchmarking it for production readiness.
This challenge sharpens
- graph-algorithms
- python
- benchmarking