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.
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.
Learning outcomes
By the end of the course you will be able to:
- Profile code and identify compute, memory and I/O bottlenecks
- Write numerical kernels in modern C++ and Rust
- Parallelise with threads and use SIMD-friendly data layouts
- Expose compiled code to Python with pybind11 or PyO3
- Compile kernels to WebAssembly and run them in Web Workers
Skills you will practise
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
Topics
- Modern C++ essentials
- Containers and data layout
- Build systems with CMake
Topics
- Ownership and borrowing
- Iterators and zero-cost abstractions
- Rayon for data parallelism
Topics
- pybind11 and PyO3
- Numba as an alternative
- Introduction to GPU kernels
Topics
- WebAssembly and wasm-pack
- Web Workers
- Memory limits and streaming
Topics
- Baseline
- Optimisation
- Benchmark report
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.
- Measuring performance
Profile a slow k-mer counter and locate its real bottleneck.
- C++ for numerical code
Rewrite the k-mer counter in C++ and measure the speed-up.
- Rust for safe speed
Implement the same kernel in Rust and parallelise it safely with Rayon.
- Bindings and accelerators
Call your compiled kernel from Python and compare it with NumPy and Numba.
- Science in the browser
Compile the kernel to WebAssembly and run it on a user-supplied file in the browser.
- 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
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
- 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.
- Refunds
- See the refund and cancellation policy.
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.
Apply for High-Performance Scientific Programming: C++, Rust & WebAssembly
Apply
Send the form below. It takes about five minutes.
Review
An adviser confirms your fit and format within two working days.
Offer
You receive dates, timetable and a secure payment link.
Onboard
Set-up guide, pre-reading and joining links.
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.
Continue learning