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¹
- CodeBeginnerNew
Build a Source-to-Source Migration Tool for a Legacy API
Use Python's libcst (concrete syntax tree library) to parse customer code while preserving formatting. For each of the 14 transformations, write a CST visitor that matches the v…
- Abstract Syntax Trees
- Source To Source Transformation
- Python
Open coursework - CodeSeniorNew
Vectorize a Risk-Calculation Engine for a Mid-Cap Bank
Receive the existing pricer (C++17, scalar, around 600 lines), 2 weeks of representative input data (around 50M paths), the validation harness, and access to an Intel Ice Lake-S…
- Vectorization
- Avx 512
- Simd
Performance Engineering of Software Systems - CodeSeniorNew
Design a Polyhedral Loop-Tiling Strategy for a Tensor DSL
Study the DSL's IR (provided, MLIR-based with linalg-style ops). Choose a tiling strategy (rectangular tiling with cost-modeled tile sizes is the safe baseline; full polyhedral …
- Polyhedral Analysis
- Loop Tiling
- Mlir
Advanced Compilers and Program Optimization - CodeSeniorNew
Scale an HPC MPI Workload Across a Multi-Node Cluster
Receive the MPI weather model (Fortran 2018 + C, ~22,000 lines), 4 weeks of strong-scaling logs (1 to 256 ranks), and access to AWS ParallelCluster with EFA-enabled c7gn instanc…
- Hpc Programming
- Mpi
- Parallel Performance
Advanced Concurrency and Parallel Computing 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
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 - 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
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 - 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 - 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.
- 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
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
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 - AnalysisSeniorNew
Memory Consistency Model Audit of a Lock-Free Queue
Read the SPSC queue source (around 200 lines of C++). For each atomic operation, classify the required ordering and verify the chosen memory_order is sufficient under both x86-T…
- Memory Consistency
- Concurrency
- Lock Free Programming
Advanced Computer Architecture 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
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 - 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 - CodeBeginnerNew
Build a Multi-Level Feedback Queue Scheduler in xv6
Fork the xv6-riscv repository and implement MLFQ in proc.c with 3 priority queues, per-queue time slices (10ms / 20ms / 40ms), priority demotion on slice exhaustion, and a 100ms…
- Operating Systems
- Scheduling
- C Programming
Operating Systems - CodeBeginnerNew
Image-Classification Model for a Quality-Control Line at a Bottling Plant
Train an image classifier on 8,000 labeled bottle images (3 defect classes + 'ok'). Use transfer learning from a pre-trained backbone (EfficientNet-B0 or MobileNetV3) — the line…
- Deep Learning
- Supervised Learning
- Ml Applications
Machine Learning (CS Elective) - AnalysisBeginnerNew
Differential Expression Pipeline for an RNA-Seq Drug Discovery Run
Build a Snakemake pipeline running: fastp trimming, salmon quantification against a provided GENCODE reference, tximport for gene-level summarization, DESeq2 differential testin…
- Bioinformatics
- Computational Genomics
- Differential Expression
Open coursework - CodeBeginnerNew
Refactor a Legacy Reporting Script for a Renewable-Energy Startup
Read the existing script and identify 5-7 distinct responsibilities tangled together. Refactor into 3 layers: data loaders (CSV, REST API), transformers (pure functions over row…
- Abstraction
- Higher Order Functions
- Refactoring
Programming Abstractions - CodeBeginnerNew
Implement Async Message-Passing for an IoT Gateway
Receive the current gateway source (Python 3.11, single-threaded paho-mqtt client + a serial HTTP forwarder, ~1,100 lines), a sensor-simulator that fans out 500 mock sensors at …
- Async Programming
- Message Passing
- Asyncio
Concurrent and Parallel Programming - CodeBeginnerNew
Model a Trading Order Book with Algebraic Data Types in Haskell
Design ADTs for Side (Buy | Sell), OrderType (Limit | Market | StopLimit), Order, Trade, and BookState. Make illegal states unrepresentable (e.g. a Match can never produce a neg…
- Haskell
- Algebraic Data Types
- Property Based Testing
Functional Programming - CodeBeginnerNew
Apply Property-Based Testing to a Currency-Conversion Module
Rewrite the conversion module in F#: use units of measure for currency types, immutable value types for amounts, no floating-point arithmetic (Decimal only). Build property test…
- Fsharp
- Property Based Testing
- Fscheck
Functional Programming - 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 - CodeSeniorNew
Cache-Optimize a Graph-Analytics Kernel for a Social Platform
Receive the existing kernel (C++ + OpenMP, around 1,200 lines), the 1.8B-edge graph (CSR format, around 14GB), and target hardware (dual-socket AMD EPYC 9354, 384GB DDR5, 256MB …
- Cache Optimization
- Graph Algorithms
- Memory Hierarchy
Performance Engineering of Software Systems - AnalysisSeniorNew
Diagnose Clock Skew in a HFT Order Matching System
Receive anonymized PTP grandmaster + slave logs (nanosecond resolution, 30 days, 3 cabinets) plus a synthetic order-flow generator. Identify the drift pattern (likely candidate:…
- Logical Clocks
- Ptp Time Sync
- Cpp Programming
Open coursework - CodeBeginnerNew
Implement a User-Space Shell with Process and Signal Handling
Implement a shell in C (no shell helpers, just POSIX system calls). Required features: read a line, parse it into commands + arguments, handle pipelines with arbitrary chain len…
- System Calls
- Process Management
- Signal Handling
Computer Systems and Organization - 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 - CodeSeniorNew
Port a CPU Monte-Carlo Simulator to GPU for an Energy Trader
Receive the existing simulator (C++17 + OpenMP, around 5,000 lines), the test book (around 8,000 spread options), and access to an H100 80GB. Port to CUDA: random-number generat…
- Gpu Programming
- Cuda
- Monte Carlo
Advanced Concurrency and Parallel Computing - StrategyBeginnerNew
REST API Versioning Strategy for a 4-Year-Old Public API
Pick a versioning scheme (URI path vs header-based) and justify it against integrator behavior. Define the deprecation lifecycle: announce → deprecate → sunset, with concrete ti…
- REST API Design
- API Versioning
- Openapi
Engineering Software as a Service - 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
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 - AnalysisSeniorNew
Diagnose a Hard-Real-Time Failure in an Automotive ECU
Receive anonymized AUTOSAR runnable + task traces (CSV + Vector CANalyzer .blf), 8 hours covering 3 failure events. Identify timing budget per task and runnable. Reproduce on th…
- Autosar
- Real Time Debugging
- Can Bus Analysis
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 - CodeBeginnerNew
Refactor a Tangled Java Pricing Engine With Design Patterns
Start from a provided Java 21 codebase with the legacy PricingEngine class, 38 example fixtures (input cart, expected price), and one failing test demonstrating a bug from last …
- Java
- Design Patterns
- Refactoring
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 - CodeBeginnerNew
Implement a Distance-Vector Routing Algorithm
Implement distance-vector routing in Python: each simulated router maintains a distance vector, exchanges vectors with neighbors every 1 second of simulated time, and updates it…
- Routing
- Distance Vector
- Network Simulation
Open coursework - 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 - CodeBeginnerNew
Reverse-Engineer a Stripped Binary to Restore Linking Symbols
Receive the stripped shared object (Linux ELF, x86-64, ~280KB), a crash dump with 12 frames of indecipherable addresses, and 4 years of partial git history with some related (bu…
- Reverse Engineering
- Linking And Loading
- Machine Code
Open coursework - CodeBeginnerNew
Add a Test Harness to an Untested Open-Source CLI
Fork the repo (test mirror provided), set up Vitest with coverage and a CI workflow that fails under 75 percent on the targeted modules. Write characterization tests first (asse…
- Unit Testing
- Integration Testing
- Test Coverage
Software Construction - 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
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 - CodeBeginnerNew
Responsive Web Redesign for SaaS Scale-up
You are to redesign the TaskFlow website's homepage, pricing page, and a new 'Enterprise' landing page. The redesign must be responsive (mobile-first) and built with HTML/CSS/JS…
- Html
- Css
- Javascript
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
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 - DesignBeginnerNew
Design a Sequential Vending-Machine Controller in VHDL
Design an FSM that accepts 10c, 20c, 50c, EUR 1 coins, supports 4 products priced EUR 1.20-1.80, dispenses the selected product when paid, returns change, handles cancel. Choose…
- Vhdl
- Fsm Design
- Sequential Circuits
Open coursework - 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 - 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
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 - CodeSeniorNew
GPU-Accelerated Numerical Optimization for Portfolio Construction
Implement a primal-dual interior-point solver for box-constrained QP in CUDA. Use cuSPARSE for sparse matrix-vector multiply and cuSOLVER for the inner Newton system. Benchmark …
- Numerical Optimization
- Interior Point Method
- Cuda
Scientific Computing and Numerical Methods - 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 - CodeBeginnerNew
Build a Plugin-Based Notification Framework With Observer + Factory
Implement, in Java 21: an EventBus that supports typed subscriptions, a NotificationChannel interface with concrete subtypes (Push, Email, InApp, SMS), an AbstractChannelFactory…
- Java
- Design Patterns
- Oo Design
Object-Oriented Programming and Design - 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
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 - AnalysisBeginnerNew
Diagnose a Deadlock in a Multi-Threaded File Indexer
Clone the indexer repo (provided), set up reproduction with thread-sanitizer and helgrind, and produce a deterministic deadlock test case in under 5 minutes of runtime. Diagnose…
- Synchronization
- Deadlock Analysis
- C Programming
Operating Systems - CodeBeginnerNew
Issue Triage Bot for a Popular Eclipse Foundation Project
Read the project's existing labels, issue templates, and last 800 issues. Build a Go (or Python) GitHub Action that runs on issue_opened and issue_edited events. Implement heuri…
- Issue Triage
- Oss Contribution
- Github Actions
Open coursework - CodeSeniorNew
Physically-Based Path Tracer for a Product Visualization Studio
Build a path tracer in C++ with: ray-triangle and ray-sphere intersection on a BVH (bounding volume hierarchy), Lambertian diffuse and Cook-Torrance GGX specular BRDFs, multiple…
- Physically Based Rendering
- Path Tracing
- Shading And Lighting
Advanced Computer Graphics - CodeBeginnerNew
Apply SOLID to a Java Reporting Service for a Renewable Energy Startup
Receive the legacy ReportService, 4 sample report templates (Daily Output, Monthly P&L, Annual Availability, Curtailment), and 22 fixtures (input dataset, expected report). Refa…
- Java
- Solid Principles
- Refactoring
Object-Oriented Programming and Design - 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 - CodeBeginnerNew
Characterization Tests for an Untested Pricing Engine
Drive the pricing engine with around 800 representative input vectors generated from anonymized production quotes (provided). For each vector, capture the current output as the …
- Characterization Tests
- Approval Testing
- Legacy Code
Refactoring and Code Smell Detection - CodeBeginnerNew
Design a Domain Model for a Library Loan System (Java)
Implement, in Java 21, an Item type hierarchy (Book, AudioBook, Periodical, EquipmentLoan — each with sub-type-specific rules), Member with eligibility logic, Loan as an aggrega…
- Java
- Oo Design
- Domain Modeling
Object-Oriented Programming and Design - CodeSeniorNew
Real-Time Global Illumination for an Indie Game
Survey 3 candidate GI techniques: voxel cone tracing (VXGI-style), screen-space GI (SSGI), and irradiance probe volumes. Pick one and justify based on quality/perf trade-offs fo…
- Physically Based Rendering
- Global Illumination
- Gpu Pipeline
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
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.



















































































