Software Engineering
Backend Engineer
Behind every app a user touches, there's a quieter system doing the actual work — routing requests, holding state, refusing bad input politely. Backend engineers build and care for that hidden layer.
The role is part craft, part diplomacy: you're designing APIs that other engineers will lean on for years, and a careless schema choice can echo through a company for a long time. Good work here looks like code that's boring in the best way — predictable under load, easy for the next person to read, observable when something breaks.
Students grow into this role by getting comfortable with Python or another server language, then learning how databases really behave when traffic spikes.
- CodeIntermediateNew
Design a Change-Data-Capture Pipeline for an E-Commerce Reseller
Receive the MySQL schema (220 tables), 7 days of binlog samples, and the data team's freshness + correctness requirements. Design the CDC pipeline: Debezium for MySQL binlog cap…
- Change Data Capture
- Debezium
- Kafka
Big Data and Data-Intensive Systems - CodeIntermediateNew
Add Idempotency Keys to a Payment Webhook System
Read the current Go webhook-sender code and 30 days of duplicate-delivery incident logs. Design the idempotency scheme: server-generated key per event (UUID v7 — time-ordered), …
- API Design
- Idempotency
- Webhooks
Open coursework - CodeIntermediateNew
Bloom Filter Cache to Cut Origin Load at a CDN Edge
Given a target false-positive rate of 1 percent at 200 million keys per shard, compute the optimal bit-array size (m) and hash-function count (k) using the canonical formulas. I…
- Bloom Filters
- Probabilistic Data Structures
- Hash Functions
Randomized Algorithms - CodeBeginnerNew
Build a Reliable Transport Layer Over UDP
Implement in Go: connection establishment (3-way handshake), sequenced and acknowledged data segments, retransmission timer with exponential backoff, fast retransmit on triple d…
- Tcp Ip
- Reliable Transport
- Udp
Computer Networks Practice your coursework on real scenarios.
Every challenge is shaped from real-world context — not generic exercises. The work mirrors what your degree prepares you for.
Why Ewance
- DesignIntermediateNew
Design a Versioning Strategy for a Public REST API
Receive the OpenAPI spec for the 14 endpoints, 8 months of partner-support tickets tagged 'breaking-change', and the partner-mix breakdown (which endpoints which partner uses). …
- API Design
- REST
- API Versioning
API Design and GraphQL - CodeBeginnerNew
Churn-Prediction Model for a B2B Vertical SaaS
Use 18 months of anonymized data (provided) covering: usage events, login frequency, support tickets, NPS responses, billing health, feature adoption, practice firmographics. De…
- Supervised Learning
- Python Programming
- Ml Applications
Machine Learning (CS Elective) - AnalysisBeginnerNew
Customer-Segmentation Study for a DTC Subscription Box
Use 18 months of anonymized data: order history, churn events, NPS responses, box-rating data, referral activity, marketing-channel attribution. Engineer features (RFM-style + b…
- Unsupervised Learning
- Python Programming
- Ml Applications
Machine Learning (CS Elective) - CodeIntermediateNew
Refactor a God-Object Order Service with Strategy + Command
Read OrderService and the last 18 months of bug tickets touching it. Author a 5-page design document showing the current class diagram, the target Strategy-per-order-type + Comm…
- Design Patterns
- Refactoring
- Strategy Pattern
Software Design and Design Patterns - Browse challenges
Explore role
Product Manager
Ship product that solves real user problems. Combine user research, prototyping, and stakeholder alignment to turn ambiguous briefs into measurable wins — the role at the centre of modern software teams.
- CodeIntermediateNew
Debug a Race Condition in a Real-Time Collaboration Service
Build a deterministic load-test harness (k6 or Playwright) that reproduces the corruption within 3 attempts on a clean local stack. Capture traces with OpenTelemetry to localize…
- Debugging
- Concurrency
- Load Testing
Software Construction - CodeIntermediateNew
Design a Lock-Free Concurrent Queue for an Event Bus
Implement an MPSC (multi-producer single-consumer) ring-buffer queue in Go using atomic operations only — no mutexes. Prove correctness with the Go race detector across 8 produc…
- Concurrent Data Structures
- Lock Free Programming
- Go
Data Structures - CodeIntermediateNew
Specification-First Refactor of a Payments Module
Read the module, the last 12 months of incidents touching it, and the existing tests. Write a 6-page specification using a precondition / postcondition / invariant format per pu…
- Specifications
- Refactoring
- Characterization Testing
Open coursework - CodeIntermediateNew
Apply Hexagonal Architecture to a Payments Microservice
Design the settlement domain in pure Kotlin (no Spring imports, no framework annotations). Define ports for: payment-network adapter (one inbound per network — SEPA, Faster Paym…
- Hexagonal Architecture
- Ports And Adapters
- Kotlin Programming
Domain-Driven Design Build a verifiable portfolio.
Submissions become evidence. Reviewers with shipping experience score against a rubric; the result becomes a credential anyone can verify.
Why Ewance
- CodeIntermediateNew
Build an Indexer for an On-Chain DeFi Analytics Product
Receive the 6 protocols' ABIs + the team's required event coverage spec (around 40 event types). Build a TypeScript indexer using viem + Postgres: subscribe to new blocks via We…
- Blockchain Indexing
- Typescript
- Ethereum
Blockchain and Decentralized Systems Engineering - CodeIntermediateNew
Implement Federated Learning for a Government Statistics Office
Use Flower as the FL framework. Simulate 8 municipalities each with a partition of a synthetic wage dataset (provided, 1M rows, EU-Labour-Force-Survey schema). Train a gradient-…
- Federated Learning
- Differential Privacy
- Python Programming
Privacy-Enhancing Technologies - CodeBeginnerNew
Implement Authentication and Access Control for a Civic Portal
Receive the current Next.js + Express prototype, the data model (residents, requests, documents, audit log), and the 4 staff roles (resident, clerk, supervisor, auditor) with th…
- Authentication
- Authorization
- Rbac
Introduction to Computer Security - CodeFoundationalNew
Rule-Based Intent Classifier for a Customer-Support Triage Bot
Build a rule-based classifier in Python that runs ordered rules (regex + keyword + simple heuristics) against ticket subject + body. Use a hierarchical rule structure (high-prec…
- Knowledge Representation
- Rule Based Systems
- Python Programming
Introduction to Artificial Intelligence (CS Elective) - CodeIntermediateNew
Forecasting Model for Online-Game Daily Active Users
Build forecasts at 14-day horizon per region using: (1) classical baseline — SARIMA or Prophet; (2) ML approach — gradient-boosted regressor on engineered features (day-of-week,…
- Supervised Learning
- Time Series Forecasting
- Python Programming
Machine Learning (CS Elective) - CodeIntermediateNew
Repository + Unit-of-Work Refactor on an EF Core Codebase
Read the data-access patterns across the 5 bounded contexts (Payroll, Timesheets, Benefits, Org, Reporting) and tag the 12 worst N+1 incidents from the last quarter's traces. Au…
- Repository Pattern
- Unit Of Work
- Design Patterns
Software Design and Design Patterns - CodeBeginnerNew
Build an Embedding-Based Semantic Search for a Legal-Document Corpus
Embed the 380k-document corpus using a multilingual sentence-transformer (e.g. multilingual MPNet or LaBSE). Store embeddings in FAISS or pgvector. Build a search service that r…
- Deep Learning
- Ml Applications
- Python Programming
Machine Learning (CS Elective) - CodeBeginnerNew
Design a Race-Free Cache for a Read-Heavy Service
Implement a thread-safe LRU-bounded cache in Java (or Go — your choice, defend it) with: read-write lock or copy-on-write semantics, get-or-load pattern with single-flight to de…
- Concurrent Data Structures
- Race Conditions
- Single Flight
Concurrent and Parallel Programming - CodeIntermediateNew
Refactor a Big-Ball-of-Mud Java Servlet Application
Week 1: install JUnit 5 + Testcontainers harness, write characterization tests for the 2 target workflows (PolicyIssue + ClaimSubmit) reaching at least 80 percent branch coverag…
- Refactoring
- Characterization Testing
- Legacy Systems
Software Evolution and Maintenance - CodeSeniorNew
HyperLogLog Cardinality for Real-Time Ad-Auction Analytics
Implement HyperLogLog with precision parameter p in {12, 14, 16} (4KB, 16KB, 64KB sketches) and benchmark relative error on a replayed 3-hour production trace (around 13 billion…
- Hyperloglog
- Probabilistic Data Structures
- Streaming Systems
Randomized Algorithms - CodeIntermediateNew
Build a User-Space File System with FUSE for a Storage Startup
Build a FUSE driver (your choice of Rust + fuser crate or Go + bazil/fuse) that proxies POSIX operations to the startup's existing S3-compatible REST API (mock provided). Suppor…
- File Systems
- Fuse
- Rust Programming
Operating Systems - DesignIntermediateNew
Migrate a 200TB Data Lake from Parquet to Iceberg
Receive an inventory of the 200TB hot tier (around 1,200 tables, around 38 PB of historical data referenced), the current Spark + Trino read patterns, and 6 months of schema-cha…
- Iceberg
- Parquet
- Data Lake
Big Data and Data-Intensive Systems - CodeIntermediateNew
Multi-Tenant SaaS Backend with Postgres Row Security
Design the multi-tenant schema: shared tables with a tenant_id column, indexed appropriately. Write a forward + backward migration (using Drizzle or Prisma). Implement Postgres …
- Multi Tenant Architecture
- Postgresql
- Row Level Security
Open coursework - CodeIntermediateNew
Strangler-Fig Modernization of a Healthcare Reporting Service
Audit the report categories (around 14) and pick operating-theater utilization for the pilot extraction (high volume, moderate complexity, low regulatory blast-radius). Design t…
- Strangler Fig
- Legacy Systems
- Feature Flags
Open coursework - CodeIntermediateNew
Strangler-Fig Migration of a Monolithic Order Service
Stand up an HTTP facade in front of the monolith (Nginx or a small Go proxy) that routes by URL pattern. Slice 1: extract the order-status read endpoint, dual-write nothing, rou…
- Strangler Fig Pattern
- Refactoring
- Legacy Modernization
Refactoring and Code Smell Detection - CodeBeginnerNew
Refactor a Node.js Service into Scala with Effect Systems
Take the existing Node.js price-normalization code (provided). Rewrite in Scala 3 using ZIO (or Cats Effect) — model every effect explicitly (IO for side effects, Either or type…
- Scala Programming
- Zio Effects
- Cats Effect
Functional Programming - CodeSeniorNew
Implement Raft Consensus for a Self-Hosted Feature-Flag Service
Implement the core Raft algorithm (leader election, log replication, snapshotting) from the original Ongaro & Ousterhout paper. Use an embedded key-value store (BoltDB or sled) …
- Raft Consensus
- Go Programming
- Grpc
Open coursework - CodeIntermediateNew
Build a GraphQL Federation Schema for an E-Commerce Platform
Receive the existing 22 REST endpoints' OpenAPI specs and a list of 5 priority subgraphs. Design a federated GraphQL schema using Apollo Federation v2 directives (@key, @externa…
- Graphql
- Graphql Federation
- API Design
API Design and GraphQL - CodeBeginnerNew
Diagnose and Fix a Deadlock in a Multi-Threaded Payments Service
Receive the service source (Java 21 + Spring Boot, around 30,000 lines), 4 thread dumps from production deadlocks, and a load harness that reproduces the bug roughly 1 in 50 run…
- Deadlock Analysis
- Locks And Monitors
- Java
Concurrent and Parallel Programming - CodeIntermediateNew
Multi-Tenant Schema Migration for a Series-B HR SaaS
Design a 4-phase migration: (1) add new columns + tables, dual-write on every workflow mutation, (2) backfill 3.4 TB in chunks of around 50k rows per minute with throttling and …
- Multi Tenant Architecture
- Schema Migration
- Dual Write
Open coursework - CodeBeginnerNew
Build a Bounded Concurrent Queue for a Microservice Worker Pool
Implement a bounded concurrent queue in Go (no third-party queue libraries; standard library + sync primitives only) that supports: Put(item) blocks when full, TryPut(item, time…
- Concurrent Data Structures
- Mutex And Condvar
- Go
Concurrent and Parallel Programming - CodeSeniorNew
Build a Real-Time Cascade Detection Pipeline for a Trading Platform
Receive 6 months of anonymized trade events (timestamp, ticker, side, volume, account_segment) plus a static follower graph among 50k 'top trader' accounts. Build a streaming pi…
- Streaming
- Network Science
- Graph Analysis
Network Science and Computational Social Science - AnalysisBeginnerNew
Profile and Optimize a Virtual-Memory-Heavy Image Pipeline
Receive the Go pipeline source, a representative batch (1,200 photos averaging 12MB each, with 30 outliers over 80MB), and host specs (4-core, 16GB RAM, Linux kernel 5.15). Run …
- Virtual Memory
- Performance Profiling
- Memory Hierarchy
Open coursework
How it works
From brief to credential, in six steps.
Step 01
Browse challenges aligned to your studies.
Step 02
Accept the one that fits your goals.
Step 03
Work through it with AI Copilot guidance.
Step 04
Submit for structured evaluation.
Step 05
Earn a verified credential.
Step 06
Add it to LinkedIn with one click.
Related roles you may want to explore
Browse all roles →Software Engineering
Frontend Engineer
Every button a user clicks, every loading state they wait through, every form that almost-but-not-quite works, all of it passed through a frontend engineer's editor. This is the discipline that decides how software feels. The role lives at a peculiar intersection of design empathy, performance budgets, and accessibility standards, which is why students who like both visual craft and systems thinking often find a home here. You'd grow into it by building real things in React or Next.js, reading other people's code, and developing taste for what feels right. Tools like GitHub Copilot accelerate the typing; the judgement about when to refactor and when to ship is still yours. Strong frontend engineers care that a screen reader can navigate their work.
Software Engineering
Full-Stack Engineer
Picture the small startup team where one engineer ships a feature from the database schema to the deployed button. That generalist mindset is what the full-stack engineer brings, even at larger companies. The role exists because most useful software doesn't respect the boundary between client and server, and someone needs to reason about both. Students grow into this by being curious past their comfort zone, picking up PostgreSQL when they came for React, learning OAuth flows when they came for UI. The work rewards people who'd rather understand a whole system than perfect one slice of it. Strong full-stack engineers know when to ask a specialist for help, which is itself a skill worth developing early.
Software Engineering
Mobile Engineer
Open the app on your phone and tap something. The fact that it responded instantly, didn't drain your battery, and worked on a five-year-old device is not an accident — a mobile engineer obsessed over that. This role is for people who care about craft at the interface where software meets a human's pocket. Expect days writing native code against the Android SDK or iOS, profiling animations, fighting flaky tests, and shepherding releases through App Store Connect. Students grow into it by shipping their own small app and feeling the gap between a demo and something a stranger would actually use. Strong mobile engineers treat accessibility as a baseline, not a feature.
Software Engineering
Software Engineer
US$163,883
Software engineers turn intent into code that other people rely on, often without ever meeting them. The craft is broader than the languages — Python, Go, Java rotate in and out of fashion — and centers on judgment: which abstraction to introduce, which test to write first, which review comment matters and which is taste dressed up as principle. AI tools like Copilot and Claude Code accelerate the typing but raise the bar on knowing what to build. Strong engineers care about the people who'll maintain their code in two years, including their future selves. Students drawn to this path often started building things in high school and never stopped. Growth comes from shipping real systems, taking ownership when they break, and reading code written by people better than you.
Industry teams behind a decade of practitioner briefs
Hiring from this pool?
Sponsor a challenge and meet candidates through actual work.
Industry teams can shape briefs around the skills they hire for, then evaluate students on rubric-scored deliverables — not resumes.
Skills and disciplines shown on this page are derived from the Ewance challenge catalogue. When the median annual salary is available for this role via Adzuna, it will be shown above with the sample size and country.
Portrait: Photo by Muhammad Numan on Unsplash.



















































































