-
Notifications
You must be signed in to change notification settings - Fork 0
Home
wow. very flickr humour. such dork. wow. so new wiki. very help me.
Compulsory background reading: http://joshuapaling.com/post/rails-camp-micro-courses
If you are a contributor:
- Please contribute! We need topic requests:
- Ideas that you find confusing. Things nobody ever explained to you. Every single acronym, for example.
- If you're shy of writing it or suggesting it for any reason, relate it to somebody nice and they'll add it here on your behalf. If all else fails, twitzel me at https://twitter.com/gregmcintyre
- Pick something very focused that you think could be taught in 1-2 hours.
- We need microcourse write ups. I don't know, just wing it then we'll iterate. Let's try some prototypes.
- As a stretch goal, I'd like to get a few of these ready for RailsGirls in Nov so that we can entertain the more advanced attendees on the 2nd half of the 2nd day.
- Try this wicked move if you don't like being online to work on this:
git clone [email protected]:puyo/microcourses.wiki
- If you are a Ruby Australia kinda person, move this repo there and invite me to contribute to it. You know. If you want. - https://github.com/puyo/
- A single concept or topic
- 1-2 hours of mentoring
- The title is be a statement of what the person will know or be able to do at the end. This serves as a checkpoint - if the person already can do that thing, they can skip this module.
- Roughly 25% diagrams, 25% explanations, 50% code for an exercise
- List required tools at the top
- Include a one sentence challenge at the end for "extra credit". e.g. "Update your ATM code to support 24 dollar notes."
- Don't feel the need to include the real answer - the focus is on concepts and methods and information for the mentor, not answers
- Create 3 polished prototype microcourses
- Deliver them to unwitting friends or family
- Write down feedback on the course delivered
- Write down ideas to improve the process of delivery, etc. (maybe we need a comment thread on each? maybe it'd be cool if there were a place to keep people's solutions so we could analyse them for obvious points of confusion)
- Implement improvements
- Pick another 3
-
- Variables
- Procedural execution
- Basic types of values (integer, string, boolean)
- Arithmetic (integers)
- String manipulation (strings)
- Logic (booleans)
- Groups of values (arrays)
- Conditional statements (if)
- Repeated statements (loops)
- Re-using sets of statements (functions)
- Varying re-used sets of statements (parameters)
- Advanced kinds of values
- Namespaces and variable scopes
-
Ruby
- Ruby 1.8, 1.9 & 2
- Installing and finding gems
- Making your own gem
- Rake 101 (writing tasks, listing tasks, debugging tasks)
-
Object-Oriented Programming
- Constants (why do they exist, what do they do)
- Shifting requirements exercise
- Good code = easy to change
- Hard to change code vs easy to change code
- Encapsulation
- CRC
- Naming
- Coupling, cohesion, ABC, metrics
- Redo a previous exercise in OOP
- A shifting requirements exercise in OOP
-
Relational Databases
-
Development Practices
- Testing (RSpec, TestUnit)
- Refactoring (Red-Green-Refactor cycle, example refactorings, automatic refactoring theory)
- Pairing (theory and practice, TDD-oriented pairing exercise)
- Code review (Github pull request, patch gen/apply)
- Self learning (Ruby Weekly, JS Weekly, RSS feeds, MOOCs, online courses, etc.)
- Agile project management
- Continuous Integration
-
Development environment
- Installing/managing Ruby (RVM, rbenv, chruby)
- Text editor alternatives
- Vagrant
- Nitrous
-
Tools
- Command line
- REPL (IRB/Pry)
- Sublime
- Git
- Google (how to think of good ways to google a problem)
- Finding documentation (ruby-doc.org apidock.com Dash ri etc)
- Debuggers (gdb, debugger, jazz_hands/pry-debugger)
- Dependency build tools (make, rake)
- Chrome dev tools
- telnet
- tcpdump / wireshark
- Bash
- Vim
- Putting it all together - using tools in a workflow
-
Web Development
- HTTP (telnet)
- REST (Rails)
- CRUD (Rails)
- Ajax (Rails, jQuery)
- HAML (Rails)
- OOCSS/SMACSS (Static HTML)
- SASS (Rails)
- LiveReload (Rails / LiveReload.app / Middleman)
-
Rails
- Associations
- How to read the log, how to write to the log
Little exercises without a clear focus. I guess we should find each of these a focused topic for which it is a reasonably apt exercise.
- House (C, stdout, format strings, loops, terminal, colourz)
- Roman numerals Ruby C (numbers, strings, problem solving, greedy algorithms)
- ATM (numbers, functions, arrays+loops or recursion, backtracking)
- Coins (numbers, functions, backtracking, sets/arrays, potentially recursion)
- Scramble letters inside each word of a paragraph (text manipulation)
- Random pick up line generator (regular expressions)
- Gosu snowflake (graphics)
- Maze solving (mice, cheese)
- Web scraping (real world data)
- Letters and Numbers solver (hashes, b-trees, threads)
- Conway's Game of Life (problem solving, data structures)
- RubyWarrior - Coding Artificial Intelligence for Complete Beginners
- Ruby Koans - Learning basic ruby syntax and cool features
Topic driven learning
- Git Team Workflow
- Git Basics (Why use a VCS? git init, staging, commiting, git gui's - install sourcetree)
- Git Intermediate (branching, merging, resolving conflicts, rebasing, interactive rebasing)
- Recursion (code, Fibonacci numbers, and other fun patterns)
- VariableScope (parameters, instance vars, local vars, class vars)
- ProcBlocksLambdas - A beginners guide
- RailsHelpers - Making your first Rails Helper
- InstallFest/RailsGirls Blog Categories - adding categories to posts
- RubySyntacticSugar (examples of common shortcuts, and what's really going on)
- RailsMigrations - Introduction to Rails Migrations (why they're needed, how they work, why they're timestamped, rake related tasks, how the databse knows what migration it's up to, etc)
A kind of special case MicroCourse might just be "1 hour of one-on-one mentoring / pair programming with whatever you're working on". So, it's just a formal opportunity for a newbie to pair up. You'd have to be careful with this option, because I think a lot of people would choose it thinking it's best for them, when in fact a more structured basic course would be better. Maybe only offer this option in the afternoons, not the mornings, or something like that.