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¹
- 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 - 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 - 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
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 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
- 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
Open coursework - 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
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 - 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 - 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
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
Open coursework - 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
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 - 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
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
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 - 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
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 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
Open coursework - 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 - 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
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
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 - 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 - 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
Open coursework - 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 - 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
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 - 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 - 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
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 - 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
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
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 - 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
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
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
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
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.



















































































