This section aims to outline all concepts that are taught within Exercism, providing a canonical description / resource that can be provided by tracks. Within exercise READMEs, tracks should link to the generic description and then go on to outline details of their own language-specific implementations.
For example, we might have one or many exercises on "enumeration" in Ruby. The exercise README would start by taking the generic description of looping and enumeration from here and then add its own language-specific information. It might read something like this:
Most languages have a concept of looping or enumerating through a data-structure. Depending on your background, you might be familiar with "for loops" or maybe using a method
.each
. In you are unfamiliar with the concepts around looping or enumeration, or would like a reminder, check out[this article](...)
.In Ruby we generally use enumeration using....
We should not presume a programmer knows these topics, and should ensure that tracks explain them clearly both in the general term and how they are used in a language.
For example the concept of null
(or nil
or None
) does not exist in some languages, and is extremely esoteric the first time it is encountered. We should therefore ensure that we explain its purpose in the language, and provide good documentation for learning more, as well as providing an exercise that demonstrates its language-implementation.
Thanks for wanting to contribute to Exercism's concept reference documents! Contributions are very welcome!
To contribute, check the list below to see which documents have already been written. You can then contribute by submitting a PR to update an existing document, or to add a missing document.
- Actor model
- Anonymous functions
- Arithmetic
- ASCII
- Assignment
- Bitwise manipulation
- Boolean logic
- Character encoding
- Classes
- Comments
- Comparisons
- Composition
- Concurrency
- Conditionals
- Constants
- Destructuring
- Destructuring assignment
- Duck typing
- Eager evaluation
- Encapsulation
- Enumeration
- Evaluation
- Expression-oriented
- Expressions
- Function composition
- Functions
- Generics
- Hashing
- Higher-order functions
- Immutability
- Inheritance
- Interfaces
- Lazy Evaluation
- List comprehension
- Locking
- Loops
- Macros
- Metaprogramming
- Methods
- Multiple-dispatch
- Mutation
- Nested functions
- Objects
- Operators
- Partial application
- Pattern matching
- Pipelines
- Polymorphism
- Prototype-based programming
- Pure functions
- Recursion
- REPL
- Rest parameters
- Return values
- Sameness
- Scope
- Signedness
- State
- Truthy and falsy
- Type casting
- Type inference
- Undefined
- Unicode
- UTF7
- UTF8
- UTF16
- UTF32
- Variable shadowing
- Variables