Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Python Track Syllabus]: Track Re-Ordering #3057

Merged
merged 3 commits into from
May 26, 2022

Conversation

BethanyG
Copy link
Member

Marked as massive, due to the amount of re-reviewing, visualization, and re-ordering.

These are changes to address issue #2714 & #3023, and include:


Syllabus Tree Before (aka "current" tree on website)

flowchart TD
%%{init: {"theme": "base", "themeVariables": { "fontFamily": "Victor Mono, San Francisco, Roboto", "fontSize" : "18px", "primaryColor": "#D9D7FF", "nodeBorder": "#9F80DF", "lineColor": "#AFAC6A", "clusterBorder" : "#585B5D"}}}%%
classDef TBD fill:#D9D7FF,stroke:#9F80DF,stroke-width:4px,stroke-dasharray: 5 5, color: #734CC4;
classDef Beta fill:#F5DE90,stroke:#F6B303,stroke-width:2px, color:#525952;
classDef WIP fill:#DEE8BB,stroke:#AFAC6A,stroke-width:4px,stroke-dasharray: 5 5, #908D49;
classDef TBD-f fill:#C4D7FF,stroke:#97AFFF,stroke-width:4px,stroke-dasharray: 5 5, #7388CB;
classDef Practice fill:#C4D7FF,stroke:#97AFFF,stroke-width:2px, color:#525952;


%%concepts & exercise names (node labels)
Basics((<b>Guidos Gorgeous Lasagna</b><br><i>Basics</i>)):::Beta 
bools((<b>Ghost Gobble <br> Arcade Game</b><br><i>bools</i>)):::Beta
classes((<b>Ellen's Alien Game</b><br><i>Classes</i>)):::Beta
conditionals((<b>Meltdown Mitigation</b><br><i>Conditionals</i>)):::Beta
comparisons((<b>Black Jack</b><br><i>comparisons</i>)):::Beta
dicts((Inventory <br> Management<br><i>dicts</i>)):::Beta
enums((<b>Log Levels</b> <br> <i>Enums</i>)):::WIP
functions((<b>TBD</b><br><i>Functions</i>)):::WIP
lists((<b>Card Games</b><br><i>lists</i>)):::Beta
list-methods((<b>Chaitana's <br> Colossal Coaster</b><br><i>list-methods</i>)):::Beta
loops((<b>Making the Grade</b><br><i>loops</i>)):::Beta
none((<b>Restaurant Rozalynn</b><br><i>none</i>)):::WIP
numbers(("<b>Currency Exchange</b><br><i>(ints & floats)</i>")):::Beta
sets((<b>Cater-Waiter</b><br><i>sets</i>)):::Beta
strings((<b>Little Sister's <br> Vocab</b> <br><i>strings</i>)):::Beta
string-formatting((<b>Pretty Leaflet</b> <br><i>String Formatting</i>)):::WIP
string-methods((<b>Little Sister's <br> Essay</b><br><i>String Methods</i>)):::Beta
tuples((<b>Tisbury <br> Treasure Hunt</b><br><i>tuples</i>)):::Beta
generators((<b>Plane Tickets</b> <br><i>Generators</i>)):::WIP


%%Practice Exercises
triangle("Triangle (D1)"):::Practice
grains("Grains (D1)"):::Practice
sublist("Sublist (D2)"):::Practice
yacht("Yacht(D2)"):::Practice
luhn("Luhn (D2)"):::Practice
collatz-conjecture("Collatz Conjecture (D1)"):::Practice
palindrome-products("Palindrome Products (D4)"):::Practice
prime-factors("Prime Factors (D2)"):::Practice
affine-cipher("Affine Cipher (D6)"):::Practice
darts("Darts (D2)"):::Practice
two-bucket("Two Bucket (D6)"):::Practice
bowling("Bowling (D5)"):::Practice
rest-api("Rest Api (D8)"):::Practice
leap("Leap (D1)"):::Practice
book-store("Book Store (D7)"):::Practice
bob("Bob (D1)"):::Practice
connect("Connect (D3)"):::Practice
rectangles("Rectangles (D3)"):::Practice
change("Change (D4)"):::Practice
forth("Forth (D5)"):::Practice
food-chain("Food Chain (D4)"):::Practice
dominoes("Dominoes (D7)"):::Practice
pig-latin("Pig Latin (D2)"):::Practice
zebra-puzzle("Zebra Puzzle (D5)"):::Practice
raindrops("Raindrops (D1)"):::Practice
isogram("Isogram (D1)"):::Practice
acronym("Acronym (D2)"):::Practice
phone-number("Phone Number (D2)"):::Practice
wordy("Wordy (D1)"):::Practice
rotational-cipher("Rotational Cipher (D1)"):::Practice
grep("Grep (D4)"):::Practice
word-search("Word Search (D6)"):::Practice
binary-search("Binary Search (D1)"):::Practice
saddle-points("Saddle Points (D3)"):::Practice
robot-simulator("Robot Simulator (D3)"):::Practice
all-your-base("All Your Base (D4)"):::Practice
satellite("Satellite (D7)"):::Practice
resistor-color("Resistor Color (D1)"):::Practice
say("Say (D2)"):::Practice
high-scores("High Scores (D3)"):::Practice
minesweeper("Minesweeper (D4)"):::Practice
spiral-matrix("Spiral Matrix (D4)"):::Practice
dot-dsl("Dot Dsl (D5)"):::Practice
rna-transcription("Rna Transcription (D1)"):::Practice
word-count("Word Count (D2)"):::Practice
hangman("Hangman (D4)"):::Practice
diamond("Diamond (D2)"):::Practice
scale-generator("Scale Generator (D4)"):::Practice
variable-length-quantity("Variable Length Quantity (D4)"):::Practice
rail-fence-cipher("Rail Fence Cipher (D4)"):::Practice
flatten-array("Flatten Array (D1)"):::Practice
protein-translation("Protein Translation (D2)"):::Practice
pythagorean-triplet("Pythagorean Triplet (D3)"):::Practice
complex-numbers("Complex Numbers (D4)"):::Practice
tournament("Tournament (D4)"):::Practice
go-counting("Go Counting (D4)"):::Practice
alphametics("Alphametics (D6)"):::Practice
etl("Etl (D1)"):::Practice
space-age("Space Age (D1)"):::Practice
scrabble-score("Scrabble Score (D2)"):::Practice
kindergarten-garden("Kindergarten Garden (D3)"):::Practice
sum-of-multiples("Sum Of Multiples (D1)"):::Practice
pangram("Pangram (D1)"):::Practice
sieve("Sieve (D3)"):::Practice
matrix("Matrix (D4)"):::Practice
linked-list("Linked List (D4)"):::Practice
ledger("Ledger (D4)"):::Practice
binary-search-tree("Binary Search Tree (D5)"):::Practice




%%Practice Exercise Subgraphs
subgraph Sub-basics[Basics exercises]
    direction LR
    style Sub-basics fill: none, stroke-width:2px, stroke-width:2px, stroke-dasharray: 5 5;
    triangle -.- grains  & sublist -.- yacht
    
end

subgraph Sub-numbers[Numbers exercises]
    direction LR
    style Sub-numbers fill: none, stroke-width:2px, color: none, stroke-width:2px, stroke-dasharray: 5 5;
    collatz-conjecture -.- darts & prime-factors  & luhn  -.- palindrome-products -.- affine-cipher
end

subgraph Sub-bools[Bools exercises]
    direction LR
    style Sub-bools fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;
    leap -.- bowling & two-bucket -.- rest-api
end 

subgraph Sub-conditionals[Conditionals exercises]
    direction LR
    style Sub-conditionals fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;
    bob -.- pig-latin -.- rectangles -.- connect -.- food-chain
    pig-latin -.- change -.- forth -.- zebra-puzzle -.- dominoes
    food-chain -.- book-store
end

subgraph Sub-strings[Strings exercises]
    direction LR
    style Sub-strings fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;
    raindrops -.- isogram & wordy -.- rotational-cipher 
    rotational-cipher -.- acronym -.- phone-number & grep -.- word-search
end

subgraph Sub-string-methods[Strings exercises]
    direction LR
    style Sub-string-methods fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;
    rna-transcription -.- word-count -.- hangman
end

subgraph Sub-comparisons[Comparisons exercises]
    direction LR
    style Sub-comparisons fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;
    binary-search -.- saddle-points & robot-simulator -.- all-your-base -.- satellite
end

subgraph Sub-lists[List exercises]
    direction LR
    style Sub-lists fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;
    resistor-color -.- say -.- high-scores -.- minesweeper & spiral-matrix -.- dot-dsl
end

subgraph Sub-list-methods[List Method exercises]
    direction LR
    style Sub-list-methods fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;
    diamond -.- scale-generator & variable-length-quantity & rail-fence-cipher
end

subgraph Sub-loops[Loop exercises]
    direction LR
    style Sub-loops fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;
    flatten-array -.- protein-translation
end

subgraph Sub-tuples[Tuple exercises]
    direction LR
    style Sub-tuples fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;
    pythagorean-triplet -.- complex-numbers & tournament & go-counting -.- alphametics 
end

subgraph Sub-dicts[Dict exercises]
    direction LR
    style Sub-dicts fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;
    etl & space-age -.- scrabble-score -.- kindergarten-garden
end

subgraph Sub-sets[Set exercises]
    direction LR
    style Sub-sets fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;
    pangram & sum-of-multiples -.- sieve
end

subgraph Sub-classes[Class exercises]
    direction LR
    style Sub-classes fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;
    matrix -.-  linked-list & binary-search-tree -.- ledger
end

%%exercise prerequisites and associated practice exercises (node relations)
Basics -.-o Sub-basics
numbers -.-o Sub-numbers
bools -.-o Sub-bools
conditionals -.-o Sub-conditionals
comparisons -.-o Sub-comparisons
strings -.-o Sub-strings
string-methods -.-o Sub-string-methods
lists -.-o Sub-lists
list-methods -.-o Sub-list-methods
loops -.-o Sub-loops
tuples -.-o Sub-tuples
dicts -.-o Sub-dicts
sets -.-o Sub-sets
classes -.-o Sub-classes
Basics ==>  strings & numbers & bools
bools ==>   conditionals
conditionals ==>  strings
conditionals ===> comparisons
lists ==> list-methods & loops 
lists ===> generators
loops ==>  tuples & functions
functions ===> generators
dicts ==> sets
sets ==> classes
strings ==> string-formatting & string-methods
strings ===>lists
tuples ==> dicts
classes ===> enums & none & generators


%%Links to concept exercises
click Basics "https://exercism.org/tracks/python/exercises/guidos-gorgeous-lasagna" "basics"
click bools "https://exercism.org/tracks/python/exercises/ghost-gobble-arcade-game" "bools"
click classes "https://exercism.org/tracks/python/exercises/ellens-alien-game" "classes"
click conditionals "https://exercism.org/tracks/python/exercises/meltdown-mitigation" "conditionals"
click comparisons "https://exercism.org/tracks/python/exercises/black-jack" "comparisons"
click conditionals "https://exercism.org/tracks/python/exercises/meltdown-mitigation" "conditionals"
click dicts "https://exercism.org/tracks/python/exercises/inventory-management" "dicts"
click dict-methods "https://github.com/exercism/python/issues/2348" "dict-methods"
click enums "https://github.com/exercism/python/tree/main/exercises/concept/restaurant-rozalynn" "enums"
click functions "https://github.com/exercism/python/issues/2353" "functions"
click generators "https://github.com/exercism/python/issues/2293" "generators"
click lists "https://exercism.org/tracks/python/exercises/card-games" "lists"
click list-methods "https://exercism.org/tracks/python/exercises/chaitanas-colossal-coaster" "list-methods"
click loops "https://exercism.org/tracks/python/exercises/making-the-grade" "loops"
click none "https://github.com/exercism/python/tree/main/exercises/concept/restaurant-rozalynn" "none"
click numbers "https://exercism.org/tracks/python/exercises/currency-exchange" "numbers"
click sets "https://exercism.org/tracks/python/exercises/cater-waiter" "sets"
click strings "https://exercism.org/tracks/python/exercises/little-sisters-vocab" "strings"
click string-formatting "https://github.com/exercism/python/tree/main/exercises/concept/pretty-leaflet" "string-formatting"
click string-methods "https://exercism.org/tracks/python/exercises/little-sisters-essay" "string-methods"
click tuples "https://exercism.org/tracks/python/exercises/tisbury-treasure-hunt" "tuples"


%%links to practice exercises
click triangle "https://exercism.org/tracks/python/exercises/triangle" "triangle"
click grains "https://exercism.org/tracks/python/exercises/grains" "grains"
click sublist "https://exercism.org/tracks/python/exercises/sublist" "sublist"
click yacht "https://exercism.org/tracks/python/exercises/yacht" "yacht"
click luhn "https://exercism.org/tracks/python/exercises/luhn" "luhn"
click collatz-conjecture "https://exercism.org/tracks/python/exercises/collatz-conjecture" "collatz-conjecture"
click palindrome-products "https://exercism.org/tracks/python/exercises/palindrome-products" "palindrome-products"
click prime-factors "https://exercism.org/tracks/python/exercises/prime-factors" "prime-factors"
click affine-cipher "https://exercism.org/tracks/python/exercises/affine-cipher" "affine-cipher"
click darts "https://exercism.org/tracks/python/exercises/darts" "darts"
click two-bucket "https://exercism.org/tracks/python/exercises/two-bucket" "two-bucket"
click bowling "https://exercism.org/tracks/python/exercises/bowling" "bowling"
click rest-api "https://exercism.org/tracks/python/exercises/rest-api" "rest-api"
click leap "https://exercism.org/tracks/python/exercises/leap" "leap"
click book-store "https://exercism.org/tracks/python/exercises/book-store" "book-store"
click bob "https://exercism.org/tracks/python/exercises/bob" "bob"
click connect "https://exercism.org/tracks/python/exercises/connect" "connect"
click rectangles "https://exercism.org/tracks/python/exercises/rectangles" "rectangles"
click change "https://exercism.org/tracks/python/exercises/change" "change"
click forth "https://exercism.org/tracks/python/exercises/forth" "forth"
click food-chain "https://exercism.org/tracks/python/exercises/food-chain" "food-chain"
click dominoes "https://exercism.org/tracks/python/exercises/dominoes" "dominoes"
click pig-latin "https://exercism.org/tracks/python/exercises/pig-latin" "pig-latin"
click zebra-puzzle "https://exercism.org/tracks/python/exercises/zebra-puzzle" "zebra-puzzle"
click raindrops "https://exercism.org/tracks/python/exercises/raindrops" "raindrops"
click isogram "https://exercism.org/tracks/python/exercises/isogram" "isogram"
click acronym "https://exercism.org/tracks/python/exercises/acronym" "acronym"
click phone-number "https://exercism.org/tracks/python/exercises/phone-number" "phone-number"
click wordy "https://exercism.org/tracks/python/exercises/wordy" "wordy"
click rotational-cipher "https://exercism.org/tracks/python/exercises/rotational-cipher" "rotational-cipher"
click grep "https://exercism.org/tracks/python/exercises/grep" "grep"
click word-search "https://exercism.org/tracks/python/exercises/word-search" "word-search"
click binary-search "https://exercism.org/tracks/python/exercises/binary-search" "binary-search"
click saddle-points "https://exercism.org/tracks/python/exercises/saddle-points" "saddle-points"
click robot-simulator "https://exercism.org/tracks/python/exercises/robot-simulator" "robot-simulator"
click all-your-base "https://exercism.org/tracks/python/exercises/all-your-base" "all-your-base"
click satellite "https://exercism.org/tracks/python/exercises/satellite" "satellite"
click resistor-color "https://exercism.org/tracks/python/exercises/resistor-color" "resistor-color"
click say "https://exercism.org/tracks/python/exercises/say" "say"
click high-scores "https://exercism.org/tracks/python/exercises/high-scores" "high-scores"
click minesweeper "https://exercism.org/tracks/python/exercises/minesweeper" "minesweeper"
click spiral-matrix "https://exercism.org/tracks/python/exercises/spiral-matrix" "spiral-matrix"
click dot-dsl "https://exercism.org/tracks/python/exercises/dot-dsl" "dot-dsl"
click rna-transcription "https://exercism.org/tracks/python/exercises/rna-transcription" "rna-transcription"
click word-count "https://exercism.org/tracks/python/exercises/word-count" "word-count"
click hangman "https://exercism.org/tracks/python/exercises/hangman" "hangman"
click diamond "https://exercism.org/tracks/python/exercises/diamond" "diamond"
click scale-generator "https://exercism.org/tracks/python/exercises/scale-generator" "scale-generator"
click variable-length-quantity "https://exercism.org/tracks/python/exercises/variable-length-quantity" "variable-length-quantity"
click rail-fence-cipher "https://exercism.org/tracks/python/exercises/rail-fence-cipher" "rail-fence-cipher"
click flatten-array "https://exercism.org/tracks/python/exercises/flatten-array" "flatten-array"
click protein-translation "https://exercism.org/tracks/python/exercises/protein-translation" "protein-translation"
click pythagorean-triplet "https://exercism.org/tracks/python/exercises/pythagorean-triplet" "pythagorean-triplet"
click complex-numbers "https://exercism.org/tracks/python/exercises/complex-numbers" "complex-numbers"
click tournament "https://exercism.org/tracks/python/exercises/tournament" "tournament"
click go-counting "https://exercism.org/tracks/python/exercises/go-counting" "go-counting"
click alphametics "https://exercism.org/tracks/python/exercises/alphametics" "alphametics"
click etl "https://exercism.org/tracks/python/exercises/etl" "etl"
click space-age "https://exercism.org/tracks/python/exercises/space-age" "space-age"
click scrabble-score "https://exercism.org/tracks/python/exercises/scrabble-score" "scrabble-score"
click kindergarten-garden "https://exercism.org/tracks/python/exercises/kindergarten-garden" "kindergarten-garden"
click sum-of-multiples "https://exercism.org/tracks/python/exercises/sum-of-multiples" "sum-of-multiples"
click pangram "https://exercism.org/tracks/python/exercises/pangram" "pangram"
click sieve "https://exercism.org/tracks/python/exercises/sieve" "sieve"
click matrix "https://exercism.org/tracks/python/exercises/matrix" "matrix"
click linked-list "https://exercism.org/tracks/python/exercises/linked-list" "linked-list"
click ledger "https://exercism.org/tracks/python/exercises/ledger" "ledger"
click binary-search-tree "https://exercism.org/tracks/python/exercises/binary-search-tree" "binary-search-tree"
Loading

Syllabus Tree After (aka "new" tree)

flowchart TD
%%{init: {"theme": "base", "themeVariables": { "fontFamily": "Victor Mono, San Francisco, Roboto", "fontSize" : "18px", "primaryColor": "#D9D7FF", "nodeBorder": "#9F80DF", "lineColor": "#AFAC6A", "clusterBorder" : "#585B5D"}}}%%
classDef TBD fill:#D9D7FF,stroke:#9F80DF,stroke-width:4px,stroke-dasharray: 5 5, color: #734CC4;
classDef Beta fill:#F5DE90,stroke:#F6B303,stroke-width:2px, color:#525952;
classDef WIP fill:#DEE8BB,stroke:#AFAC6A,stroke-width:4px,stroke-dasharray: 5 5, #908D49;
classDef TBD-f fill:#C4D7FF,stroke:#97AFFF,stroke-width:4px,stroke-dasharray: 5 5, #7388CB;
classDef Practice fill:#C4D7FF,stroke:#97AFFF,stroke-width:2px, color:#525952;


%%concepts & exercise names (node labels)
Basics((<b>Guidos Gorgeous Lasagna</b><br><i>Basics</i>)):::Beta 
bools((<b>Ghost Gobble <br> Arcade Game</b><br><i>bools</i>)):::Beta
classes((<b>Ellen's Alien Game</b><br><i>Classes</i>)):::Beta
conditionals((<b>Meltdown Mitigation</b><br><i>Conditionals</i>)):::Beta
comparisons((<b>Black Jack</b><br><i>comparisons</i>)):::Beta
dicts((Inventory <br> Management<br><i>dicts</i>)):::Beta
enums((<b>Log Levels</b> <br> <i>Enums</i>)):::WIP
functions((<b>TBD</b><br><i>Functions</i>)):::WIP
lists((<b>Card Games</b><br><i>lists</i>)):::Beta
list-methods((<b>Chaitana's <br> Colossal Coaster</b><br><i>list-methods</i>)):::Beta
loops((<b>Making the Grade</b><br><i>loops</i>)):::Beta
none((<b>Restaurant Rozalynn</b><br><i>none</i>)):::WIP
numbers(("<b>Currency Exchange</b><br><i>(ints & floats)</i>")):::Beta
sets((<b>Cater-Waiter</b><br><i>sets</i>)):::Beta
strings((<b>Little Sister's <br> Vocab</b> <br><i>strings</i>)):::Beta
string-formatting((<b>Pretty Leaflet</b> <br><i>String Formatting</i>)):::WIP
string-methods((<b>Little Sister's <br> Essay</b><br><i>String Methods</i>)):::Beta
tuples((<b>Tisbury <br> Treasure Hunt</b><br><i>tuples</i>)):::Beta
generators((<b>Plane Tickets</b> <br><i>Generators</i>)):::WIP

%%Practice Exercise Subgraphs
subgraph Sub-numbers[Numbers exercises]
    direction LR
    style Sub-numbers fill: none, stroke-width:2px, color: none, stroke-width:2px, stroke-dasharray: 5 5;
     %%practice exercises
    grains("Grains (D1)"):::Practice
    collatz-conjecture("Collatz Conjecture (D1)"):::Practice
    armstrong-numbers("Armstrong Numbers (D1)"):::Practice
    difference-of-squares("Difference of Squares (D1)"):::Practice
    diffie-hellman("Diffie Hellman (D3)"):::Practice

    click grains "https://exercism.org/tracks/python/exercises/grains" "grains"
    click collatz-conjecture "https://exercism.org/tracks/python/exercises/collatz-conjecture" "collatz-conjecture"
    click armstrong-numbers "https://exercism.org/tracks/python/exercises/armstrong-numbers" "armstrong-numbers"
    click difference-of-squares "https://exercism.org/tracks/python/exercises/difference-of-squares" "difference-of-squares"
    click diffie-hellman "https://exercism.org/tracks/python/exercises/diffie-hellman" "diffie-hellman"
    
    collatz-conjecture -.- grains & armstrong-numbers -.- difference-of-squares -.- diffie-hellman
end

subgraph Sub-bools[Bools exercises]
    direction LR
    style Sub-bools fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;
    %%practice exericses
    leap("Leap (D1)"):::Practice
    triangle("Triangle (D1)"):::Practice
    yacht("Yacht(D2)"):::Practice

    click leap "https://exercism.org/tracks/python/exercises/leap" "leap"
    click triangle "https://exercism.org/tracks/python/exercises/triangle" "triangle"
    click yacht "https://exercism.org/tracks/python/exercises/yacht" "yacht"

    leap -.- triangle -.- yacht
end 

subgraph Sub-conditionals[Conditionals exercises]
    direction LR
    style Sub-conditionals fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;
    %%practice exercises

    bob("Bob (D1)"):::Practice
    pangram("Pangram (D1)"):::Practice
    pig-latin("Pig Latin (D2)"):::Practice
    matching-brackets("Matching Brackets (D4)"):::Practice

    click bob "https://exercism.org/tracks/python/exercises/bob" "bob"
    click pangram "https://exercism.org/tracks/python/exercises/pangram" "pangram"
    click pig-latin "https://exercism.org/tracks/python/exercises/pig-latin" "pig-latin"
    click matching-brackets "https://exercism.org/tracks/python/exercises/matching-brackets" "matching-brackets"
    
   
    bob & pangram -.- pig-latin -.- matching-brackets
end

subgraph Sub-comparisons[Comparisons exercises]
    direction LR
    style Sub-comparisons fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;
    %%practice exercises
    perfect-numbers("Perfect Numbers (D1)"):::Practice
    darts("Darts (D2)"):::Practice
    sublist("Sublist (D2)"):::Practice
    all-your-base("All Your Base (D4)"):::Practice

    click darts "https://exercism.org/tracks/python/exercises/darts" "darts"
    click perfect-numbers "https://exercism.org/tracks/python/exercises/perfect-numbers" "perfect-numbers"
    click sublist "https://exercism.org/tracks/python/exercises/sublist" "sublist"
    click all-your-base "https://exercism.org/tracks/python/exercises/all-your-base" "all-your-base"

    perfect-numbers -.- darts -.- sublist -.- all-your-base
end

subgraph Sub-strings[Strings exercises]
    direction LR
    style Sub-strings fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;
    %%practice exercises
    isogram("Isogram (D1)"):::Practice
    isbn-verifier("ISBN Verifier (D1)"):::Practice
    raindrops("Raindrops (D1)"):::Practice
    rotational-cipher("Rotational Cipher (D1)"):::Practice

    click isogram "https://exercism.org/tracks/python/exercises/isogram" "sublist"
    click isbn-verifier "https://exercism.org/tracks/python/exercises/isbn-verifier" "isbn-verifier"
    click raindrops "https://exercism.org/tracks/python/exercises/raindrops" "raindrops"
    click rotational-cipher "https://exercism.org/tracks/python/exercises/rotational-cipher" "rotational-cipher"
 
    raindrops -.- isogram & isbn-verifier -.- rotational-cipher 
end

subgraph Sub-string-methods[String Method exercises]
    direction LR
    style Sub-string-methods fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;
    %%practice exercises
    
    rna-transcription("Rna Transcription (D1)"):::Practice
    wordy("Wordy (D1)"):::Practice
    acronym("Acronym (D2)"):::Practice
    atbash-cipher("Atbash Cipher (D2)"):::Practice

    click rna-transcription "https://exercism.org/tracks/python/exercises/rna-transcription" "rna-transcription"
    click wordy "https://exercism.org/tracks/python/exercises/wordy" "wordy"
    click acronym "https://exercism.org/tracks/python/exercises/acronym" "acronym"
    click atbash-cipher "https://exercism.org/tracks/python/exercises/atbash-cipher" "atbash-cipher"
    
    rna-transcription & wordy -.- acronym  -.- atbash-cipher
end

subgraph Sub-lists[List exercises]
    direction LR
    style Sub-lists fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;
    
    resistor-color("Resistor Color (D1)"):::Practice
    flatten-array("Flatten Array (D1)"):::Practice
    diamond("Diamond (D2)"):::Practice
    say("Say (D2)"):::Practice
    minesweeper("Minesweeper (D4)"):::Practice
    spiral-matrix("Spiral Matrix (D4)"):::Practice

    click resistor-color "https://exercism.org/tracks/python/exercises/resistor-color" "resistor-color"
    click flatten-array "https://exercism.org/tracks/python/exercises/flatten-array" "flatten-array"
    click diamond "https://exercism.org/tracks/python/exercises/diamond" "diamond"
    click say "https://exercism.org/tracks/python/exercises/say" "say"
    click minesweeper "https://exercism.org/tracks/python/exercises/minesweeper" "minesweeper"
    click spiral-matrix "https://exercism.org/tracks/python/exercises/spiral-matrix" "spiral-matrix"

    resistor-color -.- flatten-array -.- say & diamond -.- minesweeper -.-  spiral-matrix 
end

subgraph Sub-list-methods[List Method exercises]
    direction LR
    style Sub-list-methods fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;
  
    resistor-color-duo("Resistor Color Duo (D1)"):::Practice
    secret-handshake("Secret Handshake (D1)"):::Practice
    list-ops("List Ops (D1)"):::Practice
    transpose("Transpose (D2)"):::Practice
    rail-fence-cipher("Rail Fence Cipher (D4)"):::Practice
    variable-length-quantity("Variable Length Quantity (D4)"):::Practice

    click resistor-color-duo "https://exercism.org/tracks/python/exercises/resistor-color-duo" "resistor-color-duo"
    click secret-handshake "https://exercism.org/tracks/python/exercises/secret-handshake" "secret-handshake"
    click list-ops "https://exercism.org/tracks/python/exercises/list-ops" "list-ops"
    click transpose "https://exercism.org/tracks/python/exercises/transpose" "transpose"
    click rail-fence-cipher "https://exercism.org/tracks/python/exercises/rail-fence-cipher" "rail-fence-cipher"
    click variable-length-quantity "https://exercism.org/tracks/python/exercises/variable-length-quantity" "variable-length-quantity"
    
    resistor-color-duo & secret-handshake & list-ops -.- transpose  -.- rail-fence-cipher & variable-length-quantity
end

subgraph Sub-loops[Loop exercises]
    direction LR
    style Sub-loops fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;
    
    binary-search("Binary Search (D1)"):::Practice
    house("House (D1)"):::Practice
    protein-translation("Protein Translation (D2)"):::Practice
    saddle-points("Saddle Points (D3)"):::Practice
    ocr-numbers("OCR Numbers (D3)"):::Practice
    change("Change (D4)"):::Practice

    click binary-search "https://exercism.org/tracks/python/exercises/binary-search" "binary-search"
    click house "https://exercism.org/tracks/python/exercises/house" "house"
    click protein-translation "https://exercism.org/tracks/python/exercises/protein-translation" "protein-translation"
    click saddle-points "https://exercism.org/tracks/python/exercises/saddle-points" "saddle-points"
    click ocr-numbers "https://exercism.org/tracks/python/exercises/ocr-numbers" "ocr-numbers"
    click change "https://exercism.org/tracks/python/exercises/change" "change"

    binary-search & house -.- protein-translation -.- saddle-points & ocr-numbers -.- change
end

subgraph Sub-tuples[Tuple exercises]
    direction LR
    style Sub-tuples fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;

    twelve-days("Twelve Days (D2)"):::Practice
    roman-numerals("Roman Numerals (D2)"):::Practice
    tournament("Tournament (D4)"):::Practice
    food-chain("Food Chain (D4)"):::Practice
    dominoes("Dominoes (D7)"):::Practice

    click twelve-days "https://exercism.org/tracks/python/exercises/twelve-days" "twelve-days"
    click roman-numerals "https://exercism.org/tracks/python/exercises/roman-numerals" "roman-numerals"
    click tournament "https://exercism.org/tracks/python/exercises/tournament" "tournament"
    click food-chain "https://exercism.org/tracks/python/exercises/food-chain" "food-chain"
    click dominoes "https://exercism.org/tracks/python/exercises/dominoes" "dominoes"

    twelve-days -.- roman-numerals & tournament -.- food-chain -.- dominoes
end

subgraph Sub-dicts[Dict exercises]
    direction LR
    style Sub-dicts fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;

    etl("Etl (D1)"):::Practice
    space-age("Space Age (D1)"):::Practice
    word-count("Word Count (D2)"):::Practice
    scrabble-score("Scrabble Score (D2)"):::Practice
    forth("Forth (D5)"):::Practice

    click etl "https://exercism.org/tracks/python/exercises/etl" "etl"
    click space-age "https://exercism.org/tracks/python/exercises/space-age" "space-age"
    click word-count "https://exercism.org/tracks/python/exercises/word-count" "word-count"
    click scrabble-score "https://exercism.org/tracks/python/exercises/scrabble-score" "scrabble-score"
    click forth "https://exercism.org/tracks/python/exercises/forth" "forth"
    
    etl -.- space-age & word-count -.- scrabble-score -.- forth
end

subgraph Sub-sets[Set exercises]
    direction LR
    style Sub-sets fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;

    sum-of-multiples("Sum Of Multiples (D1)"):::Practice
    pythagorean-triplet("Pythagorean Triplet (D3)"):::Practice
    sieve("Sieve (D3)"):::Practice

    click sum-of-multiples "https://exercism.org/tracks/python/exercises/sum-of-multiples" "sum-of-multiples"
    click pythagorean-triplet "https://exercism.org/tracks/python/exercises/pythagorean-triplet" "pythagorean-triplet"
    click sieve "https://exercism.org/tracks/python/exercises/sieve" "sieve"

    sum-of-multiples -.- pythagorean-triplet -.- sieve 
end

subgraph Sub-classes[Class exercises]
    direction LR
    style Sub-classes fill: none, stroke-width:2px, color: none, stroke-width:2px,stroke-dasharray: 5 5;
    
    luhn("Luhn (D2)"):::Practice
    dnd-character("DnD Character (D2)"):::Practice
    high-scores("High Scores (D3)"):::Practice
    matrix("Matrix (D3)"):::Practice
    kindergarten-garden("Kindergarten Garden (D3)"):::Practice
    binary-search-tree("Binary Search Tree (D5)"):::Practice

    click luhn "https://exercism.org/tracks/python/exercises/luhn" "luhn"
    click dnd-character "https://exercism.org/tracks/python/exercises/dnd-character" "dnd-character"
    click high-scores "https://exercism.org/tracks/python/exercises/high-scores" "high-scores "
    click matrix "https://exercism.org/tracks/python/exercises/sieve" "sieve"
    click kindergarten-garden "https://exercism.org/tracks/python/exercises/kindergarten-garden" "kindergarten-garden "
    click binary-search-tree "https://exercism.org/tracks/python/exercises/binary-search-tree" "binary-search-tree"

    luhn -.- dnd-character & high-scores -.- matrix -.- kindergarten-garden & binary-search-tree 
end

%%exercise prerequisites and associated practice exercises (node relations)
numbers -.-o Sub-numbers
bools -.-o Sub-bools
conditionals -.-o Sub-conditionals
comparisons -.-o Sub-comparisons
strings -.-o Sub-strings
string-methods -.-o Sub-string-methods
lists -.-o Sub-lists
list-methods -.-o Sub-list-methods
loops -.-o Sub-loops
tuples -.-o Sub-tuples
dicts -.-o Sub-dicts
sets -.-o Sub-sets
classes -.-o Sub-classes
Basics ==>  strings & numbers & bools
bools ==>   conditionals
conditionals ==>  strings
conditionals ===> comparisons
lists ==> list-methods & loops 
lists ===> generators
loops ==>  tuples & functions
functions ===> generators
dicts ==> sets
sets ==> classes
strings ==> string-formatting & string-methods
strings ===>lists
tuples ==> dicts
classes ===> enums & none & generators


%%Links to concept exercises
click Basics "https://exercism.org/tracks/python/exercises/guidos-gorgeous-lasagna" "basics"
click bools "https://exercism.org/tracks/python/exercises/ghost-gobble-arcade-game" "bools"
click classes "https://exercism.org/tracks/python/exercises/ellens-alien-game" "classes"
click conditionals "https://exercism.org/tracks/python/exercises/meltdown-mitigation" "conditionals"
click comparisons "https://exercism.org/tracks/python/exercises/black-jack" "comparisons"
click conditionals "https://exercism.org/tracks/python/exercises/meltdown-mitigation" "conditionals"
click dicts "https://exercism.org/tracks/python/exercises/inventory-management" "dicts"
click dict-methods "https://github.com/exercism/python/issues/2348" "dict-methods"
click enums "https://github.com/exercism/python/tree/main/exercises/concept/restaurant-rozalynn" "enums"
click functions "https://github.com/exercism/python/issues/2353" "functions"
click generators "https://github.com/exercism/python/issues/2293" "generators"
click lists "https://exercism.org/tracks/python/exercises/card-games" "lists"
click list-methods "https://exercism.org/tracks/python/exercises/chaitanas-colossal-coaster" "list-methods"
click loops "https://exercism.org/tracks/python/exercises/making-the-grade" "loops"
click none "https://github.com/exercism/python/tree/main/exercises/concept/restaurant-rozalynn" "none"
click numbers "https://exercism.org/tracks/python/exercises/currency-exchange" "numbers"
click sets "https://exercism.org/tracks/python/exercises/cater-waiter" "sets"
click strings "https://exercism.org/tracks/python/exercises/little-sisters-vocab" "strings"
click string-formatting "https://github.com/exercism/python/tree/main/exercises/concept/pretty-leaflet" "string-formatting"
click string-methods "https://exercism.org/tracks/python/exercises/little-sisters-essay" "string-methods"
click tuples "https://exercism.org/tracks/python/exercises/tisbury-treasure-hunt" "tuples"


%%links to practice exercises
Loading

Table Representation of New Syllabus (Beta Exercises Only)

Concept Practiced Practice Exercises
numbers grains
numbers collatz-conjecture
numbers armstrong-numbers
numbers difference-of-squares
numbers diffie-hellman
bools leap
bools triangle
bools yacht
conditionals bob
conditionals pangram
conditionals pig-latin
conditionals matching-brackets
comparisons darts
comparisons perfect-numbers
comparisons all-your-base
comparisons sublist
strings sublist
strings isbn-verifier
strings raindrops
strings rotational-cipher
string-methods rna-transcription
string-methods wordy
string-methods acronym
string-methods atbash-cipher
lists resistor-color
lists flatten-array
lists diamond
lists say
lists minesweeper
lists spiral-matrix
list-methods resistor-color-duo
list-methods secret-handshake
list-methods list-ops
list-methods transpose
list-methods rail-fence-cipher
list-methods variable-length-quantity
loops binary-search
loops house
loops protein-translation
loops saddle-points
loops ocr-numbers
loops change
tuples twelve-days
tuples roman-numerals
tuples tournament
tuples food-chain
tuples dominoes
dicts etl
dicts space-age
dicts word-count
dicts scrabble-score
dicts forth
sets sum-of-multiples
sets pythagorean-triplet
sets sieve
classes luhn
classes dnd-character
classes high-scores
classes sieve
classes kindergarten-garden
classes binary-search-tree

@BethanyG BethanyG added the x:rep/massive Massive amount of reputation label May 21, 2022
@BethanyG BethanyG requested a review from bobahop May 21, 2022 00:42
@github-actions

This comment was marked as resolved.

@bobahop
Copy link
Member

bobahop commented May 21, 2022

Wow! That's a lotta work! It's kind of late for me now. I'd like to review this tomorrow when my mind is fresh, if that's okay.

Copy link
Member

@bobahop bobahop left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested changes center on difficulty levels, prerequisites, and what is being practiced for exercises with which I'm familiar from having solved and mentored them. However, they are somewhat subjective, so if none of them are accepted I won't take offense.

config.json Outdated Show resolved Hide resolved
config.json Show resolved Hide resolved
"slug": "triangle",
"name": "Triangle",
"uuid": "f0bc144f-3226-4e53-93ee-e60316b29e31",
"practices": ["bools"],
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a great exercise to introduce a decorator for validating triangle validity, but if it only can practice one concept, then booleans would be it. Although sets could also be a practiced concept here, as many solutions use the len of a set of the three sides. Not sure why the restriction to practicing only one concept.

Copy link
Member Author

@BethanyG BethanyG May 21, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The "restriction" is around how unlocking logic works. If I have this exercise practice "bools", it will show up in the tree under "bools", and be unlocked by it. Most students will then take on the exercise once they finish the "bools" concept exercise. By the time they get to doing sets, this exercise will have already been "practiced", and so be redundant for them...and vice-versa. If I have it practice sets, it will not be locked until the prerequisite is satisfied. But that closes off the exercise from students who've only completed "bools".

....But maybe this is an an opportunity to create a similar problem or extended problem, purpose-built for a set-wise solution? Analogous to "Resistor Color Duo" - only in this case, comparing triangles?? Same for decorators -- doing maybe a transform decorator that changes a triangle from one category to another??......

I don't know. But the upshot (at least for the early exercises) is that we need to pick a "main" concept that an exercise practices.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am going to leave this "unresolved", just to have the convo open. I think for now I will leave this as-is, with the thought we'd make extended or variant exercises to triangle.

config.json Outdated Show resolved Hide resolved
config.json Outdated Show resolved Hide resolved
config.json Show resolved Hide resolved
config.json Outdated Show resolved Hide resolved
config.json Outdated Show resolved Hide resolved
config.json Show resolved Hide resolved
@BethanyG
Copy link
Member Author

Alrighty. I've pushed the suggested changes. I think we can put a pin in this for now. Maybe revisit it in a bit. 😄 Thank you for your (very) thoughtful review! 🌟

@BethanyG BethanyG requested a review from bobahop May 25, 2022 20:53
@BethanyG
Copy link
Member Author

@bobahop - do we merge these changes thus far, or would you like to look at / discuss further? I am happy either way. 😄

@bobahop
Copy link
Member

bobahop commented May 26, 2022

Sorry it took me so long to notice this. I have nothing I feel strongly about to change, so I've approved it.

This is truly a massive amount of dedication and work!

@BethanyG
Copy link
Member Author

eeek. Pushing the big, green button. Let's hope this doesn't make things explode. 😬 If it is a total and complete disaster, I suppose we can always revert and try again. 😉

@BethanyG
Copy link
Member Author

Nah. I am 🐔 ...I will wait to merge until EU morning or tomm US time.

@bobahop
Copy link
Member

bobahop commented May 26, 2022

Yeah, probably best to do it when it's earlier and the mind is fresher to deal with possible unintended consequences.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
x:rep/massive Massive amount of reputation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants