1.1. The Nature of Ruby1.1.1. Dynamic or static typing1.1.2. Duck typing1.1.3. Compiled or scripting language1.1.3.1. Compiled languages1.1.3.2. Scripted languages1.2. Object Oriented Programming1.3. The Basics of Ruby1.3.1. Ruby's interactive shell1.3.2. Ruby syntax basics1.3.2.1. Adding comments1.3.2.2. Using parentheses1.3.2.3. Using white space1.3.2.4. Using semicolons1.3.3. Running Ruby programs1.4. Classes, Objects, and Variables1.4.1. Using objects in Ruby1.4.1.1. Defining objects1.4.1.2. Writing methods1.4.1.3. Methods with parameters1.4.1.4. Creating instances of a class1.4.1.5. Instance and class methods1.4.1.6. Instance and class variables1.4.1.7. Getters and setters in Ruby objects1.4.2. Inheritance1.5. Built-in Classes and Modules1.5.1. Scalar objects1.5.1.1. Strings1.5.1.2. Numerics1.5.1.3. Symbols1.5.1.4. Times and dates1.5.2. Collections1.5.2.1. Arrays1.5.2.2. Hashes1.5.2.3. Ranges1.6. Control Flow1.6.1. Conditionals1.6.1.1. The if statement1.6.1.2. The unless statement1.6.1.3. The case statement1.6.2. Loops, blocks, and iterators1.6.2.1. for loops1.6.2.2. while and until loops1.6.2.3. Blocks1.6.2.4. Iterators1.6.3. Exception handling1.6.3.1. Exceptions in Ruby1.6.3.2. Using begin, raise, and rescue1.6.3.3. More exception handling using ensure, retry, and else1.7. Organizing Code with Modules1.8. Advanced Ruby Techniques1.8.1. Variable length argument lists1.8.2. Dynamic programming with method_missing1.8.3. Reopening classes1.9. Summary