Matthew Rosewarne on 20 Mar 2007 20:58:00 -0000


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: [PLUG] Educational Languages


On Tuesday 20 March 2007 15:43, Douglas Muth wrote:
> On 3/20/07, Matthew Singleton <msingle1@sccs.swarthmore.edu> wrote:
> > I would suggest Python.  My school has recently switched over to Python
> > for CS intro courses, and it has been very successful.
>
> I'm not an educator, but I would also suggest Python for beginners.
>
> The biggest thing I like about it is that if forces indentation in
> blocks of code, which is a habit best learned early. :-)
>
> I also like the fact that you can "dump" arrays and hash tables just
> by printing them out.  That's not something that you'll ever find on a
> production system, but is very helpful for the beginner who doesn't
> fully understand how those data structures work.

I'm primarily investigating Python, Ruby, and Eiffel.  Python and Ruby both 
have the advantages of being interpreted and can use bindings to Qt, which 
lets the students make programs they can run at home (all the programming 
there is done on Apples).  I should think the goals of a teaching language 
would be:
	+simplicity: easy tasks should be easy and straightforward
		-Not C++ or Java then
	+consistency: things should behave in similar ways, so you can apply what you 
				already know to what you want to find out
	+cleanliness: no ugly hacks please
		-Python's unicode handling is somewhat hackish IMO
	+strictness: ideally the language should enforce good practise, sloppy coding 
				is something to be avoided early on!
		-Dynamic-typing may very well be a hindrance here?
	+relevance: it's not quite as important, but hopefully this language should 
				be able to do the tasks needed by modern programmers
		-Big problem with Pascal & Scheme, also somewhat with Eiffel

All have their upsides and downsides for educational purposes though.  Python 
and Ruby may be great for real-world coding, but I'm worried they might lack 
the enforcement of coding discipline that I feel is important for teaching 
beginners.  Eiffel is very strict and requires good practise, but does not 
seem very widely used, although perhaps it will grow now that its tools are 
GPL...

Perhaps it's just paranoia and coding correctness can still be enforced by the 
teacher?  Being able to write Python or Ruby (or C++ for that matter) would 
facilitate a program where students could spend a semester working on FOSS 
projects for real world experience (SoC-style), whereas something like Eiffel 
or Pascal would definitely not...  Is there something important I'm missing?

P.S.: Teaching beginners PHP is a crime, it would be better for students to 
learn how to manipulate CPU registers with a hammer and chisel.
P.P.S.: Same with Perl.

Attachment: pgpBNk0PSbnDz.pgp
Description: PGP signature

___________________________________________________________________________
Philadelphia Linux Users Group         --        http://www.phillylinux.org
Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce
General Discussion  --   http://lists.phillylinux.org/mailman/listinfo/plug