(I’m trying to not be here btw to rest, but please keep the ideas coming! Thank you all!
)
Along with badges, might a leaderboard be useful? I’d enjoy that, but I’m not sure how much work that would require.
Name: Exercism By The Week?
Not entirely related: but this is for end users. Might we make something similar for contributors/mentors? Some form of competition that would pull in new folks and kick up things.
I like the alphabet and deck-of-cards themes. With the latter, you could group exercises into one of 4 “suits” (or themes) like “algorithms”, “math”, “CS fundamentals”, etc.
I’m not sure it fits the vibe, but there’s also a TV trope of monster of the week where characters fight a new villain every episode (think Scooby Doo / Buffy / Captain Planet). Positioning each selected exercise as a cartoon “monster” (e.g. the "Leaping Lizard) could be fun (but is maybe a lot of extra creative effort.
As for the badges, I like the 100% completion. If we end up going with 4 sub-categories, those would make sense for badges too. I’m a little concerned with “do all 52 exercises in 3 languages”, since 156 exercises in a year seems like a lot (and there’s a new one every week). I might switch to exercises every other week if we want to encourage “do everything 3x”, which is still lofty but demands less of everyone. Or make it “do everything in 2 languages”; 3 just seems like a lot on paper.
While 12in23
was about branching out and trying new things, I like positioning 2024 as a year to focus in on your favorite(s) from last year and double down on them. To that end, i’m not really sold on a badge for repeating selected exercises in multiple languages anyway.
My last thought is that it may be hard to pick tracks that have every selected language. Scrolling the tracks page, there are quite a few that have fewer than 52 published. For the ones that have less than 70, I’m not sure what the overlap looks like. If we get the exercise list chosen well enough in advance, Track maintainers can probably get ahead of adding new exercises as needed, but that could also be a lot of extra burden for maintainers. Having folks pick a language that implements the week’s exercise is fine, but I think there’s a value in focusing in on one or two for the year and going deep (rather than broad). It won’t be an issue for the 10 most popular tracks, but I’d be annoyed to pick say, Julia, and only be able to use it for half the selected exercises.
All that said, this seems like a great program and I’m excited to dive in again!
Name ideas:
DeepIn24
2024Shuffle
(card metaphor)2Code4Learning
(sort of silly, but takes advantage of the fact that 2 and 4 are both english words you can use in a sentence)DeepDish24
(pizza metaphor?)52LessonsIn24
I’m not in love with any of those, just spitbaling a bit.
Also, let me know how I can help!
Yes, weekly exercise make it more competitive and give reason to stick with the track, because in the #12in23
I lost on the track after participating two-three month.
but,
Thanks to #12in23
I learnt languages like elixir and rust so thank you
Related to my original concept, we could have a core badge instead of multiple month-specific badges. That badge gets leveled up throughout the year, changing rarity at certain stages of completion. That’ll give the student a sense of continuity and progress over the year. It’ll also encourage them to keep a streak going, but since the streak is by week and not day, the stakes are much lower. They’ll have ample time for rest in between featured exercises
To help us figure out what exercise to feature and what language to use, I’ve gathered some data. The below table contains a list of all practices exercises that:
- Are defined in
problem-specifications
- Has
status
set toactive
- Has its track’s
status
set toactive
- Is implemented by more than one track
The following table lists each of these exercises along with the week they’re featured in (which is TBD for all but the first two), as well as the track that we’ll feature the exercise in as well as the total number of tracks that have implemented that exercise (for the full list of tracks per exercise, see this Gist):
Exercise | Week | Track | Num Tracks |
---|---|---|---|
hello-world | 1 | TBD | 67 |
leap | 2 | TBD | 65 |
hamming | TBD | TBD | 62 |
raindrops | TBD | TBD | 62 |
rna-transcription | TBD | TBD | 62 |
bob | TBD | TBD | 59 |
difference-of-squares | TBD | TBD | 59 |
triangle | TBD | TBD | 59 |
grains | TBD | TBD | 58 |
acronym | TBD | TBD | 56 |
isogram | TBD | TBD | 56 |
pangram | TBD | TBD | 56 |
two-fer | TBD | TBD | 56 |
anagram | TBD | TBD | 55 |
collatz-conjecture | TBD | TBD | 55 |
atbash-cipher | TBD | TBD | 54 |
luhn | TBD | TBD | 53 |
nucleotide-count | TBD | TBD | 53 |
space-age | TBD | TBD | 53 |
allergies | TBD | TBD | 52 |
roman-numerals | TBD | TBD | 52 |
scrabble-score | TBD | TBD | 52 |
word-count | TBD | TBD | 52 |
armstrong-numbers | TBD | TBD | 51 |
all-your-base | TBD | TBD | 49 |
darts | TBD | TBD | 49 |
etl | TBD | TBD | 49 |
matching-brackets | TBD | TBD | 49 |
sum-of-multiples | TBD | TBD | 49 |
phone-number | TBD | TBD | 48 |
binary-search | TBD | TBD | 46 |
queen-attack | TBD | TBD | 46 |
reverse-string | TBD | TBD | 45 |
gigasecond | TBD | TBD | 44 |
sieve | TBD | TBD | 44 |
perfect-numbers | TBD | TBD | 43 |
run-length-encoding | TBD | TBD | 43 |
nth-prime | TBD | TBD | 42 |
pascals-triangle | TBD | TBD | 42 |
prime-factors | TBD | TBD | 42 |
secret-handshake | TBD | TBD | 42 |
clock | TBD | TBD | 41 |
largest-series-product | TBD | TBD | 41 |
rotational-cipher | TBD | TBD | 40 |
crypto-square | TBD | TBD | 39 |
series | TBD | TBD | 39 |
protein-translation | TBD | TBD | 38 |
diamond | TBD | TBD | 37 |
grade-school | TBD | TBD | 37 |
isbn-verifier | TBD | TBD | 37 |
resistor-color | TBD | TBD | 37 |
robot-simulator | TBD | TBD | 37 |
resistor-color-duo | TBD | TBD | 35 |
meetup | TBD | TBD | 34 |
say | TBD | TBD | 34 |
minesweeper | TBD | TBD | 33 |
sublist | TBD | TBD | 33 |
robot-name | TBD | TBD | 32 |
binary-search-tree | TBD | TBD | 31 |
matrix | TBD | TBD | 31 |
pig-latin | TBD | TBD | 31 |
wordy | TBD | TBD | 31 |
flatten-array | TBD | TBD | 30 |
pythagorean-triplet | TBD | TBD | 30 |
saddle-points | TBD | TBD | 30 |
change | TBD | TBD | 29 |
circular-buffer | TBD | TBD | 29 |
high-scores | TBD | TBD | 29 |
kindergarten-garden | TBD | TBD | 29 |
list-ops | TBD | TBD | 29 |
proverb | TBD | TBD | 29 |
bowling | TBD | TBD | 27 |
linked-list | TBD | TBD | 27 |
strain | TBD | TBD | 27 |
affine-cipher | TBD | TBD | 26 |
complex-numbers | TBD | TBD | 26 |
custom-set | TBD | TBD | 26 |
resistor-color-trio | TBD | TBD | 26 |
yacht | TBD | TBD | 26 |
palindrome-products | TBD | TBD | 25 |
simple-cipher | TBD | TBD | 25 |
transpose | TBD | TBD | 25 |
dnd-character | TBD | TBD | 24 |
forth | TBD | TBD | 24 |
ocr-numbers | TBD | TBD | 24 |
rail-fence-cipher | TBD | TBD | 24 |
spiral-matrix | TBD | TBD | 24 |
twelve-days | TBD | TBD | 24 |
two-bucket | TBD | TBD | 24 |
bank-account | TBD | TBD | 23 |
pop-count | TBD | TBD | 23 |
tournament | TBD | TBD | 23 |
house | TBD | TBD | 22 |
square-root | TBD | TBD | 22 |
variable-length-quantity | TBD | TBD | 22 |
dominoes | TBD | TBD | 21 |
simple-linked-list | TBD | TBD | 21 |
book-store | TBD | TBD | 20 |
food-chain | TBD | TBD | 20 |
knapsack | TBD | TBD | 20 |
rectangles | TBD | TBD | 20 |
alphametics | TBD | TBD | 19 |
connect | TBD | TBD | 19 |
poker | TBD | TBD | 19 |
rational-numbers | TBD | TBD | 19 |
react | TBD | TBD | 17 |
zebra-puzzle | TBD | TBD | 17 |
zipper | TBD | TBD | 17 |
grep | TBD | TBD | 16 |
bottle-song | TBD | TBD | 14 |
parallel-letter-frequency | TBD | TBD | 13 |
word-search | TBD | TBD | 13 |
killer-sudoku-helper | TBD | TBD | 12 |
markdown | TBD | TBD | 12 |
pov | TBD | TBD | 11 |
satellite | TBD | TBD | 10 |
go-counting | TBD | TBD | 9 |
error-handling | TBD | TBD | 8 |
rest-api | TBD | TBD | 8 |
sgf-parsing | TBD | TBD | 8 |
ledger | TBD | TBD | 7 |
dot-dsl | TBD | TBD | 6 |
hangman | TBD | TBD | 6 |
tree-building | TBD | TBD | 6 |
state-of-tic-tac-toe | TBD | TBD | 5 |
lens-person | TBD | TBD | 3 |
micro-blog | TBD | TBD | 3 |
paasio | TBD | TBD | 3 |
The second step is to come up with 52 exercises that we want to feature and select the track with which we do so.
For the exercise selection, we should prefer exercises that:
- are implemented in many languages
- can be solved in different ways (in other words: have multiple approaches)
For the track selection, we should prefer a track that:
- fits the exercise well (some exercises make less sense in some tracks, even though they’ve been implemented in that track)
- supports the exercise being solved in different ways
- has not yet been featured for another exercise (I probably don’t want to make this a requirement (yet))
Hello. Happy new year everyone. Thanks for all your discussion! Little update from me on this…
- We’re going to do 48 exercises and call it #48in24.
- We won’t have exercises in the first or last two weeks of the year.
- You can solve the exercises at any time during the year, but they’ll be released once per week.
- Each exercise will have three featured tracks in which we recommend solving it. Those tracks will be featured based on us offering variety (as per 12in23), how interesting it is to solve in a particular language, and how comprehensive that language has implemented the exercise in terms of approaches etc.
- There are three levels of completion for each exercise:
- Bronze: Complete it in any track during the year
- Silver: Complete it in any three track during the year
- Gold: Earn Silver + have completed it all three featured tracks (either historically or this year).
- There will be badges for various levels of earning bronze/silver/golds (I’m not sure what yet - but we can be creative)
- We’ll launch the sign up page this week.
From a community perspective, we’d love to use this to get more walkthroughs and approaches made to really enrich the quality of the exercises, as well as refining descriptions for each one etc. I feel that’s one of the most valuable things we can do to make Exercism better for students. I’d also like Erik and I to put together some weekly “chat about the exercise” videos for each exercise as part of this, but need to work out the burden of creation of that with Erik before committing. Erik will be working out a plan of how to achieve that with you all. We’ll have a community call soon too where we can discuss it.
I’m considering the “leaderboard” idea - there’s pros and cons to it, so I want to take some time over it.
I’m open to extra ideas or suggestions!
It’s great to see the consideration of exercises done historically (for the gold level), as the more we do the exercise, the more difficult it will be to find the necessary exercises in the languages individuals want to learn.
I’ve updated the gist to also list what tracks have approaches (and how many) and which do not: 52in24.md · GitHub
In terms of choosing exercises, my preference would be ones that can be solved in multiple interesting ways, and also just a focus on variety of difficulty and type (e.g. algorithm, maths/not, strings/not, data structures, etc)
I’m locking this issue and defering to the new 48in24 Category where we can start new threads. Thanks for weighing in everyone - it’s only based on all your feedback that we’re doing this