School of Scientific Computing & Informatics · Algorithms & software engineering

High-Performance Scientific Programming: C++, Rust & WebAssembly

When a Python analysis takes days, a well-written kernel in a compiled language can take minutes. This course teaches when and how to write high-performance code for science, and how to call it from Python or run it in a browser.

Dry labAdvancedUp to 4 weeks · 32 hours live · customisableCertificate with verification ID
A workflow as a directed acyclic graph, in nf-core process naming: every step is versioned, containerised and re-runnable.

Course overview

High-Performance Scientific Programming starts with measurement: profiling to find the real bottleneck, and the memory and cache behaviour that dominate modern performance. It then teaches C++ and Rust for numerical kernels, safe concurrency, and vectorisation.

You bind your kernels to Python, compare them with NumPy and Numba, take a first look at GPU programming, and compile a kernel to WebAssembly so it runs privately in a web browser, the approach used by the Nayancode studios.

LevelAdvanced
DisciplineDry lab
DurationUp to 4 weeks · customisable
Guided hours32 h
FormatsLive online cohort · Self-paced online
Fee from₹5,999 + GST

Learning outcomes

By the end of the course you will be able to:

  1. Profile code and identify compute, memory and I/O bottlenecks
  2. Write numerical kernels in modern C++ and Rust
  3. Parallelise with threads and use SIMD-friendly data layouts
  4. Expose compiled code to Python with pybind11 or PyO3
  5. Compile kernels to WebAssembly and run them in Web Workers

Skills you will practise

ProfilingModern C++RustParallelismpybind11 and PyO3WebAssembly

Eligibility and prerequisites

Who can apply

  • Students and graduates in any science, engineering, pharmacy, medicine, agriculture, geography or computing programme (B.Sc., B.Tech., B.E., BCA, M.Sc., M.Tech., MCA, PhD)
  • Researchers, faculty and working professionals in research, healthcare, biotech, pharma or IT who want to apply computing to science
  • Final-year students may apply before their results are declared

Prerequisites

  • Solid programming in Python or another language
  • Algorithms for Bioinformatics or equivalent

Best suited to

  • Computational scientists whose analyses are too slow
  • Engineers building scientific tools
  • Students aiming at research-software or bio-IT engineering roles

Module-wise syllabus

6 modules. Each pairs instructor-led sessions with a hands-on lab on public data.

Topics

  • Profilers and benchmarks
  • Memory hierarchy and caches
  • Algorithmic versus constant-factor gains
Lab 1Profile a slow k-mer counter and locate its real bottleneck.

Topics

  • Modern C++ essentials
  • Containers and data layout
  • Build systems with CMake
Lab 2Rewrite the k-mer counter in C++ and measure the speed-up.

Topics

  • Ownership and borrowing
  • Iterators and zero-cost abstractions
  • Rayon for data parallelism
Lab 3Implement the same kernel in Rust and parallelise it safely with Rayon.

Topics

  • pybind11 and PyO3
  • Numba as an alternative
  • Introduction to GPU kernels
Lab 4Call your compiled kernel from Python and compare it with NumPy and Numba.

Topics

  • WebAssembly and wasm-pack
  • Web Workers
  • Memory limits and streaming
Lab 5Compile the kernel to WebAssembly and run it on a user-supplied file in the browser.

Topics

  • Baseline
  • Optimisation
  • Benchmark report
Lab 6Take a slow scientific computation, optimise it, and publish a benchmark with correctness checks.

Practical sessions and projects

Capstone project

Make a tool ten times faster

Profile and optimise a real scientific computation, prove that the results are unchanged, and publish the benchmark.

Assessed on the correctness of the analysis, the quality of the code and the reasoning in the write-up. A pass is required for the certificate.

  1. Measuring performance

    Profile a slow k-mer counter and locate its real bottleneck.

  2. C++ for numerical code

    Rewrite the k-mer counter in C++ and measure the speed-up.

  3. Rust for safe speed

    Implement the same kernel in Rust and parallelise it safely with Rayon.

  4. Bindings and accelerators

    Call your compiled kernel from Python and compare it with NumPy and Numba.

  5. Science in the browser

    Compile the kernel to WebAssembly and run it on a user-supplied file in the browser.

  6. Project: speed up a real tool

    Take a slow scientific computation, optimise it, and publish a benchmark with correctness checks.

Software, tools and datasets

Software and tools

C++17/20CMakeRustRayonpybind11PyO3Numbawasm-packperf

All software is free and open source or free for academic use. Recommended computer: 8 GB RAM, 30 GB free disk, Linux, macOS or Windows with WSL2.

Datasets

  • Sequencing reads and genomes: Realistic performance workloads.NCBI SRA and RefSeq

Core reading

  • Klabnik S, Nichols C. The Rust Programming Language. No Starch Press (also free online).
  • Haas A et al. (2017). Bringing the web up to speed with WebAssembly. PLDI ’17.

Duration, format and fees

Flexible duration. Duration is customisable: take the standard schedule (4 weeks at most), an intensive 1–2 week schedule or weekends only. Colleges and teams can set their own timetable.
Next cohort
Dates are sent with your admission offer
Timetable
Three evening or weekend sessions a week (IST), plus a lab clinic; intensive and weekend-only schedules on request
Payment
Secure online payment link with your admission offer (UPI, cards, net banking). Instalments on request for fees above ₹15,000.

Instructor

The instructor for each cohort is named in your admission offer and on this page when the cohort is announced. Vedicgen instructors are selected for hands-on research or industry experience in the subject they teach, and every course is reviewed by a second subject expert.

Questions about who teaches a cohort? [email protected]

Certificate

Learners who complete the course and pass its capstone receive a Vedicgen certificate of completion for High-Performance Scientific Programming: C++, Rust & WebAssembly, issued by Vivofold, stating the guided hours and skills assessed. Each certificate has a unique ID and QR code that anyone can check.

Verify a certificate

Certificate of completionSample
High-Performance Scientific Programming: C++, Rust & WebAssemblyAwarded to the learner named on the certificate · 32 hours
ID · VG-XXXX-XXXXVivofold Vedicgen

Apply for High-Performance Scientific Programming: C++, Rust & WebAssembly

  1. Apply

    Send the form below. It takes about five minutes.

  2. Review

    An adviser confirms your fit and format within two working days.

  3. Offer

    You receive dates, timetable and a secure payment link.

  4. Onboard

    Set-up guide, pre-reading and joining links.

About you

Education

Programme

Your goalsA few lines help us advise you well.

0/40+ characters
Sent securely to [email protected]. Your details are used only to process this request.

Frequently asked questions

In the live cohort, modules are taught in instructor-led sessions with a weekly lab clinic where you work on real public data with help at hand; every session is recorded. The self-paced format uses the same lessons, labs and datasets with mentor review of your capstone. Both formats end with an assessed project reviewed for the code and the science.

A laptop with at least 8 GB of RAM and about 30 GB of free disk space, running Linux, macOS, or Windows with WSL2. A C++ compiler and the Rust toolchain are installed in the first session. Installation instructions are sent before the first session, and lab clinics help with any set-up problems.

Yes. Learners who complete the course and pass its assessment receive a Vedicgen certificate of completion, issued by Vivofold. Every certificate carries a unique ID and a QR code that anyone, including an employer or admissions office, can check on the certificate verification page.

Apply with the form on this page. Live and in-person cohorts run through the year; the dates, timetable and joining details of the next cohort are sent with your admission offer and listed on this page once announced. Self-paced enrolment opens as soon as your application is accepted.

Yes. No course runs longer than four weeks, and the length is customisable: choose the standard schedule, an intensive one- to two-week schedule, weekends only, or a custom timetable. Pick your preference on the application form; colleges and teams can book their own dates.