Ruby Metaprogramming Course 6th Batch: Learn to Think in Ruby

by Satish Talim on November 6, 2010

After the huge success of the first five “Ruby Metaprogramming” batches, RubyLearning now announces the sixth batch from 4th Dec. 2010.

What’s Ruby Metaprogramming?

Paolo Perrotta has this to say:

As a Ruby programmer, you already know how much fun it is. Now see how to unleash its power, digging under the surface and exploring the language’s most advanced features: a collection of techniques and tricks known as metaprogramming. Once the domain of expert Rubyists, metaprogramming is now accessible to programmers of all levels – from beginner to expert.

Paolo goes on to say the following in a recent interview:

I realized that metaprogramming sits at the very heart of the language, and when you understand metaprogramming, that’s the moment you start “thinking in Ruby”.

Who’s It For?

Anyone who has some background in Core Ruby can make the most out of this course.

Dates

The course starts on 4th Dec. 2010 and runs for 2 weeks. You first need to register on the site and then enroll into the course.

Early Bird Registration Discounts

  • For the first 10 registrations, Course Fee: US$ 9.95 per participant.
  • For the next 30 registrations, Course Fee US$ 14.95 per participant.
  • After the first 40 registrations, Course Fee US$ 19.95 per participant.

The course fee goes towards maintaining RubyLearning and helps provide quality content to you.

What Will I Learn?

The brief outline of this course is:

First Week:

  • Review the object model of Ruby itself:
    • read-only variable self
    • singleton class
    • scope of variables
  • Learn a lot of methods:
    • eval
    • instance_eval
    • class_eval (aka: module_eval)
    • class_variable_set
    • class_variable_get
    • class_variables (Try it out: instance_variables)
    • instance_variable_set (Try it out: instance_variable_get)
    • define_method
    • const_set
    • const_get (Try it out: constants)
    • Class.new (Try it out: Struct.new)
    • binding (Try it out: lambda)
    • send (Try it out: method)
    • remove_method
    • undef_method
    • method_missing
    • include
    • extend
    • included
    • extended
  • Do the following five exercises and discuss them in the forum.
    • Exercise 1: Get the values from outside the class.
    • Exercise 2: Add your code to display ‘I like metaprogramming!’
    • Exercise 3: Show lots of ways to define singleton method.
    • Exercise 4: Glance inside Ruby with binding method.
    • Exercise 5: Define a class without class and def.

Second Week:

  • Practice with assignments on how to write a tiny app with Ruby Metaprogramming techniques. The assignments are being prepared.

For Newbies

We will give you short study notes. You can learn the following and discuss the same in the course forum.

  • Instance variables, Methods and Classes
  • Calling a method
  • Useful methods in Ruby Metaprogramming
  • Ruby Blocks and Bindings
  • Solved Problems (two examples)

For Intermediate Participants

We willl open the discussion forum with some advanced topics like “Compare Ruby Callable Objects” (Yugui’s blog posts) etc.

Who is conducting this course?

The course teacher is Satoshi Asakawa from Japan with 24×7 help from the mentors at RubyLearning. Satoshi is a Japanese Ruby enthusiast.

So hurry, registrations have started.

By the end of the course, and to reiterate what Paolo Perrotta said, you will understand metaprogramming and that’s the moment you will start “thinking in Ruby”.

Update

7th Oct. 2010: So far, the registered participants are from:

Charting Software ChartGo.com

Technorati Tags: , , , ,

Posted by Satish Talim

{ 4 comments… read them below or add one }

Ray November 8, 2010 at 3:28 pm

Hi, I’m not familiar with your course system yet.
Could you elaborate a little bit how this course works? Would it be possible to do this aside the day job? How much time per week do you estimate this takes? How much interaction between teacher and student will there be?

Thanks
Ray

Reply

Satish Talim November 8, 2010 at 3:36 pm

To answer your questions:

a. I have explained (briefly) below how the course works.
b. Yes, it’s possible to do this aside the day job.
c. The time depends entirely on you – your previous Ruby knowledge etc.

Some details

Once the course starts, you can login and start with the lessons any day and time and post your queries in the forum under the relevant lessons. Someone shall always be there to answer them. Just to set the expectations correctly, there is no real-time ‘webcasting’.

Methodology:
  • The Mentors shall give you URL’s of pages and sometimes some extra notes; you need to read through. Read the pre-class reading material at a convenient time of your choice – the dates mentioned are just for your guideline. While reading, please make a note of all your doubts, queries, questions, clarifications, comments about the lesson and after you have completed all the pages, post these on the forum under the relevant lesson. There could be some questions that relate to something that has not been mentioned or discussed by the mentors thus far; you could post the same too. Please remember that with every post, do mention the operating system of your computer.
  • The mentor shall highlight the important points that you need to remember for that day’s session.
  • There could be exercises every day. Please do them.
  • Participate in the forum for asking and answering questions or starting discussions. Share knowledge, and exchange ideas among yourselves during the course period. Participants are strongly encouraged to post technical questions, interesting articles, tools, sample programs or anything that is relevant to the class / lesson. Please do not post a simple "Thank you" note or "Hello" message to the forum. Please be aware that these messages are considered noises by people subscribed to the forum.
Outline of Work Expectations:
  1. Most of the days, you will have exercises to solve. These are there to help you assimilate whatever you have learned till then.
  2. Some days may have some extra assignments / food for thought articles / programs
  3. Above all, do take part in the relevant forums. Past participants will confirm that they learned the best by active participation.
Some Commonly Asked Questions
  • Qs. Is there any specific time when I need to be online?
    Ans. No. You need not be online at a specific time of the day.
  • Qs. Is it important for me to take part in the course forums?
    Ans. YES. You must Participate in the forum(s) for asking and answering questions or starting discussions. Share knowledge, and exchange ideas among yourselves (participants) during the course period. Participants are strongly encouraged to post technical questions, interesting articles, tools, sample programs or anything that is relevant to the class / lesson. Past participants will confirm that they learned the best by active participation.
  • Qs. How much time do I need to spend online for a course, in a day?
    Ans. This will vary from person to person. All depends upon your comfort level and the amount of time you want to spend on a particular lesson or task.
  • Qs. Is there any specific set time for feedback (e.g., any mentor responds to me within 24 hours?)
    Ans. Normally somebody should answer your query / question within 24 hours.
  • Qs. What happens if nobody answers my questions / queries?
    Ans. Normally, that will not happen. In case you feel that your question / query is not answered, then please post the same in the thread – “Any UnAnswered Questions / Queries”.
  • Qs. What happens to the class (or forums) after a course is over? Can you keep it open for a few more days so that students can complete and discuss too?
    Ans. The course and its forum is open for a month after the last day of the course.

Reply

Ray November 8, 2010 at 3:51 pm

Thanks for the FAQ, I just registered.

Reply

Satish Talim November 8, 2010 at 3:52 pm

I am confident that you will enjoy the course as have hundreds of participants before you.

Reply

Leave a Comment

{ 14 trackbacks }

Previous post:

Next post: