Educating
with Ruby
Why Ruby is a Great Language
for Teaching (and Learning)
Programming
Brett Chalupa
Slide 2
Slide 2 text
Who are you?
Who are you?
Slide 3
Slide 3 text
Who are you?
Hopefully someone who is
interested in how and why
people learn programming.
Slide 4
Slide 4 text
Who are you?
Maybe you have kids or are
going to have kids or teach
people or want to learn
programming yourself.
Slide 5
Slide 5 text
Who am I?
Who am I?
Slide 6
Slide 6 text
Who am I?
My name is Brett Chalupa.
Slide 7
Slide 7 text
Who am I?
Slide 8
Slide 8 text
Who am I?
I work at Burton, as an
associate web programmer.
Slide 9
Slide 9 text
Who am I?
I am an organizer of the
annual Burlington Ruby
Conference.
Slide 10
Slide 10 text
Who am I?
I teach Ruby to kids.
Slide 11
Slide 11 text
Who am I?
I make things.
Slide 12
Slide 12 text
Introduction
Programming is important?
Right?
Slide 13
Slide 13 text
Introduction
Look, even Mr. i.am is taking
coding classes!
Slide 14
Slide 14 text
Introduction
Programming is empowering.
Slide 15
Slide 15 text
Introduction
Programming is exhilarating.
Slide 16
Slide 16 text
Introduction
Programming is expressive.
Slide 17
Slide 17 text
Introduction
Is programming accessible?
Slide 18
Slide 18 text
Introduction
Is programming accessible?
Yes.
Slide 19
Slide 19 text
Introduction
Is programming accessible?
Yes, but it is overwhelming.
Slide 20
Slide 20 text
Language
Java, JavaScript, Python, C, C+
+, C#, Objective-C, Lua, F#,
Scala, Clojure, the list goes on
and on.
Slide 21
Slide 21 text
Language
There are quite literally
hundreds of programming
languages out there, each
with their own role in the
world of computer science.
Slide 22
Slide 22 text
Language
How does one pick a language
to learn? Pick a name out of a
hat? Do some research?
Slide 23
Slide 23 text
Language
Maybe you go to Stack
Overflow or ask on a forum.
Slide 24
Slide 24 text
Language
If someone has had little-to-no
exposure to programming, it is
difficult to know the intricacies
of languages and how they
work.
Slide 25
Slide 25 text
Language
Do I use Netbeans, Eclipse,
XCode, IntelliJ? What the heck
is the terminal?
Slide 26
Slide 26 text
Language
Some languages are much
more difficult to learn than
others, whether it is due the
syntax, the tools, the
community or the resources
available.
Slide 27
Slide 27 text
Language
There is one language,
though, that is perfect for
those new to programming -
Ruby.
Slide 28
Slide 28 text
Language
Ruby is an expressive, open-
source, object-oriented
language that is actually fun
to program in from the
beginning.
Slide 29
Slide 29 text
Why Ruby
A person can learn Ruby and
use it for their personal
projects. A person can use it at
work projects. There is a
demand for Ruby developers.
Slide 30
Slide 30 text
Why Ruby
There is a logical path of
progression.
Slide 31
Slide 31 text
Introduction to Ruby
Ruby is really cool. So cool
that anyone naturally can read
it.
Slide 32
Slide 32 text
Introduction to Ruby
C++:
#include
using namespace std;
int main ()
{
for (int i = 0; i < 5; i++)
{
cout << "Save me!";
}
return 0;
}
Slide 33
Slide 33 text
Introduction to Ruby
Ruby:
5.times do
print "Konichiwa!"
end
Slide 34
Slide 34 text
Introduction to Ruby
Ruby:
5.times { print "Konichiwa!" }
Slide 35
Slide 35 text
Introduction to Ruby
There is much more to a
language than looping and
printing out words, but a lot of
that elegance, readability and
simplicity is common
throughout Ruby.
Slide 36
Slide 36 text
A Brief History of Ruby
Ruby is from Japan and was
initially created in the early
90s by a man named Yukihiro
Matsumoto.
Slide 37
Slide 37 text
A Brief History of Ruby
"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."
Slide 38
Slide 38 text
Why Ruby
Ruby covers a large amount of
concepts that are important in
programming (and object-
oriented programming).
Slide 39
Slide 39 text
Why Ruby
And it leaves out the "hard"
stuff.
Slide 40
Slide 40 text
Why Ruby
There are "career paths" and
you are not just limited to
using Ruby. You should pretty
easily be able to hop into C+
+, Java, Python, etc. without
too much of a problem.
Slide 41
Slide 41 text
Why Ruby
Really inspiring and helpful
community.
Slide 42
Slide 42 text
Why Ruby
Great resources like:
Hackety Hack
_why's poignant guide
try ruby
Learn Ruby the Hard Way
Railscasts
Slide 43
Slide 43 text
How I Learned to Code
It is story time.
Slide 44
Slide 44 text
How I Learned to Code
I started dabbling with code
when I was 13 with some
HTML and CSS on a Wordpress
blog.
Slide 45
Slide 45 text
How I Learned to Code
Let's rewind.
Slide 46
Slide 46 text
How I Learned to Code
I grew up with the Internet.
Slide 47
Slide 47 text
How I Learned to Code
My first formal introduction to
programming in the education
world was Java when I was 15.
Slide 48
Slide 48 text
How I Learned to Code
Why is Java the go-to
language for high school AP
computer science courses?
Slide 49
Slide 49 text
How I Learned to Code
Onward! To College!
Slide 50
Slide 50 text
How I Learned to Code
Python, AS3, C++, C# OH MY
.
Slide 51
Slide 51 text
How I Learned to Code
Apprenticeships. Let me tell
you about apprenticeships.
Slide 52
Slide 52 text
How I Learned to Code
I got apprenticeship doing
more HTML, CSS and
Wordpress (and some
thinking).
Slide 53
Slide 53 text
How I Learned to Code
I got an apprenticeship where I
learned Ruby (and some
Python).
Slide 54
Slide 54 text
How I Learned to Code
At this point, on any given
day, I was coding in C++, C#,
AS3, Ruby and Python.
Slide 55
Slide 55 text
How I Learned to Code
I got to really see the
particulars each of those
languages have.
Slide 56
Slide 56 text
How I am Still
Learning to Code
I decided to leave school and
do my own thing - to learn and
grow in my own environment.
Slide 57
Slide 57 text
How I am Still
Learning to Code
I messed with Lua. I continued
to use C++ and C#. I tried to
build games for iOS with
Objective-C.
Slide 58
Slide 58 text
How I am Still
Learning to Code
After being stretched too thin,
I decided to pick one language
and run with it.
Slide 59
Slide 59 text
How I am Still
Learning to Code
I picked the one that made the
most sense to me - Ruby.
Slide 60
Slide 60 text
How I am Still
Learning to Code
That focus allowed me to
become a better developer
and really realize the problems
that come with learning
programming.
Slide 61
Slide 61 text
The Focus
The focus really needs to be
on creating things and letting
the language just be a tool.
Slide 62
Slide 62 text
The Focus
The language needs to be the
right tool.
Slide 63
Slide 63 text
Code Camps
I taught two code camps this
summer.
Slide 64
Slide 64 text
Code Camps
The students were ages 9~13
(with a few parent students as
well).
Slide 65
Slide 65 text
Code Camps
WOW. Kids are smart.
Slide 66
Slide 66 text
How I Taught Code
Well, I used Ruby.
Slide 67
Slide 67 text
How I Taught Code
I outlined what I wanted to go
over.
Slide 68
Slide 68 text
How I Taught Code
I wanted to go over data
types, math, variables, user
input, arrays, methods, loops,
classes.
Slide 69
Slide 69 text
How I Taught Code
I quickly realized that those all
mean nothing to someone
new to programming.
Slide 70
Slide 70 text
How I Taught Code
I went with the flow!
Slide 71
Slide 71 text
How Students Learn
Code
I found that the most effective
way to teach was by having
exercises that were
interactive, engaging and built
upon each other.
Slide 72
Slide 72 text
How to Effectively
Teach Code
The examples, samples, labs,
projects, tests need to be fun.
Slide 73
Slide 73 text
How to Effectively
Teach Code
F U N
Slide 74
Slide 74 text
How to Effectively
Teach Code
Forget foobar, forget Hello
World, forget any boring
example that is not silly,
humurous or actually
applicable in the real world.
Slide 75
Slide 75 text
Challenges Faced
Creating exercises that do not
fall into the trap of being
boring or non-engaging.
Slide 76
Slide 76 text
Challenges Faced
Getting through the sludge of
technical stuff (that is still
important).
Slide 77
Slide 77 text
What the Students
Made
What the Students Made
Slide 78
Slide 78 text
Madlib
Slide 79
Slide 79 text
Comcast Customer
Support
Slide 80
Slide 80 text
Pointless Button
Slide 81
Slide 81 text
Pointless Button
Slide 82
Slide 82 text
Solar System
Slide 83
Slide 83 text
Yarn Calculator
Slide 84
Slide 84 text
How Programming
Should Be Taught
Gotta be consistent. Gotta be
fun. Gotta be real.
Slide 85
Slide 85 text
Needs to be Long Term
I truly believe if anyone wants
to learn anything, they need
to do it consistently and for an
extended period of time (read
as YEARS).
Slide 86
Slide 86 text
Why It Should Change
My experiences learning and
teaching really let me see first
hand the good and the not-so-
good.
Slide 87
Slide 87 text
Why It Should Change
I think the language and
process matter.
Slide 88
Slide 88 text
Why It Should Change
Institutions, like schools,
where students go regularly
are the best place to get new
programmers on the right
path.
Slide 89
Slide 89 text
How It Can Change
It can change through
conferences, code camps,
meetups, workshops and
creating resources that are
accessible.
Slide 90
Slide 90 text
How It Can Change
However, what will really help
change the way programming
is taught is by questioning
how, why, and what.
Slide 91
Slide 91 text
Thank You
Thank you so much for
listening, I appreciate your
time.
Slide 92
Slide 92 text
Questions &
Suggestions
Please ask them and share
them!