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 Or Javascript
Compiler Construction - 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
Shortest-Path Routing for a Bike-Share Operator
Receive the graph (nodes with lat/lon/elevation, edges with length and slope) and 50 origin-destination test pairs. Implement Dijkstra's algorithm with a custom edge-weight func…
- Graph Algorithms
- Dijkstra
- Algorithm Analysis
Algorithm Design and Analysis - 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 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
Build a Search-Based Logistics Router for a Same-Day Delivery Service
Build a Python service exposing /route that takes (courier_location, list_of_stops, traffic_window) and returns an ordered route. Implement 2 search strategies: A* (with a domai…
- Search Algorithms
- Intelligent Agents
- Python Or Javascript
Introduction to Artificial Intelligence (CS Elective) - 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 - 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 - 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…
- Python Or Javascript
- Design Patterns
- Oo Design
Object-Oriented Programming and Design - 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
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
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
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) - 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 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
- CodeBeginnerNew
Build a UART Receiver and Loopback on FPGA for an Industrial Sensor Hub
Design a UART receiver in Verilog with 16x oversampling, configurable baud divisor, start-bit detection, 8N1 framing, framing-error flag. Pair with a minimal transmitter for the…
- Verilog
- Uart
- Fpga
Digital Systems Design - 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
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…
- Systems Language Proficiency (Go, Rust, C++)
- Inheritance
- Polymorphism
Object-Oriented Programming and Design - 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 …
- Python Or Javascript
- Design Patterns
- Refactoring
Object-Oriented Programming and Design - DesignBeginnerNew
Mobile App for Lagos D2C Cosmetics Brand
You are tasked with designing and prototyping an Android app for GlowLagos. The app must include a product catalog with search and filter, product detail pages with ingredient l…
- Android Design
- Ui Ux
- Figma
Web and Mobile Application Development - 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
Intelligent Agent for a Smart-Thermostat Pricing-Aware Schedule
Design an intelligent agent with: perception (read sensor history), basic learning (cluster comfort intervals from 7 days of observations), decision-making (schedule heating to …
- Intelligent Agents
- Basic Learning
- Python Or Javascript
Introduction to Artificial Intelligence (CS Elective) - CodeBeginnerNew
Greedy Algorithm for Delivery-Slot Assignment
Receive 14 days of order data (around 4,800 orders) with timestamps, addresses (already geocoded), and slot preferences, plus rider rosters with shift starts, ends, and max work…
- Greedy Algorithms
- Algorithm Analysis
- Python Or Javascript
Algorithm Design and Analysis - ResearchBeginnerNew
NP-Completeness Investigation of a Scheduling Feature Request
Read the feature spec (around 30 vets per clinic, around 10 rooms, around 200 appointments per day, vet-skill constraints, room-equipment constraints, customer-time preferences)…
- Np Completeness
- Complexity Theory
- Algorithm Analysis
Algorithm Design and Analysis - 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…
- Python Or Javascript
- Oo Design
- Domain Modeling
Object-Oriented Programming and Design - AnalysisBeginnerNew
Cluster a Mid-Market SaaS Customer Base for Account-Tier Re-segmentation
Pull 12 months of usage signals from the warehouse: feature adoption depth, session frequency, integration counts, ticket volume, NPS (Net Promoter Score), seat utilization. Sta…
- Clustering
- K Means
- Hdbscan
Data Mining and Information Retrieval - CodeBeginnerNew
Replace Raw Pointers with Smart Pointers in a Game-Engine Module
Audit the 18k-line module for raw-pointer ownership patterns (owning, borrowing, shared). Refactor in 4 phases: (1) introduce unique_ptr for clearly-owning sites, (2) shared_ptr…
- Cpp Programming
- Manual Memory Management
- Pointers
Imperative and Low-Level Programming - 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 - ResearchBeginnerNew
Survey Information-Retrieval Research for an AdTech Platform's Roadmap
Build a reading list of 30-40 papers spanning SIGIR, RecSys, KDD, WSDM, and arXiv from 2023-2025 across (a) dense retrieval architectures, (b) learning-to-rank with click feedba…
- Information Retrieval
- Learning To Rank
- Research Synthesis
Data Mining and Information Retrieval - 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 - CodeBeginnerNew
Build a DSL for Insurance-Policy Rules in OCaml
Design a small DSL covering: variables (insured amount, premium, deductible, named perils), expressions (arithmetic, conditionals, lookups against external tables like CRESTA zo…
- Ocaml
- Domain Specific Languages
- Parser Combinators
Functional Programming - 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
Add Constant Folding and Dead Code Elimination to a Toy Compiler
Fork the repo, read the IR specification (3-address code, register-based, documented in /docs/ir.md). Implement constant folding as an IR-to-IR pass: any operation on literal op…
- Intermediate Representation
- Constant Folding
- Dead Code Elimination
Compiler Construction - CodeBeginnerNew
Build an End-to-End Test Suite for a Checkout Flow
Inventory the last 6 months of production checkout incidents (anonymized export provided). Pick the top 7 user journeys (1 happy path + 6 highest-incident edge cases) and write …
- End To End Testing
- Playwright
- Ci Cd
Software Testing and Quality Assurance - 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 Source Contribution and Maintainership - CodeBeginnerNew
Implement an Expression Evaluator Using Recursion and Higher-Order Functions
Implement in Python (or TypeScript). Build a tokenizer, a recursive-descent parser producing an abstract syntax tree (AST), and a tree-walking evaluator. Use higher-order functi…
- Recursion
- Higher Order Functions
- Parsing
Programming Abstractions - 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
- Html & Css
- Python Or Javascript
Web and Mobile Application Development - 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
Build a Software Rasterizer for a Teaching Engine
Implement a software rasterizer in C++: vector and matrix math (3D and 4D), model/view/projection transforms, viewport mapping, triangle setup, edge-function rasterization with …
- Rasterization
- Geometric Transformations
- 3d Rendering
Introduction to Computer Graphics - 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
Build a Lexer and Parser for a Domain Query Language
Take the 1-page grammar sketch and the 12,000-query corpus (anonymized). Hand-write a lexer that emits tokens with source positions (line and column). Build a recursive-descent …
- Lexing
- Recursive Descent Parsing
- Abstract Syntax Trees
Compiler Construction - 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…
- Python Or Javascript
- Solid Principles
- 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 - 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 - AnalysisBeginnerNew
Model a City Bike-Share Network as a Graph for Rebalancing
Build a directed weighted graph with stations as nodes and edges as aggregated trip volume over rolling windows. Compute (a) betweenness centrality to find high-traffic stations…
- Graphs
- Networkx
- Shortest Path
Data Structures
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.



















































































