[Edu-sig] Edu-sig Digest, Vol 22, Issue 26
Toby Donaldson
tjd at sfu.ca
Fri May 27 21:42:56 CEST 2005
On 5/26/05 7:32 PM, "edu-sig-request at python.org"
<edu-sig-request at python.org> wrote:
>> It is fine and good to learn a single language, but this is not
>> computer science. A single language is just a tool. It is necessary to
>> learn several languages in order to have an idea of what computer
>> science actually means.
>
> I believe that introductory computer science should be taught with more
> than one language. Certainly, teaching several languages poses its own
> problems. I believe two languages are just right for CS1/2 courses. My
> personal choice has been Python for CS1 and Java for CS2. In this way,
> students get familiar with the two principal programming language
> cultures: interpreted languages and compiled languages. My experience
> shows that students learn Java easier after having been acquainted with
> Python. Also, teaching CS1 with Python and then CS2 with Java allows one
> to cover more concepts (than by using only Java for both CS1 and CS2)
> namely because the two languages are so different.
I've been involved with teaching CS1/CS2 style courses for the last couple
of years where Python is used in the first course, and Java in the second.
It's a good combination.
Simple Python programs are usually much easier to read and simpler to write
than simple Java programs, and so students new to programming really like
it. Interestingly, some of the students who have programmed before sometimes
complained that Python was just a toy scripting language, and why weren't we
teaching them C++ (because that what video games are written in, don't you
know).
Python's clean syntax is also good as a pseudo-code; I use it all the time
now in other courses that don't use Python as the implementation language.
The Python interpreter is another big pedagogical plus. The interpreter
makes it easy to play with Python and get immediate feedback. It also
naturally encourages an incremental and modular programming style. (I don't
think the compiled/interpreted distinction is that big a deal. Both Python
and Java blur that distinction. The speed and ease of feedback seems to have
a bigger impact on beginners.)
Seeing all the basic ideas of programming in a friendlier and easier
environment surely helps when it comes to learning Java. It makes dealing
with Java's OO overhead and relative prolixity more palatable.
On the down side, the Python IDEs I've seen are nowhere near as good as the
Java IDEs such as Eclipse or IDEA. This is no problem for Catholic coders
who dislike IDEs, and it is less of problem for Python because of its good
syntax, but an IDE that supports refactoring and incremental compiling sure
would be nice.
Toby
--
Dr. Toby Donaldson
School of Computing Science
Simon Fraser University
More information about the Edu-sig
mailing list