/Programming101-Ruby

The repository for Programming 101 with Ruby.

Primary LanguageRuby

Programming101-Ruby

The repository for Programming 101 with Ruby.

Partners

This course is happening, thanks to:

Hosting Partners

SiteGround

Problems & Solutions

Week Problem Solution
week01 1-Warmup-Problems procedural_solutions.rb, good_solutions.rb
week01 2-List-and-Hashes solutions.rb
week01 3-I-Know-Everything None
week02 1-Points None
week02 2-Vector None
week02 3-Resolve-with-each None
week03 1-fmi-tribute None
week03 2-Patch-Hash solution.rb
week03 3-My-Enumerable solution.rb, solution_test.rb
week03 4-FMI-Tribute-Number-Set None
week04 1-Game-Of-Life None
week04 2-Polynoms-And-Derivates solution.rb, solution_test.rb

Course Program

This is a detailed program about the course, separated in weeks

Week 1

  • Ruby introduction.
  • Rbenv/Ruby Installer and Git setup.
  • Introduction to the basic Ruby types, syntax & language structures.
  • Solving problems with Ruby.

Week 2

  • In depth look of Array, Hash, String, Symbol, Numeric.
  • Introducing Ruby blocks.
  • Working with Enumerable and all it's magic.

Week 3

  • OOP Introduction. Classes, Modules and Constants.
  • Freedom patching. Opening classes & adding functionality.
  • Method resolution lookup and ancestor chain.
  • Implementing our own Enumerable objects.

Week 4

  • Keyword arguments & parallel assingments.
  • Second take on Ruby OOP model
  • Sending messages arround and responding to them. Working with method aliases.
  • Understanding Duck Typing & SOLID principles.
  • Solving OOP problems

Week 5

  • Enumerators in Ruby.
  • Lambda vs Proc semantics.
    • require vs load.
  • Working IO in Ruby. Dealing with Files.
  • Dealing with exceptions.

Week 6

  • Kernel & Module methods.
  • Constants & Scope
  • Making namespaces in Ruby

Week 7

  • Singleton classes.
  • Dynamic method definition.
  • Don't be evil: class_eval and instance_eval.
  • Constants, instance variables API.

Week 8

  • Threading or: How I Learned to Stop Worrying and Learned to Love the GIL.
  • JRuby and Rubinius.
  • Threading locals. Fibers.
  • Basic networking.

Week 9

  • RubyGems: The structure of a gem. Gem specifications. Rake. Bundler.
  • Introspection & Meta programming in Ruby.

Week 10

  • Looking at the bigger picture & solving problems using everything we know up to know.
  • Working in teams

Week 11

  • Intro to HTTP. The Tricky Parts: Cookies, Sessions.
  • Intro to Sinatra.

Week 12

  • Intro to SQL. Transactions, Primary Keys, Foreign Keys, Indexes.
  • The Architecture of a Web app.

Week 13, 14, 15, 16 - The Rails part

  • Intro to Rails: Convention over Configuration.
  • Overview of the Builtin Frameworks, Scaffolding.
  • Basic Routing and Controller Rendering.
  • Views, Layouts and Partials Structure.
  • Controller Rendering and Redirection. Basic Authentication. Rendering forms. Mailers, Intro to ActiveJob.
  • Intro to ActiveRecord. Intro to schema.rb and Migrations. Validations and Callbacks. How not to abuse the callbacks.
  • Basic Query Interface. Intro to associations. Associations in depth. Many-to-many, .through, Automatic Reverses.
  • Transactions, Single table inheritence. Has Secure Password. Musings on Small Models. Sandi Metz 5 Rules. Thoughts on OOP.
  • Routes inside out. Introduction to engines. Middleware, Rack, Railties, Initializers and Configuration.
  • The Rails Eco System. Third party gems. Responders, Timecop, RSpec, Capybara. Active Model, Internationalization.
  • Constant Autoloading explained. The Asset Pipeline. Rake Tasks, Command Line Tools and Debugging Rails applications.