# Programming Domains Covered by the Project-Based Learning Repository: A Complete Guide

> Explore over 30 programming domains in the project-based learning repository, featuring Python, JavaScript, Rust, Go, Flutter, Elixir, and OCaml tutorials. Master new skills with hands-on projects.

- Repository: [practical-tutorials/project-based-learning](https://github.com/practical-tutorials/project-based-learning)
- Tags: deep-dive
- Published: 2026-02-24

---

**The Project-Based Learning repository curates hands-on tutorials across 30+ programming domains including Python, JavaScript, Rust, Go, and specialized stacks like Flutter, Elixir, and OCaml, organized by language-specific headings in the README.**

The `practical-tutorials/project-based-learning` repository on GitHub serves as a comprehensive index of coding tutorials organized by technology stack. Whether you're learning web development, systems programming, or mobile apps, this collection maps each project-based learning domain to curated external resources that teach through building real applications.

## Core Programming Languages and Systems Domains

The repository structures its content around primary programming languages and runtime environments. Each domain appears as a level-2 heading in [`README.md`](https://github.com/practical-tutorials/project-based-learning/blob/main/README.md), followed by a curated list of external tutorials.

### Systems and Low-Level Programming

**C/C++** tutorials focus on low-level systems, graphics engines, compilers, and OS-style projects. These entries teach memory management, pointer arithmetic, and systems architecture through hands-on builds.

**Rust** covers modern systems programming with projects spanning web applications, OS kernels, emulators, and WebAssembly front-ends. The domain emphasizes memory safety and concurrency patterns.

**OCaml** offers specialized content including an LLVM tutorial and a Game Boy emulator, targeting functional systems programming and language implementation.

### Web Development Stacks

**JavaScript** encompasses both front-end (vanilla, React, Angular) and Node.js back-end development. Projects range from single-page applications to full-stack server implementations.

**Python** web tutorials cover Flask and Django microblogging platforms, plus specialized domains like web scraping, bot creation, and data science notebooks.

**PHP** includes Laravel frameworks and vanilla PHP implementations for blogs and real-estate listing sites.

**Ruby** (including **Rails**) features network stack implementations, Redis clones, and Git re-implementations that teach underlying protocols through reconstruction.

**Go** focuses on web services, microservices, chat applications, and container-building tutorials that leverage Go's concurrency primitives.

### Mobile and Cross-Platform Development

**Swift** provides iOS-focused tutorials such as photo library applications and native mobile UI implementations.

**Kotlin** targets Android development with projects like Reddit-style clients and modern Android architecture components.

**Dart** (including **Flutter**) covers cross-platform mobile UI development, featuring clones of Instagram and TikTok to teach state management and responsive design.

## Functional and Specialized Language Domains

Beyond imperative and object-oriented stacks, the repository dedicates significant sections to functional programming paradigms and specialized use cases.

### Functional Programming Ecosystems

**Haskell** tutorials emphasize compiler and interpreter construction, plus functional bot development, teaching pure functional patterns and type systems.

**Clojure** (functional Lisp on the JVM) includes bot creation, spell-checkers, and integration projects that demonstrate immutable data structures.

**F#** offers functional .NET examples including a tiny Excel implementation, targeting business application domains with functional patterns.

**Elixir** focuses on scalable web-socket applications and link shorteners using the Phoenix framework, emphasizing fault-tolerant, concurrent systems.

**Erlang** covers distributed chat and messaging systems, teaching actor-model concurrency and distributed system design.

**Scala** includes an actor-based blockchain example, bridging object-oriented and functional paradigms for distributed systems.

### Data Science and Analytics

**R** tutorials cover Shiny web applications, cryptocurrency trading bots, and association-rule mining for statistical analysis and data visualization.

**Python** (cross-listed with web development) includes data-science specific notebooks and machine learning project tutorials.

### Game Development and Graphics

**Lua** (including **LÖVE** framework) provides game-development tutorials ranging from simple platformers to full-featured RPGs, teaching 2D game physics and state management.

**C/C++** (cross-listed with systems) includes graphics engine and game-related systems programming projects.

## Repository Structure and Navigation

The [`README.md`](https://github.com/practical-tutorials/project-based-learning/blob/main/README.md) file serves as the central index that lists every domain and its associated project links. Each domain follows a consistent Markdown structure:

```markdown

## Python:

- [Build a Microblog with Flask](https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world)
- [Create a Blog Web App In Django](https://tutorial.djangogirls.org/en/)
- [Build a Reddit Bot](http://pythonforengineers.com/build-a-reddit-bot-part-1/)

```

The repository also includes governance files that manage contributions across these domains:

- **[`CONTRIBUTING.md`](https://github.com/practical-tutorials/project-based-learning/blob/main/CONTRIBUTING.md)** – Guidelines for adding new tutorials to specific domain sections
- **[`LICENSE.md`](https://github.com/practical-tutorials/project-based-learning/blob/main/LICENSE.md)** – MIT license covering the curated index

To reference a specific domain when linking from external documentation, use the anchor links generated from the heading names (e.g., `#python`, `#rust`, `#javascript`).

## Summary

- The Project-Based Learning repository organizes tutorials across **30+ distinct programming domains**, from mainstream languages like Python and JavaScript to specialized ecosystems like Erlang and OCaml.
- Each domain functions as a curated category within [`README.md`](https://github.com/practical-tutorials/project-based-learning/blob/main/README.md), containing external links to hands-on project tutorials that teach through building functional applications.
- Coverage spans **systems programming** (C/C++, Rust), **web development** (JavaScript, Python, Go, Ruby), **mobile development** (Swift, Kotlin, Flutter), **functional programming** (Haskell, Clojure, Elixir), and **specialized domains** like game development (Lua) and data science (R).
- The repository structure in `practical-tutorials/project-based-learning` uses simple Markdown headings to separate domains, making it easy to navigate and contribute to specific technology stacks.

## Frequently Asked Questions

### How many programming domains are covered in the Project-Based Learning repository?

The repository currently covers **over 30 programming domains**, ranging from mainstream languages like Python, JavaScript, and Java to specialized functional languages like Haskell, OCaml, and Erlang. Each domain represents a distinct technology stack or programming paradigm with its own curated list of project tutorials.

### Can I contribute a tutorial for a new programming domain not currently listed?

Yes. According to the [`CONTRIBUTING.md`](https://github.com/practical-tutorials/project-based-learning/blob/main/CONTRIBUTING.md) guidelines, you can propose new domains by adding a properly formatted Markdown heading in [`README.md`](https://github.com/practical-tutorials/project-based-learning/blob/main/README.md) followed by a list of project tutorials. If the domain represents a niche language or emerging technology, ensure the tutorials demonstrate practical application building rather than just syntax exercises.

### Are the tutorials suitable for beginners or only advanced developers?

The repository spans **all skill levels**, though most tutorials assume basic programming literacy. Entry-level domains like **HTML/CSS** and **Python** offer beginner-friendly projects (calculators, simple blogs), while systems domains like **Rust**, **C/C++**, and **Haskell** target intermediate to advanced developers with projects like OS kernels, compilers, and distributed systems.

### How is the repository maintained and kept up to date?

The `practical-tutorials/project-based-learning` repository is community-maintained through GitHub contributions governed by the [`CONTRIBUTING.md`](https://github.com/practical-tutorials/project-based-learning/blob/main/CONTRIBUTING.md) policy. Domain sections in [`README.md`](https://github.com/practical-tutorials/project-based-learning/blob/main/README.md) are updated when contributors submit pull requests with new tutorial links or when existing links become obsolete, ensuring the curated lists remain relevant for each programming domain.