Ruby Immersion

Course Code: PRI01
Length: 20 days

Schedule and Registration

This course is not currently scheduled.

Course Description

Ruby Immersion is an intensive four-week coding school which focuses on the Ruby programming language as a general purpose software development tool. Unlike the dozens of other "Ruby on Rails" bootcamps that are currently available, Ruby Immersion is truly "Ruby only" -- Rails will certainly be mentioned, but it's not the focus of this class (yes, a Rails code school could be a great follow-on training to this one).

For me the purpose of life is partly to have joy. Programmers often feel joy when they can concentrate on the creative side of programming. So Ruby is designed to make programmers happy.

Yukihiro 'Matz' Matsumoto

Our goal is to produce competent Rubyists -- "World Class Beginners" -- people who can apply the Ruby programming language in any appropriate software development effort. This bootcamp is a deep-dive into the Ruby programming language in all of its facets, from basic syntax through scripting, fully-functional applications to introspection and meta-programming.

The first week of Ruby Immersion presents the essential fundamentals of the Ruby language syntax, and introduction to object-oriented programming itself, plus exposure to the essential Ruby programming toolkit and software development practices.

The second week of Ruby Immersion is a deep dive into syntax and semantics of Ruby, with continuing exposure to the essential Ruby programming toolkit and software development practices.

The third week of Ruby Immersion is continues the deep dive into syntax and semantics of Ruby, purposely emphasizing the creation of practical and representative programs which address real-world problems.

The fourth and final week of Ruby Immersion is provides an introduction to the advanced facets of object-oriented Ruby -- metaprogramming, introspection and reflection -- techniques for powerful and general abstractions which underlie widely used Gems and frameworks such as Rake, Rails and RSpec. This week is the payoff and capstone to the intensive study required of the bootcamp students.

Who Should Attend

Ruby Immersion is designed for software developers, technologists, system administrators and others who want to:

  • Learn a new programming language, adding a modern object-oriented language to their toolkit
  • Become more productive using a dynamic scripting language
  • Improve their problem solving abilities using Ruby as an exemplar
  • Experience agile, team-oriented programming techniques
  • Start building the foundation of a new technical career with Ruby
  • Pivot their career into Ruby software development

Ruby Immersion bootcampers are not expected to be experienced software developers, but this bootcamp is not appropriate for absolute beginners in programming (see Prerequisites below).

"We just need the Turing machine to solve all of our problems, in theory. Humans require more sophisticated tools to program. It's a matter of human need. As long as some people feel happy using Ruby, that's enough of a reason for another language for me."

Yukihiro 'Matz' Matsumoto


We do not expect Ruby Immersion bootcampers to be experienced software developers -- you have to start somewhere -- but we do expect each student to have a certain level of technical, computer-user competence:

  • Some level of exposure to and experience in writing programs, in any language. The general idea of writing software should not be a complete novelty to you -- this is not a course for absolute beginners at software development.
  • Experience with a text editor.
  • A level of comfort at the command line (bash).
  • An ability to think and execute with clarity and precision.
  • A strong desire to make a life-changing career pivot.
  • A short, required pre-Bootcamp reading list will be provided.

"In our daily lives as programmers, we process text strings a lot. So I tried to work hard on text processing, namely the string class and regular expressions. Regular expressions are built into the language and are very tuned up for use. We also need to call into the operating system a lot. This brings the power and function of the operating system to the interpretive language environment. So you can do daily systems administration and text processing programming. That's the major domain of at least my life, so I worked hard on making that good."

Yukihiro 'Matz' Matsumoto

Benefits of Attending this Class

Completion of Ruby Immersion students will gain an introduction to basic Ruby syntax, introductory OOP concepts, and will provide initial exposure and guidance to the essential Ruby programming toolset and environment. Students will be equipped to write competent entry-level Ruby programs to address real-world problems and simple applications.

Why should you switch to Ruby? If you are happy with Perl or Python, you don't have to. But if you do feel there must be a better language, Ruby may be your language of choice. Learning a new language is harmless. It gives you new ideas and insights. You don't have to switch, just learn and try it. I hope to see Ruby help every programmer in the world to be productive, and to enjoy programming, and to be happy. That is the primary purpose of Ruby language.

Yukihiro 'Matz' Matsumoto

Students will be able to apply Ruby coding methodology to typical problems and application domains, and paves the way for learning and appreciation of advanced Ruby metaprogramming techniques. Students will be fully prepared in the application of Ruby to a wide range of problems and opportunities, and for optional attendance at a Rails code school.

Course Contents

Ruby: What is it, what's it used for, an overview
Essential laptop/coder tools and resources
  • Ruby and RVM (Ruby Version Manager)
  • IRB (Interactive Ruby)
  • Text editor, the programmer's best friend
    • Atom
    • Sublime Text
  • The command line (bash)
  • Help: man pages, ri (Ruby Information)
  • Repositories: Git and GitHub
Intro to collaborative programming (pairs and teams)
Ruby basics
  • Variables (objects), assignments
  • I/O: puts and gets, chomp
  • Strings and interpolation
  • To quote: single or double?
  • Numbers
  • Expressions and statements
  • Flow control (comparisons, decisions, if, case, loops)
  • Ranges, Iterators and Enumeration
  • Program structure
Intro to objects
  • Methods and messages
  • Data types - hashes and arrays
  • Invoking methods
  • Arguments, parameters and defaults
  • Return values
  • Duck typing, built-in data objects
Intro to and survey of the Ruby standard library
  • Numerical library methods
  • String library methods
  • Array library methods
  • Hash library methods
Collaborative Study
  • Readings
  • Scales and études (paired exercises and labs)
  • Concerti (team project)
Ruby in more depth
  • Strings and interpolation
  • Searching and substitutions
  • String library methods
  • Intro to Regexps and pattern matching
  • Numbers in depth
    • Numeric: Integer and Float
    • Fixnum
    • Bignum
    • Rational
    • Complex
Ruby library resources
  • String library methods
  • Numeric library methods
  • Time and Datetime methods
  • Hash and Array library methods
  • File, Dir and IO methods
  • Kernel and Process methods
Intro to Ruby Gems
Building a command line interface
Configuration files with YAML
Debugging strategies
Collaborative Study
  • Readings
  • Scales and études (paired exercises and labs)
  • Concerti (team project)
Ruby in context
  • Standard and common idioms
  • Blocks, Procs and lambdas
  • Defining, organizing and invoking methods and classes
    • Arg-lists and parameters
    • Defining and initializing classes with attributes
    • Modules and mix-ins
Ruby's object oriented model
  • Object scoping
  • Constants, global and local variables
  • Instance and class variables
  • Duck typing
  • Handling errors and exceptions
  • Access control
Collaborative Study
  • Readings
  • Scales and études (paired exercises and labs)
  • Concerti (team project)
Ruby metaprogramming
  • Introspection and reflection
  • Advanced Ruby techniques
  • How Ruby finds and invokes methods
  • The missing method
  • Hooks
  • Open classes and modules
Gems walkthroughs
  • Rake
  • Rails
Metaprogramming use cases
Collaborative Study
  • Readings
  • Scales and études (paired exercises and labs)
  • Concerti (team project)

What should be brought to Ruby Immersion?

Each student must provide and bring his/her own laptop computer, with an up-to-date Linux (preferred) or Mac OSX installed ― we will not use MS Windows. Please review our laptop configuration page for more detailed requirements.