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¹
- AnalysisBeginnerNew
Is the Optimal Vet-Scheduling Feature Computationally Tractable?
Working only from the materials provided — the product feature specification, the de-identified internal record of the customer request, a representative one-day appointment dat…
- Np Completeness
- Complexity Theory
- Algorithm Analysis
Open coursework - 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
Computer Networks - AnalysisBeginnerNew
Model Bogotá's Bike-Share Network as a Graph for Overnight Rebalancing
Using only the supplied station directory, the aggregated origin-to-destination trip table, and the operations brief, build a directed weighted graph where each station is a nod…
- Graphs
- Networkx
- Shortest Path
Open coursework - 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 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
- 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 - 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
Design and Implement a C++ Telemetry Aggregator With Inheritance
Implement a TelemetrySource abstract base class with virtual sample() and timestamp() methods, 6 concrete subclasses (one per sensor family), and a TelemetryBus that polymorphic…
- Cpp
- Inheritance
- Polymorphism
Object-Oriented Programming and Design - CodeBeginnerNew
Convert an Imperative Recommendation Service to Pure Functional Style
Take the Python ranking module (around 900 lines). Identify side-effects (DB reads, cache lookups, logging, time) and lift them to the boundary. Rewrite the ranking core in Scal…
- Scala Programming
- Pure Functions
- Functional Core Imperative Shell
Functional Programming - 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.
- 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
Build a Safe Expression Evaluator for a Math-Learning App
Working only from the materials provided, build a self-contained expression evaluator in Python (TypeScript is acceptable if you mirror the same structure) that never calls eval…
- Recursion
- Higher Order Functions
- Parsing
Open coursework - 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 - 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 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
- DesignBeginnerNew
Greedy Delivery-Slot Assignment for a Munich Grocery Startup
Using the provided order history sample, rider roster, and manual dispatch baseline, design and implement a greedy slot-assignment algorithm in Python. The algorithm must (1) so…
- Greedy Algorithms
- Algorithm Analysis
- Python
Open coursework - CodeBeginnerNew
Build a Readable Rules Language for Insurance Policies in OCaml
Design a small domain-specific language that covers the building blocks of policy rules: variables (insured amount, premium, deductible, named perils), expressions (arithmetic, …
- Ocaml
- Domain Specific Languages
- Parser Combinators
Open coursework - DesignBeginnerNew
Add Constant Folding and Dead Code Elimination to a Teaching Compiler
Using the provided intermediate-representation specification, design and propose constant folding and dead code elimination as two intermediate-representation-to-intermediate-re…
- Intermediate Representation
- Constant Folding
- Dead Code Elimination
Open coursework - CodeBeginnerNew
Case File: Smart-Pointer Refactor of a Game-Engine Module
Work only from the four supplied items: the representative entity-component-system module slice, the before-refactor heaptrack leak readout, the de-identified incident log, and …
- Cpp Programming
- Manual Memory Management
- Pointers
Open coursework - DesignBeginnerNew
Design a Verified UART Receiver and Loopback for an FPGA Sensor Hub
Propose and deliver a UART receiver for Helax's sensor hub that meets the functional requirements in the requirements brief (the 'uart-requirements-brief' material): 16-times ov…
- Verilog
- Uart
- Fpga
Open coursework - CodeBeginnerNew
Build a CPU-Only Teaching Rasterizer in C++
Using the provided test-scene model file and the reference render image, implement a software rasterizer in C++ that runs only on the central processor. Build the supporting mat…
- Rasterization
- Geometric Transformations
- 3d Rendering
Open coursework - DesignBeginnerNew
Design a Lexer and Parser for a Customer Query Language
Using the grammar sketch, the query corpus sample, the Abstract Syntax Tree schema, and the edge-case suite provided to you, write a design proposal for a new lexer and parser t…
- Lexing
- Recursive Descent Parsing
- Abstract Syntax Trees
Open coursework
CodeBeginnerNewBuild a Pricing-Aware Scheduling Agent for Smart Thermostats
Using only the materials provided, build an intelligent agent with four working parts: perception (read the sensor history), learning (cluster each household's comfort intervals…
- Intelligent Agents
- Basic Learning
- Python 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 - 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 - 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
Object-Oriented Programming and Design - CodeBeginnerNew
Full-Stack Prototype: Event Ticketing Platform with QR Validation
Build a web application using any modern stack (Next.js recommended, but React + Express, Django, or Rails are acceptable). Required features: (1) Event listing page with title,…
- Web Development
- Object Oriented Programming
- User Experience Design
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
Digital Systems Design - 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
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 - CodeBeginnerNew
Apply SOLID Principles to a Notifications Subsystem
Read Notifier and the last 6 months of incidents touching it. Write a 4-page design document mapping each of the 5 SOLID principles to a specific change in the subsystem (Single…
- Solid Principles
- Design Patterns
- Refactoring
Software Design and Design Patterns - AnalysisBeginnerNew
Re-segment a SaaS Customer Base by How Accounts Actually Use the Product
Using the provided usage signals dataset, engineer features that capture how deeply and how often accounts use the product (not just raw volume), standardize them, and run at le…
- Clustering
- K Means
- Hdbscan
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
Computer Systems and Organization - 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 - DesignBeginnerNew
Design a Playwright Checkout Test Suite That Blocks Bad Merges
Using the checkout incident export, identify the single most valuable happy path plus the six edge cases tied to the most frequent and most severe past incidents (for example fa…
- End To End Testing
- Playwright
- Ci Cd
Open coursework - 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) - ResearchBeginnerNew
Research Roadmap for Meridian DSP's Bid-Matching Pipeline
Using the VP of Machine Learning's context memo (vp-brief) and the pipeline case file (pipeline-case-file) to ground every recommendation in Meridian's actual system, assemble a…
- Information Retrieval
- Learning To Rank
- Research Synthesis
Open coursework
CodeBeginnerNewBuild a Search-Based Delivery Router for a Madrid Grocery Startup
Build a Python service that exposes a single /route endpoint. It accepts a courier's starting location, a list of delivery stops, and a traffic window, and returns the stops in …
- Search Algorithms
- Intelligent Agents
- Python Programming
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 - 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
Computational Biology and Health Informatics - CodeBeginnerNew
Design an Effort-Aware Bike Routing Feature for Lisbon
Working only from the provided materials — the Lisbon street-graph edges (lisbon-bike-graph), the matching node coordinates and elevations (lisbon-graph-nodes), the 50 origin-de…
- Graph Algorithms
- Dijkstra
- Algorithm Analysis
Open coursework - 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
Compiler Construction - 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 - DesignBeginnerNew
Design an Android Shopping App for GlowLagos Cosmetics
Design and prototype an Android shopping app for GlowLagos using the provided brand kit (GlowLagos Brand & Content Kit) and the provided sample product catalog (GlowLagos Sample…
- Android Design
- Ui Ux
- Figma
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
Web and Mobile Application Development - 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
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.



















































































