Skip to content
Mason F. Matthews edited this page Jul 15, 2015 · 31 revisions

Welcome! If you're reading this, let's assume that you're interested in teaching Ruby and Rails to aspiring developers. This wiki offers advice and structure on this topic, and it assumes that the material is being taught to adults in an immersive code school environment.

Specifically, this is being taught over 9 weeks of lecture at the Iron Yard campus in Durham, NC, and was developed by Mason F. Matthews. Lectures are assumed to last between 3 and 3.5 hours (including break time) and to occur 4 days per week.

Overview

From the widest point of view, this curriculum takes the following weekly approach:

  1. Ruby
  2. OOP and Testing
  3. Databases and Rails Models
  4. APIs and Rails Controllers
  5. HTML and Rails Views
  6. Rails Features
  7. JavaScript
  8. Web App Patterns
  9. Web App Patterns

However, this overview hides many layers of complexity. To dig one level deeper and see broad daily topics (plus the reasoning behind some of the ordering decisions), read this detailed week-by-week page.

For an extreme level of detail, you have two options. If you prefer to read through the content linearly, explore weekly course web pages here. If you would rather see the curriculum in a matrix, take a look at the curriculum spreadsheet here.

Lecture Approach

If you choose the spreadsheet, you'll notice many

Types of Student Activities

  • Exercises
  • Challenges
  • Assignments
  • Readings
  • Workshops
  • Projects

Assignment Secondary Goals

  • Pair Programming
  • Testing and TDD
  • Estimation Practice
  • Working with Legacy Code
  • Deployment to Heroku
  • README Writing
  • ERDs
  • Workflow Diagramming

Lecture Flow

  • Homework Review
  • Challenge (weeks 3-9)
  • Break
  • Problem of the Day (weeks 1-5, occasionally afterwards)
  • New Lecture Content
  • Homework Prep

Lecture Secondary Topics

  • Human Learning: To learn, you should...
    • Get related knowledge in advance
    • Expect to exert effort
    • Try before being taught
    • Review when memory is stale
    • Scar in moderation
    • Retrieve rather than re-expose
    • Interleave topics
    • Elaborate rather than repeat
    • Study concept over implementation
    • Use short feedback loops
  • Agile Practices
    • Iterate with rigorous data collection and reflection
    • Estimating is hard
    • Hammer-user vs. shiny-object
    • All code becomes legacy code
    • Debugging is everywhere
    • Data-first vs. behavior-first
    • Start small
    • Style matters early (sadly)
    • Consider technical debt
  • git and GitHub Practices
    • init, add, commit, push
    • fork, clone, pull, .gitignore
    • pull, branch, merge, stash
    • branch, pull request, merge
    • Common git workflows (e.g. Gitflow)
    • reset, rebase, filter-branch
Clone this wiki locally