Skip to content
This repository has been archived by the owner on Aug 31, 2021. It is now read-only.

[Elixir] Roadmap to Launch #14

Closed
3 tasks
neenjaw opened this issue Dec 16, 2019 · 2 comments
Closed
3 tasks

[Elixir] Roadmap to Launch #14

neenjaw opened this issue Dec 16, 2019 · 2 comments
Labels
status/help-wanted Extra attention is needed track/elixir

Comments

@neenjaw
Copy link
Contributor

neenjaw commented Dec 16, 2019

This issue is to track the Elixir v3 roadmap. If you intend to help with this track, please read this entire document, and find the section about "How can you help".

Modelled from @SleeplessByte's excellent javascript roadmap writeup.


This is a working tool to brainstorm the contents of the v3 elixir track by compiling a list of elixir specific concepts. The concepts can be found here.

Folder structure

Specifics for elixir concepts can be found in the /info folder. There are other special folders such as /keywords, which take the keyword, and explain what they do, as they are language-specific (mostly), and the [/types][types] folder which would be /classes in many other languages: it lists the built-in types available.

Concept exercises

The concept exercises in the Elixir track are a work-in-progress and can be found in /concept-exercises. Important types of concepts to target are things that only exist in dynamic and functional programming (for people coming from non-functional languages), actor model concurrency primitives, and elixir specifics:

  • first-class functions
  • higher-order functions
  • pure functions
  • recursion
  • strict vs non-strict evaluation (lazy vs eager)
  • referential transparency (immutable data)
  • data representation (lists, tuples, maps, etc.)

It is important to understand we never explain a specific type or syntax as a concept, but teach the more "abstract" concept around it, using the type(s) or syntax(is).

A list of exercises that we must have is compiled below, and is not at all a complete list:

  • "basic-lists"
  • "recursion"
  • ...

⚠ Note ⚠: The idea here is to use a concept name for the folder, but perhaps use some sort of "progression", so they will naturally become a sort of path to traverse. In this example, the numbers exercise only teaches basic number usage, and doesn't look into more advanced subjects. I would expect to see:

  • numbers-advanced for mathy usage that is non-basic,
  • numbers-irrational showing how to do irrational / complex / whatever numbers,
  • numbers-precision which would explore binary representation and floating points,
  • numbers-arbitrary-precision which would explore big integers and/or how to do that with decimals.

It's only important that it's reasonably easy to find the exercise. It's okay if the name isn't perfect. We will iterate on this.

Concept interpretation

This should be synced across tracks.

concept interpretation
basic-numbers Know of the existence of the number type and (for this language) see that it's whole numbers, and floating points. Know of basic operators such as multiplication. Know where it's documented, or at least how to search for it.
basic-strings Know of the existence of the string type. Know of some basic functions (like looking up a character at a position, or slicing the string). Know where it's documented, or at least how to search for it.
basic-lists Know of the list construct (array type in some other languages). Know of some basic functions and ways to use them.
basic-errors Know how to create an error, how throw it and how to catch it
callbacks Know how to use a function as a first-class citizen, that is, pass it into a function as a value, and call it somewhere inside that function. Know that you can pass in values and retrieve out return values.
recursion Know how to call a function from itself
type-conversion Know that there exist functions that can convert between "types" (objects of a prototype) and types (primitives).

This also indicates that for example basic-strings does not include knowing that Elixir strings are made up of UTF-8 codepoints. Knowledge about how strings differ from charlists may be covered in later basic-charlists or basic-binary.

How can you help?

This track

There are files in the /info, /keywords and [/types][types] folders which are either empty or stubs. They need to be written. You can use the already filled-in ones to see what we're looking for.

Globally

There are concepts missing.

Exercises

We need two types of exercises. The concept ones, as explained above -- you can chose to pick one from the list above or suggest, in this issue, one that's not listed. The other ones are the practise ones, which are like the v2 exercises.

Analyzers

TBD

@neenjaw
Copy link
Contributor Author

neenjaw commented Dec 16, 2019

Please feel free to edit this to flesh it out, I have posted this as a beginning of a discussion about Elixir's role in v3.

@iHiD iHiD changed the title v3/elixir: roadmap [Elixir] Roadmap Dec 19, 2019
@iHiD iHiD changed the title [Elixir] Roadmap [Elixir] Roadmap to Launch Dec 19, 2019
@neenjaw
Copy link
Contributor Author

neenjaw commented Feb 29, 2020

I believe this issue has been surpassed by the bootstrapping event by @ErikSchierboom.

Closing.

@neenjaw neenjaw closed this as completed Feb 29, 2020
BethanyG added a commit that referenced this issue Dec 12, 2020
* First

* Add : config.json
authors & editor

* Add : exchange file
exchange_test / exchange

* Fix : typo

Line 2
from .exchange import * -> from exchange import *

* Fix : Forder Name

* Fix : Folder Name

* Added example and instructions. (#6)

added : currency-exchange/.meta/example.py
added : currency-exchange/.docs/instructions.md

* Added design.md (#7)

* added design.md
added : currency-exchange/.meta/design.md

* Added hint.md (#8)

Added hint.md (#8)

* Add : hint.md (#10)

* Delete .DS_Store

* Add : hint.md (#9)

Add : hint.md
Solving Conflict

* Add introduction.md (#8)

* Fix: typo (#11)

fix exchangable to exchangeable
fix "Chandler want" to "Chandler wants" in instructions.md

* Change File_name & Prettier (#12)

* Fix : Prettier (#13)

* Add : slug to config.json (#14)

* Fix config (#15)

* Fix introduction.md (#16)

* Fix instructions.md (#17)

* Fixed instructions.md

Fixed grammatical errors in instructions.md based on BethanyG's review.

Co-authored-by: Limm-jk <201602057@cs-cnu.org>
Co-authored-by: Junkyu Lim <57378834+Limm-jk@users.noreply.github.com>

* add testcase

* Added problem "6. Calculate unexchangeable value" (#19)

* Added new problem "Calculate unexchangeable value"

Added modular arithmetic problem Calculate unexchangeable value

* Added new problem "Calculate unexchangeable value" (example.py, exchange.py)

Modified example.py, exchange.py

* Modified Calculated unexchangeable value

Modified `unexchangeable_value()` function's expected return type to be `int`

* added new lines at the end of file

* applied prettier on instructions.md

Co-authored-by: Limm-jk <201602057@cs-cnu.org>
Co-authored-by: Junkyu Lim <57378834+Limm-jk@users.noreply.github.com>

* Add : Problem Design (#20)

* Update languages/python/config.json

we changed the concept name, so needed to update file.

* Update languages/python/exercises/concept/currency-exchange/.docs/introduction.md

* Update languages/python/exercises/concept/currency-exchange/.docs/introduction.md

* Update languages/python/exercises/concept/currency-exchange/.docs/introduction.md

* Update languages/python/exercises/concept/currency-exchange/.docs/introduction.md

* Update languages/python/exercises/concept/currency-exchange/.meta/config.json

we've decided to name the stub and test files for the concept and not the story.

* Update languages/python/exercises/concept/currency-exchange/.meta/design.md

minor typo

* Update languages/python/exercises/concept/currency-exchange/exchange_test.py

* Update languages/python/exercises/concept/currency-exchange/exchange_test.py

* Update languages/python/exercises/concept/currency-exchange/.docs/introduction.md

Co-authored-by: Yunseon Choi <science_co@naver.com>

* Update languages/python/config.json

removed arithmetic as a concept until we get the about.md file made.

* Update languages/python/exercises/concept/currency-exchange/.meta/config.json

reverting file name change and deferring to different PR.  This is currently breaking a CI test.

Co-authored-by: Yoggy <wjdek88@naver.com>
Co-authored-by: Seunghun Yang <Yabby1997@gmail.com>
Co-authored-by: Ticktakto <50654571+Ticktakto@users.noreply.github.com>
Co-authored-by: Yunseon Choi <science_co@naver.com>
Co-authored-by: wnstj2007 <43427152+wnstj2007@users.noreply.github.com>
Co-authored-by: BethanyG <BethanyG@users.noreply.github.com>
OMEGA-Y added a commit to OMEGA-Y/v3 that referenced this issue Dec 22, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
status/help-wanted Extra attention is needed track/elixir
Projects
None yet
Development

No branches or pull requests

1 participant