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
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
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
Mesh Simplification Pipeline for a 3D-Scan-to-Web Tool
Implement quadric-error-metric (QEM) mesh simplification with UV-attribute preservation: per-vertex 4x4 error quadrics that include a position term and a UV-distortion term, edg…
- Geometry Processing
- Mesh Simplification
- 3d Rendering
Advanced Computer Graphics - 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 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
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
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 - AnalysisIntermediateNew
Amortized-Analysis Investigation of a Production Cache
Read the C++ cache source (around 1,800 lines, custom open-addressing with periodic resize-and-rehash). Perform amortized analysis using all three methods (aggregate, accounting…
- Amortized Analysis
- Functions & Data Structures
- Algorithm Analysis
Advanced Algorithms - AnalysisIntermediateNew
Frequent-Itemset Mining on a Grocery Retailer's Basket History
Load 18 months of basket-level transaction data (Parquet, around 92 GB) into a Spark cluster. Run FP-growth at support thresholds tuned per category (food vs household vs fresh)…
- Frequent Itemset Mining
- Fp Growth
- Apache Spark
Data Mining and Information Retrieval - 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
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
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
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
High-Performance and Scientific Computing 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
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 - AnalysisIntermediateNew
Spectral Clustering for Customer Segmentation at a SaaS
Receive a 12,000 customer × 220 feature usage matrix (counts per feature per week, averaged over 12 weeks). Construct a similarity graph (k-nearest-neighbors with k=15, Gaussian…
- Spectral Methods
- Linear Algebra
- Algorithm Analysis
Advanced Algorithms - 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 - AnalysisIntermediateNew
OSS License Audit and Remediation Plan for a Series-B Dev-Tools Startup
Receive an SBOM (Software Bill of Materials) from the build pipeline (CycloneDX JSON) for 14 services and 3 SDKs. Run automated classification (Syft + ScanCode or FOSSA), then m…
- Oss Licensing
- Sbom
- Supply Chain Optimization
Open Source Contribution and Maintainership - 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
Introduction to Computer Graphics - 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
- Systems Language Proficiency (Go, Rust, C++)
Advanced Concurrency and Parallel Computing - 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
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 - DesignIntermediateNew
Design a Small Domain-Specific Language for Invoice Rules
Design a DSL grammar (BNF) covering: boolean conditions (and / or / not), comparison operators, customer-attribute references, line-attribute references, and action expressions …
- Abstraction
- Recursion
- Domain Specific Language
Programming Abstractions - 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
Mutation Testing on a Critical Pricing Service
Run PIT against the pricing service to get a baseline mutation score per class. Identify the 5 classes with the largest gap between line coverage and mutation score (these are t…
- Mutation Testing
- Python Or Javascript
- Junit
Software Testing and Quality Assurance - 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
High-Performance and Scientific Computing - 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 - CodeIntermediateNew
Refactor a Reckless Inadvertent Debt Hotspot
Read the class + git blame to map its responsibilities. Write characterization tests (using approval testing) until you can change behaviour without surprise — target at least 7…
- Refactoring
- Mikado Method
- Characterization Testing
Technical Debt Management - 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
- Python Or Javascript
Software Engineering and Quality Assurance - 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 - 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
Empirical Study of PR Review Throughput on a Mid-Sized Monorepo
Pull 8 weeks of PR data from the monorepo (~3,800 PRs across 12 teams) covering open-to-merge time, review-comment count, review-round count, reviewer count, lines changed, and …
- Empirical Software Engineering
- Software Analytics
- Statistical Analysis
Advanced Software Engineering - 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
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
Embedded Systems Engineering - 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
Cloth Simulation for an Online Fashion Retailer
Implement a PBD cloth solver: triangulated cloth mesh, distance and bending constraints, gravity, simple wind force, and sphere collision against a mannequin. Use 4 substeps per…
- Physically Based Simulation
- 3d Rendering
- Webgl
Advanced Computer Graphics - CodeIntermediateNew
Dynamic Programming for an IoT Battery Allocator
Read the device spec (32 KB RAM, 200 mAh daily budget, 9 sensing modes with mAh cost and farmer-value scores) and formulate the daily allocation as a 0/1 knapsack DP (dynamic pr…
- Dynamic Programming
- Algorithm Analysis
- C Programming
Algorithm Design and Analysis - 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
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
Upstream a Strategic Patch to a Major CNCF Project
Pick a published roadmap area on the chosen project (instructor will sanity-check the choice). Read the project's CONTRIBUTING.md, RFC template, governance model, and the 3 most…
- Oss Contribution
- Rfc Design
- Pr Etiquette
Open Source Contribution and Maintainership - AnalysisIntermediateNew
Sparse Linear Solver for a Finite-Element Crash Sim
Use PETSc (or Eigen's IterativeLinearSolvers + a custom AMG) to benchmark: (1) GMRES + ILU(0), (2) GMRES + AMG (BoomerAMG), (3) BiCGStab + ILU(0), (4) BiCGStab + AMG, on three m…
- Sparse Linear Algebra
- Krylov Methods
- Preconditioning
Scientific Computing and Numerical Methods - ResearchIntermediateNew
Map Knowledge Diffusion in a Global Open-Source Ecosystem
Pull (or use a provided anonymized export of) the last 24 months of commit + PR + issue data for 60 projects in the foundation's portfolio. Build a temporal contributor-project …
- Network Science
- Temporal Networks
- Graph Analysis
Network Science and Computational Social Science - 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 - 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 - 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
FFT-Based Acoustic Beamforming on Streaming Microphone Arrays
Implement overlap-add streaming FFT (FFTW or KissFFT) processing 64 channels × 1024-sample frames with 50 percent overlap. Apply delay-and-sum beamforming across a 2D direction-…
- Fft
- Signal Processing
- Beamforming
Scientific Computing and Numerical Methods - ResearchIntermediateNew
Computational Newsroom: Analyze Crisis Information Flow on Social Platforms
Receive an anonymized 72-hour dataset of posts, reposts, quotes, and replies (10M events) tagged to the public-health alert. Build a temporal repost-and-reply network at minute …
- Computational Journalism
- Temporal Networks
- Network Science
Network Science and Computational Social Science - CodeIntermediateNew
Index a Genomics Dataset with a Suffix Array for Read Matching
Implement a suffix array over a 720 MB DNA sequence (4-character alphabet) using DC3 (Difference Cover modulo 3) or SA-IS construction in Rust. Build pattern-matching utilities …
- Suffix Arrays
- String Algorithms
- Systems Language Proficiency (Go, Rust, C++)
Data Structures - 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
Compile a Subset of C to WebAssembly
Define a documented C subset: int and bool types, locals, if/else, while, function calls, return. Build a compiler in any host language (TypeScript or Rust preferred) that produ…
- Code Generation
- Webassembly
- Intermediate Representation
Compiler Construction - CodeIntermediateNew
Build a Dataflow-Based Dead-Code Detector for a Python Monorepo
Build a Python tool using libcst (or ast + jedi) that constructs a call graph across the monorepo. Account for indirect references (entry points in setup.py / pyproject.toml, dy…
- Dataflow Analysis
- Ast
- Call Graph
Program Analysis - 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 Or Javascript
Introduction to Artificial Intelligence (CS Elective) - CodeIntermediateNew
Java EE Backend for Sustainable Fashion Marketplace
You are to build a RESTful API for EcoThreads using Java EE (Servlets, JPA, and MySQL). The API must support CRUD operations for products (with categories, sustainability rating…
- Java Ee
- REST API Design
- Jpa
Web and Mobile Application Development - 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 - 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
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
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.



















































































