Teaching Programming Languages (including Ruby)

  • Thread starter Samuel Williams
  • Start date
S

Samuel Williams

Hello,

This is a follow up from previous postings about teaching Ruby in the =
class room.

I've now come full circle, and put together this website:
http://programming.dojo.net.nz/

This site is about programming languages in general, and is designed to =
be a starting point for people interested in learning more about a given =
programming language.

I'd be really grateful for people to look at the site and let me know =
any feedback about the content and how it is presented.

In particular interest to this group is the Ruby page:
http://programming.dojo.net.nz/languages/ruby/index

Also, under the Resources section, there are a set of posters (including =
one for Ruby). These posters are designed for class rooms where they =
will stimulate interest in programming languages. The posters are likely =
to have at least one more iteration, so any feedback on them would be =
appreciated (including corrections or improvements).

=
http://programming.dojo.net.nz/resources/programming-language-posters

If anyone has any suggestions about particular resources or reading =
material, please let me know. Keep in mind this is a site for absolute =
beginners.

Thanks,

Kind regards,
Samuel=
 
J

James D. Maher

Awfully ambitious!

But what? No COBOL?

Does this mean you've given up on creating teaching materials for Ruby?
The referenced website is such a comprehensive undertaking that it must
interfere with steady progress on Ruby teaching, right?



j

James D. Maher
(e-mail address removed)

-----Original Message-----
From: Samuel Williams [mailto:[email protected]]=20
Sent: Sunday, May 02, 2010 7:28 AM
To: ruby-talk ML
Subject: Teaching Programming Languages (including Ruby)

Hello,

This is a follow up from previous postings about teaching Ruby in the
class room.

I've now come full circle, and put together this website:
http://programming.dojo.net.nz/

This site is about programming languages in general, and is designed to
be a starting point for people interested in learning more about a given
programming language.

I'd be really grateful for people to look at the site and let me know
any feedback about the content and how it is presented.

In particular interest to this group is the Ruby page:
http://programming.dojo.net.nz/languages/ruby/index

Also, under the Resources section, there are a set of posters (including
one for Ruby). These posters are designed for class rooms where they
will stimulate interest in programming languages. The posters are likely
to have at least one more iteration, so any feedback on them would be
appreciated (including corrections or improvements).

=09
http://programming.dojo.net.nz/resources/programming-language-posters

If anyone has any suggestions about particular resources or reading
material, please let me know. Keep in mind this is a site for absolute
beginners.

Thanks,

Kind regards,
Samuel
 
A

AAMIR KHAN

[Note: parts of this message were removed to make it a legal post.]

yeah the links given are good..
but i have opened one of the books on wikibooks and there was no option to
download that book..
so if you can provide with some downloadable material then it will be
great...
 
S

Samuel Williams

Dear James,

Cobol could be considered, but my goal was mostly to try and get a =
sample of existing and educationally relevant languages, rather than a =
historically accurate resource.

One thing which you might be interested in is on the Resources page =
there is a link to programming language history poster:
http://www.levenez.com/lang/

This is quite a good poster if you are interested in the historical =
aspect of programming language evolution.

I have not given up on producing teaching materials for Ruby. This is =
simply stepping back and looking at the bigger picture. However, the =
goal for this site in the future will be the addition of tutorials =
teaching Ruby. The original tutorial (in need of a bit of TLC) is still =
under development:
http://programming.dojo.net.nz/study/learn-ruby

It still requires a lot more work.

Thanks for your feedback.

Kind regards,
Samuel
 
S

Samuel Williams

Dear Aamir,

Can you tell me exactly what link you looked at?

The Starting Points are mostly external links and not something I can =
control unfortunately. I've tried to select ones that are generally good =
for beginner to intermediate.

Thanks for your feedback.

Kind regards,
Samuel

yeah the links given are good..
but i have opened one of the books on wikibooks and there was no = option to
download that book..
so if you can provide with some downloadable material then it will be
great...
=20
=20
Awfully ambitious!
=20
But what? No COBOL?
=20
Does this mean you've given up on creating teaching materials for = Ruby?
The referenced website is such a comprehensive undertaking that it = must
interfere with steady progress on Ruby teaching, right?
=20
=20
=20
j
=20
James D. Maher
(e-mail address removed)
=20
-----Original Message-----
From: Samuel Williams [mailto:[email protected]]
Sent: Sunday, May 02, 2010 7:28 AM
To: ruby-talk ML
Subject: Teaching Programming Languages (including Ruby)
=20
Hello,
=20
This is a follow up from previous postings about teaching Ruby in the
class room.
=20
I've now come full circle, and put together this website:
http://programming.dojo.net.nz/
=20
This site is about programming languages in general, and is designed = to
be a starting point for people interested in learning more about a = given
programming language.
=20
I'd be really grateful for people to look at the site and let me know
any feedback about the content and how it is presented.
=20
In particular interest to this group is the Ruby page:
http://programming.dojo.net.nz/languages/ruby/index
=20
Also, under the Resources section, there are a set of posters = (including
one for Ruby). These posters are designed for class rooms where they
will stimulate interest in programming languages. The posters are = likely
to have at least one more iteration, so any feedback on them would be
appreciated (including corrections or improvements).
=20
=20
http://programming.dojo.net.nz/resources/programming-language-posters
=20
If anyone has any suggestions about particular resources or reading
material, please let me know. Keep in mind this is a site for = absolute
beginners.
=20
Thanks,
=20
Kind regards,
Samuel
=20
=20
 
A

AAMIR KHAN

[Note: parts of this message were removed to make it a legal post.]

I have looked at wikibooks link on PHP learning part..but i don't fond a
book there just some information but no downloadable book

On Sun, May 2, 2010 at 6:56 PM, Samuel Williams <
Dear Aamir,

Can you tell me exactly what link you looked at?

The Starting Points are mostly external links and not something I can
control unfortunately. I've tried to select ones that are generally good for
beginner to intermediate.

Thanks for your feedback.

Kind regards,
Samuel

yeah the links given are good..
but i have opened one of the books on wikibooks and there was no option to
download that book..
so if you can provide with some downloadable material then it will be
great...

Awfully ambitious!

But what? No COBOL?

Does this mean you've given up on creating teaching materials for Ruby?
The referenced website is such a comprehensive undertaking that it must
interfere with steady progress on Ruby teaching, right?



j

James D. Maher
(e-mail address removed)

-----Original Message-----
From: Samuel Williams [mailto:[email protected]]
Sent: Sunday, May 02, 2010 7:28 AM
To: ruby-talk ML
Subject: Teaching Programming Languages (including Ruby)

Hello,

This is a follow up from previous postings about teaching Ruby in the
class room.

I've now come full circle, and put together this website:
http://programming.dojo.net.nz/

This site is about programming languages in general, and is designed to
be a starting point for people interested in learning more about a given
programming language.

I'd be really grateful for people to look at the site and let me know
any feedback about the content and how it is presented.

In particular interest to this group is the Ruby page:
http://programming.dojo.net.nz/languages/ruby/index

Also, under the Resources section, there are a set of posters (including
one for Ruby). These posters are designed for class rooms where they
will stimulate interest in programming languages. The posters are likely
to have at least one more iteration, so any feedback on them would be
appreciated (including corrections or improvements).


http://programming.dojo.net.nz/resources/programming-language-posters

If anyone has any suggestions about particular resources or reading
material, please let me know. Keep in mind this is a site for absolute
beginners.

Thanks,

Kind regards,
Samuel
 
S

Samuel Williams

Dear Aamir,

I see what you mean.

On the right hand side of that page is a link which says "Download as =
PDF"

This might be what you are after?

Kind regards,
Samuel

I have looked at wikibooks link on PHP learning part..but i don't fond = a
book there just some information but no downloadable book
=20
On Sun, May 2, 2010 at 6:56 PM, Samuel Williams <
Dear Aamir,
=20
Can you tell me exactly what link you looked at?
=20
The Starting Points are mostly external links and not something I can
control unfortunately. I've tried to select ones that are generally = good for
beginner to intermediate.
=20
Thanks for your feedback.
=20
Kind regards,
Samuel
=20
On 3/05/2010, at 1:15 AM, AAMIR KHAN wrote:
=20
yeah the links given are good..
but i have opened one of the books on wikibooks and there was no =
option
to
download that book..
so if you can provide with some downloadable material then it will = be
great...
=20
=20
Awfully ambitious!
=20
But what? No COBOL?
=20
Does this mean you've given up on creating teaching materials for = Ruby?
The referenced website is such a comprehensive undertaking that it = must
interfere with steady progress on Ruby teaching, right?
=20
=20
=20
j
=20
James D. Maher
(e-mail address removed)
=20
-----Original Message-----
From: Samuel Williams [mailto:[email protected]]
Sent: Sunday, May 02, 2010 7:28 AM
To: ruby-talk ML
Subject: Teaching Programming Languages (including Ruby)
=20
Hello,
=20
This is a follow up from previous postings about teaching Ruby in = the
class room.
=20
I've now come full circle, and put together this website:
http://programming.dojo.net.nz/
=20
This site is about programming languages in general, and is = designed to
be a starting point for people interested in learning more about a = given
programming language.
=20
I'd be really grateful for people to look at the site and let me = know
any feedback about the content and how it is presented.
=20
In particular interest to this group is the Ruby page:
http://programming.dojo.net.nz/languages/ruby/index
=20
Also, under the Resources section, there are a set of posters = (including
one for Ruby). These posters are designed for class rooms where = they
will stimulate interest in programming languages. The posters are = likely
to have at least one more iteration, so any feedback on them would = be
appreciated (including corrections or improvements).
=20
=20
= http://programming.dojo.net.nz/resources/programming-language-posters
=20
If anyone has any suggestions about particular resources or reading
material, please let me know. Keep in mind this is a site for = absolute
beginners.
=20
Thanks,
=20
Kind regards,
Samuel
=20
=20
=20
=20
 
R

Robert Klemme

This is a follow up from previous postings about teaching Ruby in the class room.

I've now come full circle, and put together this website:
http://programming.dojo.net.nz/

I don't find your description of Java accurate. For one, it has a
slightly negative tendency ("This can make it difficult to write short
and concise Java programs."). I'd rather stick with descriptions as
factual as possible. I would only put such a statement in a later
chapter but not directly on the introductory page.

Then, you could argue that Ruby is even more object oriented than Java
because it does not have primitive types. Also, the ascription that it
is an interpreted languages is at least incorrect in two ways: it
insinuates that it is slower than compiled languages - which it is not -
and it misses the point of modern HotSpot JVM's with dynamic compilation
of byte code into machine code.
This site is about programming languages in general, and is designed to be a starting point for people interested in learning more about a given programming language.

I'd be really grateful for people to look at the site and let me know any feedback about the content and how it is presented.

In particular interest to this group is the Ruby page:
http://programming.dojo.net.nz/languages/ruby/index

The introductory sentence misses the phrase "object oriented" which I
consider at least as important as the others (if not more important).
I'd probably write "Ruby is a dynamically typed, object oriented
programming language ..."

If anything this seems to be an ambitious project. Good luck!

Kind regards

robert
 
S

Samuel Williams

Dear Robert,

Thanks for your well thought out response.

=20
I don't find your description of Java accurate. For one, it has a =
slightly negative tendency ("This can make it difficult to write short =
and concise Java programs."). I'd rather stick with descriptions as =
factual as possible. I would only put such a statement in a later =
chapter but not directly on the introductory page.

Yes I agree with you. I've removed the statement.

Are there any other issues which you feel are not correct? I'd prefer to =
make it as good as possible, so if there are other inaccuracies it would =
be good to improve.
Then, you could argue that Ruby is even more object oriented than Java =
because it does not have primitive types. Also, the ascription that it =
is an interpreted languages is at least incorrect in two ways: it =
insinuates that it is slower than compiled languages - which it is not - =
and it misses the point of modern HotSpot JVM's with dynamic compilation =
of byte code into machine code.

Are you saying that I should not describe Ruby as an interpreted =
language? Or, should I discuss that interpreted languages can be as fast =
as compiled languages through advanced techniques such as hotspot =
compilation?

The latter seems like the best option to me.. what do you think?
to be a starting point for people interested in learning more about a =
given programming language.
=20
The introductory sentence misses the phrase "object oriented" which I =
consider at least as important as the others (if not more important). =
I'd probably write "Ruby is a dynamically typed, object oriented =
programming language ..."

Yes this makes sense, I wonder how I missed that... to many late nights =
:p I've updated it with this new text.
=20
If anything this seems to be an ambitious project. Good luck!
=20
Kind regards
=20
robert
=20
--=20
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

Thanks for your feedback.

Kind regards,
Samuel
 
R

Robert Klemme

ecause it does not have primitive types. =A0Also, the ascription that it is=
an interpreted languages is at least incorrect in two ways: it insinuates =
that it is slower than compiled languages - which it is not - and it misses=
the point of modern HotSpot JVM's with dynamic compilation of byte code in=
to machine code.
Are you saying that I should not describe Ruby as an interpreted language=
? Or, should I discuss that interpreted languages can be as fast as compile=
d languages through advanced techniques such as hotspot compilation?
The latter seems like the best option to me.. what do you think?

Sorry, that was not clear enough: the paragraph refers to your
description of Java. Java is not an interpreted language - at least
not completely.
Thanks for your feedback.

You're welcome!

Kind regards

robert

--=20
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/
 
S

Samuel Williams

Dear Robert,

I see. Yes, Java isn't always interpreted, strictly speaking. But.. in =
the general case it is interpreted before it is optimized. However, I =
will think about the best way to address this.

It is kind of like how C isn't always compiled... its a very gray area.

I think the definition has to be such that interpreted is basically the =
opposite of compiled.. but even then, we compile Java to bytecode, which =
is then interpreted, which might then be compiled to native code.. heh =
:p

Kind regards,
Samuel

Java because it does not have primitive types. Also, the ascription =
that it is an interpreted languages is at least incorrect in two ways: =
it insinuates that it is slower than compiled languages - which it is =
not - and it misses the point of modern HotSpot JVM's with dynamic =
compilation of byte code into machine code.language? Or, should I discuss that interpreted languages can be as fast =
as compiled languages through advanced techniques such as hotspot =
compilation?
 
R

Robert Dober

On Mon, May 3, 2010 at 12:51 PM, Samuel Williams
<snip>
I was reading this with quite some interest when it struck me that you
might consider the audience as a tie breaker. If I understood
correctly you are talking to beginners. In that case I suppose there
is not really much room for sophistication. Considering that almost no
interpreted language is really purely interpreted (MRI 1.8 being one
of the exceptions, but one could argue that it is compiled into an AST
first[1]) but compiled into some sort of bytecode first, Java clearly
qualifies as an interpreted language. It is probably necessary to hide
some details from the beginners.

Cheers
Robert

[1] As a side node JRuby is a nice example of how complicated stuff
can become. IIRC it is interpreting the AST, compiling hot parts into
Java bytecode, and then depending on the JVM of course all sort of
other optimizations (including another potential JIT) are taking
place. Thus interpreted and compiled just become a matter of the
viewpoint.
R.
 
S

Samuel Williams

Dear Robert,

Even thought the audience is a beginner, many people will have questions =
about these topics; it is important to have a good resource which has a =
basic explanation of what is happening under the hood - a diagram might =
be suitable on the page which explains interpretation.

I've updated the Ruby page with better example and structure. If you =
have any suggestion about "Why would I learn this language?" section, =
please let me know

http://programming.dojo.net.nz/languages/ruby/index?new

(I've appended ?new just in case the page is cached).

Kind regards,
Samuel
 
A

Alec Ross

Samuel said:
Dear Robert,

I see. Yes, Java isn't always interpreted, strictly speaking. But.. in
the general case it is interpreted before it is optimized. However, I
will think about the best way to address this.

It is kind of like how C isn't always compiled... its a very gray area.

FWIW, there are a number of C++ interpreters too: UnderC, Ch, CINT, to
mention just these three. Although these have minority use, and C++ is
almost always compiled, I guess they have particular merits in a
teaching/learning context.

Alec
 
S

Samuel Williams

Dear Alec,

I think C++ is generally not a good language for teaching programming :) =
It probably depends on the level of the student and what they are trying =
to achieve.

But thanks for pointing that out.

Kind regards,
Samuel

In message <[email protected]>, Samuel =
in the general case it is interpreted before it is optimized. However, I =
will think about the best way to address this.
=20
FWIW, there are a number of C++ interpreters too: UnderC, Ch, CINT, to =
mention just these three. Although these have minority use, and C++ is =
almost always compiled, I guess they have particular merits in a =
teaching/learning context.
 
A

Alec Ross

Samuel said:
Dear Alec,

I think C++ is generally not a good language for teaching programming
:) It probably depends on the level of the student and what they are
trying to achieve.

Well, that's another debate, that I'll not plan to join here - only to
say that I agree w/ your second sentence; and that I've seen a
successful Introduction to Programming course using C++ as its main
vehicle. (It only used a simple subset of the language, for
simplicity.) And that for sufficiently mature, and capable, students,
IMHO it has a lot to recommend it.
But thanks for pointing that out.

That was my intent.

Regards,

Alec
 
R

Rick DeNatale

Dear Alec,

I think C++ is generally not a good language for teaching programming :) It probably depends on the level of the student and what they are trying to achieve.

But thanks for pointing that out.

Just to reinforce the point. Computer language are neither inherently
interpreted nor compiled. This is an aspect of an implementation.

There's also a bit of fuzziness in what compilation vs. interpretation
means. At one end of the spectrum is an implementation which compiles
source code into the native machine instructions for the target
platform, at the other end is one which re-parses source code every
time and interprets it. There are very few implementations at the
second end of the spectrum, most 'interpreters' actually 'compile'
source code into some intermediate representation for
execution/evaluation.

The MRI implementation of Ruby pre-1.9 'compiles' ruby source into an
abstract syntax tree. Ruby 1.9 compiles to what are effectively
instructions for an 'artificial' virtual machine, this is similar to
how most Java implementations work, with detail differences.

Similar 'byte' coded VMs have been used for implementations of
languages such as C/C++ which are normally compiled to machine code.
And there are cases where such implementations can outperform
'traditional' implementations on some platforms, because the
executable code is more compact, keeping the working set size down and
reducing virtual memory swapping/paging overhead.

Lisp one of a triumvirate of the earliest programming languages (along
with FORTRAN and COBOL) has a traditional implementation similar to
Ruby 1.8, aided by the fact that Lisp is a homoiconic language which
makes the 'compile' part particularly early. However, Lisp too can be
compiled, the Scheme dialect, developed by Guy Steele and Gerald
Sussman at the M.I.T. AI lab in the mid 1970s-early 1980s provided a
hotbed for such activities.

Sussman and Steele's original 'Lambda Papers' are seminal works which
have informed quite a few language designers.

http://library.readscheme.org/page1.html



--
Rick DeNatale

Blog: http://talklikeaduck.denhaven2.com/
Github: http://github.com/rubyredrick
Twitter: @RickDeNatale
WWR: http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn: http://www.linkedin.com/in/rickdenatale
 
J

Jeremy Woertink

Not that it matters, but I was curious as to why the doors examples are
different.

For example, the ruby example could be written:

for i in (1..100) do
root = Math.sqrt(i)
state = (root == root.ceil) ? "open" : "closed"
puts "Door #{i}: #{state}"
end

which would closer match the PHP one:

<?php
for ($i = 1; $i <= 100; $i++) {
$root = sqrt($i);
$state = ($root == ceil($root)) ? "open" : "closed";
echo "Door $i: $state";
}
?>

I just think having a side by side comparison of closer related methods
might help.
Good luck with the project! I'll probably use it if you throw
Objective-C or Lua on there :) I really want to learn those two, and the
resources I have found aren't that great.


~Jeremy
 
S

Samuel Williams

Dear Jeremy,

Yes, I'm aware that the PHP version is optimized - this is something =
which will be corrected (de-optimized).

Kind regards,
Samuel
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,236
Members
46,821
Latest member
AleidaSchi

Latest Threads

Top