This repository can be viewed both via GitHub and via the v3 website. This page describes the repository as found on GitHub. It is roughly equivalent to the website, with filenames being title-ized.
Things are grouped into several sub-directories:
This directory contains files, for both the public and maintainers, explaining what v3 is and how to contribute.
A list of reference documents for the various CS concepts, types, paradigms, etc.
- concepts: This directory contains files discussing programming concepts. These documents should provide guidance, limitations, and links for maintainers who need to expound those ideas on their tracks.
- paradigms This directory contains files discussing programming paradigms. These documents should link to the concepts typically associated with the paradigms.
- tooling This directory contains documents on tooling that is common across languages (either due to a shared ecosystem - such as JS/TS/Clojurescript - or a shared platform - such as .net or JVM).
- types: This directory contains files discussing programming types. These documents should provide guidance, limitations, and links for maintainers who need to expound those ideas on their tracks.
Each track has its own directory containing the following files and directories:
- concepts: This directory contains files to describe the concepts used in the track.
- config.json The updated config.json for a track, with the practice exercises removed to avoid noise.
- docs: This directory contains files, for both the public and maintainers, describing the track and how to contribute. It is envisioned that these documents will be linked to from issues and discussions to provide canonical answers or guidance.
- exercises: The exercises for that track.
- shared: Exercise files shared across all exercises for that track.
- .docs: Exercise documentation shared across all exercises for that track.
- concept: The Concept Exercises for that track.
- practice: The Practice Exercises for that track.
- shared: Exercise files shared across all exercises for that track.
- README.md: The track's README, which should contain a short description of the goal of the repository as well as the status of the track's v3 transition. A template is provided during the bootstrapping process.
- reference: Files that help maintainers develop the track. These could be reference documents that help explain track-specific concepts for which no appropriate online document could be found, files on language-specific elements of programming concepts, or something else. Maintainers are free to organise this directory in the way they feel it best contributes to developing their track.
- README.md: The README outlines the concepts that are necessary to learn to become fluent in that language. It could also list any reference documents that have been written.
- concepts.csv: A machine readable file defining all concept slugs used in the track. Read the Continuous Integration document for more information. This file is optional.
- transitions: Contains a file for each pair of languages, where someone with a background in X learns new language Y. These should explain the concepts that needed to be remapped/learnt. The files in this directory initially aim to help inform us about both the language-agnostic and language-specific files, but will hopefully also in the long-run provide custom pathways for people learning languages.
The following labels are used to categorize issues in the v3 repository:
- type/new-exercise: Add a new exercise
- type/improve-exercise: Improve an existing exercise
- type/suggested-exercise: Suggest a new (Concept) exercise
- type/new-reference-doc: Add a new reference document
- type/improve-reference-doc: Improve an existing reference document
- type/new-student-facing-doc: Add a new student-facing document
- type/improve-student-facing-doc: Improve an existing student-facing document
- type/launch-checklist: Things that need to be done once a track is sufficiently close to launch
- type/ci: Everything related to Continuous Integration.
- type/discussion: Discussion regarding v3.
- type/documentation: Improvements or additions to documentation.
- type/analyzer-extension: Add analyzer support for a new (Concept) exercise.
- status/help-wanted: Extra attention is needed
- status/in-progress: This issue is being worked on
- status/draft: This issue or pull request is a draft, and not ready for review/merge.
- status/wontfix: This issue or pull request is out of scope and will not be fixed.
- about/v3-roadmap: Everything related to the v3 roadmap.
- good-first-issue: Marks an issue as good for newcomers.
Each language also has its own label:
- track/bash
- track/c
- track/csharp
- track/cpp
- track/clojure
- track/coffeescript
- track/common-lisp
- track/dart
- track/delphi
- track/elixir
- track/emacs-lisp
- track/erlang
- track/fsharp
- track/factor
- track/go
- track/haskell
- track/java
- track/javascript
- track/julia
- track/kotlin
- track/ocaml
- track/purescript
- track/python
- track/reasonml
- track/ruby
- track/rust
- track/scala
- track/scheme
- track/typescript
- track/x86-64-assembly
You can combine labels to find the issues you'd like, e.g. to list all the issues for the C# for which help is wanted.