Software Engineering
Software Engineer
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.
US$163,883 median salary in United States¹
- DesignIntermediateNew
Design an Invoice-Rules Mini-Language for Non-Technical Users
Design a rule mini-language whose grammar (written in Backus-Naur Form, the standard notation for describing grammars) covers boolean logic (and / or / not), comparison operator…
- Abstraction
- Recursion
- Domain Specific Language
Open coursework - CodeIntermediateNew
Stream-Process a 64-Microphone Array to Locate Bearing Faults in Real Time
Using the provided fixture generator and array-geometry spec, implement an overlap-add streaming pipeline that consumes 64 channels in 1,024-sample frames with 50 percent overla…
- Fft
- Signal Processing
- Beamforming
Open coursework - CodeIntermediateNew
Design Error Recovery for a Friendly Compiler
Read the existing parser (recursive-descent, in Rust). Design and implement a panic-mode error recovery strategy with synchronization tokens (statement boundary, end of block, s…
- Error Recovery
- Recursive Descent Parsing
- Diagnostic Design
Compiler Construction - ResearchIntermediateNew
Design an Empirical Study of Pull Request Review Throughput
Using the provided pull request dataset and the stakeholder brief, design and run an empirical software-engineering study on review throughput. State three falsifiable hypothese…
- Empirical Software Engineering
- Software Analytics
- Statistical Analysis
Open coursework 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
- AnalysisIntermediateNew
Design an Electronic Health Record Data-Quality Audit
Stand up a Python (pandas + DuckDB) audit notebook ingesting the 14M-record extract. Define and run quality checks across four dimensions: completeness (required-field missingne…
- Health Informatics
- Data Quality
- Snomed Ct
Computational Biology and Health Informatics - CodeIntermediateNew
Build a Java EE REST API for the EcoThreads Marketplace
Using the EcoThreads operations file, the sample product catalog export, and the API requirements specification provided to you, design and implement a RESTful backend with Java…
- Java Ee
- REST API
- Jpa
Open coursework - AnalysisIntermediateNew
Spectral Clustering Proposal for Customer Segmentation at Cadence
Using the provided customer usage sample, construct a similarity graph (k-nearest-neighbors with k=15 and Gaussian radial-basis-function edge weights), compute the normalized gr…
- Spectral Methods
- Linear Algebra
- Algorithm Analysis
Open coursework - CodeIntermediateNew
Deploy SDN-Based Network Slicing for a Telco Operator
Receive the current transport architecture (P4-programmable switches, ONOS controller cluster), the 3 customer-class SLAs (consumer: best-effort 50 Mbps; enterprise IoT: 5 Mbps …
- Sdn
- Onos
- Mininet
Advanced Computer Networks - 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
Out-of-Order Execution Microbenchmark Suite
Design and implement 6 microbenchmarks: ROB capacity probe (varying chain length), load-store queue probe, branch mispredict cost probe, ILP saturation probe, store-to-load forw…
- Out Of Order Execution
- Performance Counters
- Benchmarking
Advanced Computer Architecture - CodeIntermediateNew
Port a Monte Carlo Engine to CUDA for an Asset Manager
Profile the CPU MC engine to identify the kernel candidates: path generation (Brownian motion + correlated factors), payoff evaluation, aggregation. Port to CUDA: use cuRAND for…
- Cuda
- Monte Carlo
- Gpu Programming
Open coursework - CodeIntermediateNew
Apply Software Transactional Memory to a Real-Time Auction Book
Implement two variants of the same auction-book API (best-bid/best-ask lookup, place-order, cancel-order, match-orders): (1) baseline with java.util.concurrent locks + a SkipLis…
- Transactional Memory
- Concurrent Data Structures
- Haskell
Advanced Concurrency and Parallel Computing - DesignIntermediateNew
Design a Crisis Information-Flow Analysis for a Newsroom
Using the sampled propagation log and the editorial brief in the provided materials, design and partially demonstrate an analysis that reconstructs the alert's 72-hour spread as…
- Computational Journalism
- Temporal Networks
- Network Science
Open coursework 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
Index a Reference Genome with a Suffix Array in Rust
Using the reference-genome FASTA in the provided materials, build an in-memory suffix array (DC3 or SA-IS construction) over the 4-letter DNA alphabet in Rust, then implement co…
- Suffix Arrays
- String Algorithms
- Rust
Open coursework - AnalysisIntermediateNew
Mine Basket History to Justify Grocery Shelf-Adjacency Changes
Work only from the materials provided. Use the basket transactions extract to mine frequent itemsets with FP-growth, tuning the minimum support level separately for the food, ho…
- Frequent Itemset Mining
- Fp Growth
- Spark
Open coursework - CodeIntermediateNew
Implement an SSA-Based Sparse Conditional Constant Propagation Pass
Read the IR specification (SSA form, phi nodes, typed values). Implement SCCP as a single combined worklist algorithm operating on the SSA lattice (top / constant / bottom) and …
- Static Single Assignment
- Dataflow Analysis
- Constant Propagation
Advanced Compilers and Program Optimization - CodeIntermediateNew
Port a Drone Flight Controller from Bare-Metal to FreeRTOS
Take the existing bare-metal firmware (STM32H7, around 14,000 lines C). Identify the tasks (control loop 1 kHz, IMU read 2 kHz, GPS 10 Hz, telemetry 50 Hz, command parsing event…
- Freertos
- Rate Monotonic Scheduling
- C Programming
Open coursework - CodeIntermediateNew
Automated Planner for a Field-Service Maintenance Schedule
Model the scheduling problem as either PDDL (Planning Domain Definition Language) or a constraint-satisfaction problem using a solver like OR-Tools. Define: actions (visit_site,…
- Planning
- Constraint Satisfaction
- Python Programming
Introduction to Artificial Intelligence (CS Elective) - AnalysisIntermediateNew
Build a Performance Model for a Molecular-Dynamics Job
Build an analytical performance model covering: compute time per step (function of atom count + cutoff + interaction type), inter-rank communication cost (function of decomposit…
- Performance Modeling
- Gromacs
- Benchmark Design
High-Performance and Scientific Computing - CodeIntermediateNew
Parallelize a CFD Solver with MPI Across 256 Cores
Profile the serial solver to identify the hot loops (likely: pressure-Poisson solve, advection step, BC update). Decompose the domain via 2D block-structured partitioning. Imple…
- Mpi
- Cpp Programming
- Domain Decomposition
Open coursework - CodeIntermediateNew
Build and Audit an ERC-20 Vesting Contract for a DeFi Startup
Implement an ERC-20 vesting contract with: per-beneficiary cliff (default 12 months) + linear vesting (default 36 months), revocable allocations (for founders only), pause funct…
- Solidity
- Smart Contracts
- Foundry
Blockchain and Decentralized Systems Engineering - DesignIntermediateNew
Design a UV-Preserving Mesh Simplification Pipeline for 3D-Scan-to-Web
Using the textured high-resolution meshes in the scan corpus (scan-corpus), the engineering constraints in the engineering brief (engineering-brief), the integration contract in…
- Geometry Processing
- Mesh Simplification
- 3d Rendering
Open coursework - CodeIntermediateNew
Detect Atrial Fibrillation from Wearable Heart-Rate Data
Build a Python pipeline that ingests raw PPG + accelerometer at 100Hz, applies motion-artifact rejection using the accelerometer channel, detects beats, computes RR-interval irr…
- Health Sensing
- Signal Processing
- Biomedical Signals
Computational Biology and Health Informatics - CodeIntermediateNew
Halve the Inner Solver in a Crash-Simulation Pipeline
Using the public structural finite-element matrices declared in `structural-matrices` as stand-ins for three production mesh sizes, benchmark four combinations: (1) GMRES with i…
- Sparse Linear Algebra
- Krylov Methods
- Preconditioning
Open coursework - AnalysisIntermediateNew
Tune OpenMP Performance on a Memory-Bound Genomics Pipeline
Profile the existing pipeline at 1, 4, 8, 16, 32, 48, 64 threads using Intel VTune + Linux perf. Identify the bottlenecks (likely candidates: NUMA-unaware memory allocation, fal…
- Openmp
- Numa Awareness
- False Sharing
High-Performance and Scientific Computing - CodeIntermediateNew
Build a Zephyr-Based Sensor Node for Industrial IoT
Set up a Zephyr workspace, configure the device tree for the provided nRF52840 + ADXL355 + custom BLE service. Implement: SPI driver for accelerometer at 4 kHz, on-device 1024-p…
- Zephyr Rtos
- Ble Protocol
- Low Power Design
Embedded Systems Engineering - CodeIntermediateNew
Implement Shadow Mapping in a Toy Game Engine
Add a directional-shadow-map render pass to the engine: render the scene depth from the light's perspective into a 2K depth texture, then sample it during the main pass to atten…
- Shading And Lighting
- Gpu Pipeline
- Shadow Mapping
Open coursework - CodeIntermediateNew
Ship a Knapsack Battery Allocator for Farm Sensors
Using the device specification (device-spec), the sensing-mode table (sensing-modes), the month of simulated farm days (simulated-farm-days), and the reference greedy heuristic …
- Dynamic Programming
- Algorithm Analysis
- C Programming
Open coursework - CodeIntermediateNew
GPU-Parallel Graph Coloring for an EDA Tools Vendor
Implement Jones-Plassmann graph coloring in CUDA (or HIP if AMD hardware available). Input: a 12-million-node graph in CSR format (compressed sparse row). Output: a valid colori…
- Parallel Algorithms
- Gpu Programming
- Cuda
Parallel and Distributed Algorithms - CodeIntermediateNew
Apply the Mikado Method to Untangle a Tax-Engine Class
Starting from the live codebase (Java 17, 73 percent line coverage), write a failing test that asserts the desired end state ('TaxCalculator is decomposed into per-country strat…
- Mikado Method
- Refactoring
- Strategy Pattern
Refactoring and Code Smell Detection - CodeIntermediateNew
Code Review and Refactoring of a Legacy E-Commerce Module
You are given a codebase (Java/Spring Boot) of the order module. Perform a static analysis, document issues (e.g., god classes, tight coupling), and write a refactoring proposal…
- Code Review
- Refactoring
- Java
Software Engineering and Quality Assurance - AnalysisIntermediateNew
Open-Source License Audit and 60-Day Remediation Plan for Lumen Observability
Work only from the four items in provided_materials. Start with the dependency inventory (the 'Lumen dependency inventory' dataset), which lists every open-source package, its d…
- Oss Licensing
- Sbom
- Supply Chain
Open coursework - CodeIntermediateNew
Refactor the Untouchable ReturnsProcessor Class Safely
Start from the representative ReturnsProcessor module extract and the behavior contract supplied in the provided materials, and use the change-and-incident history to decide whe…
- Refactoring
- Mikado Method
- Characterization Testing
Open coursework - CodeIntermediateNew
Find the Dead Code Hiding in a Python Monorepo
Build a dataflow- and call-graph-based dead-code detector in Python (using libcst, or the standard ast module together with jedi) and prove it on the materials provided. Run it …
- Dataflow Analysis
- Ast
- Call Graph
Open coursework - DesignIntermediateNew
Design an Upstream Contribution to a CNCF Service-Mesh Project
Using the internal fork dossier (case-file) for the business context, the prior rejection feedback, and the targeted roadmap area, design an upstream contribution that a careful…
- Oss Contribution
- Rfc Design
- Pr Etiquette
Open coursework - CodeIntermediateNew
Edge-Inference Pipeline for a Smart-Factory Vibration Monitor
Architect a pipeline that runs on an ESP32-S3 + STM32 combo (provided): (1) sample 3-axis accelerometer at 3.2 kHz, (2) compute windowed FFT features on-device every 1s, (3) run…
- Edge Computing
- Embedded Systems
- Sensors And Actuators
Internet of Things and Cyber-Physical Systems - AnalysisIntermediateNew
Map Knowledge Diffusion Across an Open-Source Project Ecosystem
Using the de-identified contributor activity export (material 1), build a temporal contributor-project network from the recorded events, then collapse it into a contributor-to-c…
- Network Science
- Temporal Networks
- Graph Analysis
Open coursework - DesignIntermediateNew
Wireless Sensor-Network Design for a Vineyard Microclimate Study
Spec the network: 60 LoRaWAN sensor nodes + 2 gateways (TheThingsStack indoor + outdoor gateway choice), star topology with possible relays. Node hardware: ESP32 + LoRa + sensor…
- Sensor Networks
- Embedded Systems
- Lorawan
Internet of Things and Cyber-Physical Systems - AnalysisIntermediateNew
Branch Predictor Study for a Cryptocurrency Hashing Library
Profile the hot inner loop with perf record + perf annotate to identify the 5 highest-frequency branches. Measure per-branch mispredict counts using perf counters (BR_MISP_RETIR…
- Branch Prediction
- Performance Counters
- Benchmarking
Computer Architecture - CodeIntermediateNew
MinHash Similarity Sketch for a Job-Board Deduplication Pipeline
Implement a MinHash signature generator (128 permutations) over shingled job-posting text (5-gram word shingles). Build an LSH banding index (16 bands of 8 hashes each) tuned fo…
- Minhash
- Locality Sensitive Hashing
- Probabilistic Data Structures
Randomized Algorithms - CodeIntermediateNew
Build a Real-Time Draped-Cloth Simulator for an Online Fashion Showroom
Build a position-based-dynamics cloth solver and wrap it in a Three.js viewer. Starting from the provided cloth-solver starter module, implement a triangulated cloth mesh with d…
- Physically Based Simulation
- 3d Rendering
- Webgl
Open coursework - AnalysisIntermediateNew
ODE Integrator Benchmark for a Pharma PK/PD Pipeline
Use SciPy's solve_ivp + SUNDIALS (via scikit-sundae or diffeqpy) to benchmark: RK45 (baseline), LSODA, BDF (CVODE), Radau, and Rosenbrock. Run on three model classes (insulin-gl…
- Numerical Odes
- Stiff Integrators
- Scientific Python
Scientific Computing and Numerical Methods - CodeIntermediateNew
Tune a Multicore Pipeline with NUMA-Aware Sharding
Receive the current worker (Rust, around 8,000 lines, uses rayon for its parallelism), the host (2-socket AMD EPYC 9354, 64 cores total, 384GB DDR5), and a benchmark query workl…
- Parallel Performance
- Numa
- Rust
Advanced Concurrency and Parallel Computing - CodeIntermediateNew
Reservoir Sampling for a Privacy-Preserving Telemetry Pipeline
Implement Vitter's Algorithm R (and the faster Algorithm L for bonus credit) producing a 90M-event uniform sample per day from a stream of 18B. Add per-key stratification (so lo…
- Reservoir Sampling
- Randomized Algorithms
- Streaming Systems
Randomized Algorithms - CodeIntermediateNew
Port a Legacy C Image Pipeline from x86 to ARM64
Clone the 12k-line C codebase (provided). Set up an ARM64 cross-compile toolchain (clang or gcc). Identify portability issues: endianness assumptions, pointer-size casts, inline…
- C Programming
- Manual Memory Management
- Pointers
Imperative and Low-Level Programming - CodeIntermediateNew
Kill Surviving Mutants in a Travel Pricing Service
Work entirely from the provided pricing module (pricing-module) and its existing test suite (existing-tests), using the scenario facts in the briefing document (challenge-brief)…
- Mutation Testing
- Java
- Junit
Open coursework - CodeIntermediateNew
Build a Hybrid Recommendation System for an Indie Streaming Catalog
Use the provided 6-month anonymized event log (around 320M play events, 1.4M unique users in the held-out cohort), audio embeddings (256-d), and track metadata. Implement (1) an…
- Recommendation Systems
- Collaborative Filtering
- Content Based Recommendation
Data Mining and Information Retrieval - CodeIntermediateNew
Compile a C-Like Subset to WebAssembly for a Game Runtime
Using the studio runtime constraints brief, the five example scripts, and the runtime host harness declared in the provided materials, build a command-line compiler that reads o…
- Code Generation
- Webassembly
- Intermediate Representation
Open coursework - CodeIntermediateNew
Build a Variant-Calling Pipeline for a Genomics SaaS
Stand up a Nextflow pipeline covering: read trimming, BWA-MEM alignment, duplicate marking, base-quality-score recalibration, GATK HaplotypeCaller variant calling, and variant f…
- Bioinformatics
- Variant Calling
- Workflow Orchestration
Computational Biology and Health Informatics - CodeIntermediateNew
Build a 5-Stage Pipelined RISC-V Core in Verilog
Implement the 5-stage pipeline with: hazard detection unit, forwarding paths (EX/MEM to EX, MEM/WB to EX), pipeline stalls for load-use hazards, and a simple static branch-not-t…
- Pipelining
- Hazard Detection
- Verilog
Computer Architecture - DesignIntermediateNew
Design Parallel I/O for a Climate-Simulation Data Pipeline
Analyze the current I/O pattern: each MPI rank writes its own file via serial HDF5 (the classic anti-pattern). Design a single shared file using parallel HDF5 + MPI-IO with coll…
- Mpi Io
- Parallel Hdf5
- Lustre Filesystem
High-Performance and Scientific Computing - AnalysisIntermediateNew
Detect Coordinated Inauthentic Behavior on a National News Platform
Receive an anonymized 90-day export of comments (user_id, article_id, timestamp, like_count, reply_to_id) and basic user metadata (registration date, login pattern bucket). Buil…
- Network Science
- Community Detection
- Graph Analysis
Network Science and Computational Social Science - CodeIntermediateNew
Refactor a Tangled Order Aggregate at a Logistics Platform
Work in the provided Spring Boot 3 + Java 21 codebase. Identify the true aggregate roots (likely candidates: Order, Shipment, Invoice) and split the god object accordingly. Extr…
- Tactical Ddd
- Aggregate Design
- Java Refactoring
Domain-Driven Design - CodeIntermediateNew
Write a Linux Device Driver for a Custom Sensor Board
Read the SPI sensor datasheet (provided) and the existing user-space hack (around 600 lines of C). Write a Linux kernel module (target kernel 6.6 LTS) that registers a hwmon dev…
- C Programming
- Os Interfaces
- Kernel Development
Imperative and Low-Level Programming - AnalysisIntermediateNew
Diagnose a Memory-Hierarchy Bottleneck in a Trading-System Hot Path
Receive the normalizer source (around 4,000 lines of C++17), a replay harness that feeds 30 minutes of recorded market data, and host-machine specifications (Intel Xeon Gold 634…
- Memory Hierarchy
- Performance Profiling
- Perf
Computer Systems and Organization
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
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.
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.
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.
¹ Median annual salary computed from the salary histogram of 50 current Adzuna job postings for "Software Engineer" in United States, fetched May 2026. Skills come from the disciplines tagged on live Ewance challenges for this role.
Portrait: Photo by Donald Teel on Unsplash.



















































































