Ruby Immersion

Course Code: PRI01Length: 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

Prerequisites

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.