Skip to content

Instantly share code, notes, and snippets.

@gaustin
Created December 15, 2015 14:13
Show Gist options
  • Select an option

  • Save gaustin/17bb73a65b5a766b5a7b to your computer and use it in GitHub Desktop.

Select an option

Save gaustin/17bb73a65b5a766b5a7b to your computer and use it in GitHub Desktop.

Revisions

  1. gaustin created this gist Dec 15, 2015.
    54 changes: 54 additions & 0 deletions language_learning1.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,54 @@
    # Round 1

    Remember, there are no real rules. Learning and fun are the name of the game. The reason I'm going so far to specify the exercise below is that it should help build some common ground for comparing and contrasting.

    ## Warm up - OPTIONAL
    Koans are a good place to start. They exist for most languages. Usually there is support in place so you don't have to learn much, if anything, about building packages or other distractions.

    List of some koan projects here: http://www.lauradhamilton.com/learn-a-new-programming-language-today-with-koans (somewhat out of date I'd expect)

    http://exercism.io/ can be fun to use.

    ## Exercise 1

    ### Goal
    The goal is to validate that things are installed correctly, to learn how to do basic tasks like setting up a test framework.

    ### Task

    Pick a kata (or two, if you're ambitious) and complete it. Some reasonably small choices, roughly in order of increasing difficulty: Prime factors kata, greatest common divisor kata, bowling kata, roman numeral kata

    There is no need to work it up to the point where you'd be able to perform it fluidly. However, TDD is strongly encouraged.

    ## Exercise 2

    ### Goal

    Learn what it takes to build a package with an executable. It should be installable with whatever tool is common (e.g. stack/cabal for Haskell, leiningen for Clojure, rubygems for Ruby). There is no need to publish to a public package repo.

    ### Task

    Build a console tic-tac-toe game.

    * Two players: Computer vs. Computer, Human vs. Computer, Human vs. Human (shared keyboard)
    * The computer player can be completely naive.
    * Bonus points for a "winning" computer player.

    ## Exercise 3

    ### Goal

    Learn how to build a basic web app in a framework/library that is common in the language's community.

    Things to consider: What would it take to make it deploy ready (common practice in the community)? How does it influence your design?

    Bonus: deploy it somewhere public
    Bonus: connect to a persistent database

    ### Task

    Build a guest book. These were common in the early internet and now aren't seen much.

    * Users can leave their name and a message.
    * Entries are timestamped and listed in chronological order.
    * Bonus: sort options and pagination.