[Edu-sig] Python for CS101
André Roberge
andre.roberge at gmail.com
Thu May 5 23:48:41 CEST 2005
Arthur wrote:
>
[Snip]
> In an educational setting the answer is easier, and Python is fully
> self-sufficient without the .Net add-on. Except to the extent the
> educational mandate is related to introduction to the tools specific to
> closed source programming. To what extent does that need to be true? IMO,
> very little.
> Not arguing against closed source - per se. But if that is important to
> industry, let industry bear the training costs.
> Art
>
University is supposed to be about education, not training. In other
words, it is to about learning how to think, rather than how to use some
technical tool that has the flavour of the day.
If I had to design a complete curriculum in computer science, I would
most likely pick Python as the core language (with some help from C) for
all topics. Here are some very broad, off the cuff, examples...
When studying scientific visualisation, I would introduce all the
general principles and simple examples using Python and the various
available libraries. For the last quarter of the course, I might use a
combination of Mathematica, Maple and some specialised software (say for
rendering) to introduce some advanced topics.
When studying "compilers", I would first use Python parsing modules. At
some point, I would introduce Python's "compiled" file syntax. Then I
would look at how this is translated in computer instruction on a
specific architecture.
To study numerical analysis, once again I would use Python to implement
the algorithms, so that student learn how to do it. I would then
compare with available Python libraries, to show how best it is not to
reinvent the wheel. I might, at the end, use something like
Mathematica, Maple or Matlab, again to illustrate some specific points.
You probably get the idea: either use Python as "executable pseudocode"
to have the student learn the concepts. Then, show them how to do more
advanced stuff using the relevant tool for that area.
Perhaps something like .Net would need to be introduced at the end of a
given course.
In the second year, I would have a (one semester) course on C - given
its importance and its portability.
In the third year, I would have a full year course where students would
have to do 6 projects, using 6 different languages. Say: Lisp, Java,
Haskel, APL, Fortran and one other (but NOT Python nor C) at the choice
of the individual student. This would be a self-learning course (with
instructor's prior approbation of topics) with everyone in the
department available for supervision/guidance, based on their
experience. (google is the student's friend ;-)
In the fourth, and final year, I would have the students do a term
project using Java, in the first term - so they can feel better prepared
when starting to look for job prior to graduation.
Then, in the last term, they would have another project to do, this time
using the language(s) of their own choice. I bet most of them would end
up using Python!
I believe that the graduating students would be ripe to benefit from
industry-led-and-paid-by training courses on closed-source technology
that Art mentions. And they would be well-equipped to keep learning on
their own.
Just some rambling thoughts as a non-expert in computer science.
André
=====
[Disclaimer] I work in an educational setting where both traditional
university-level education and technical training are offered. I am not
a computer scientist, nor does my institution have a computer science
departement where we would teach a CS101 type course (- although I am
attempting to develop a web-based on python in my spare time ;-)
However I have been involved in *serious* restructuring of an
undergraduate physics curriculum as well as being the driving force in
putting together a one-of-a-kind undergraduate biomedical curriculum,
and involved on curriculum-planning committees at two different
universities.
More information about the Edu-sig
mailing list