Teaching Python

M

Mediocre Person

Well, after years of teaching grade 12 students c++, I've decided to
make a switch to Python.

Why?

* interactive mode for learning
* less fussing with edit - compile - link - run - debug - edit -
compile - link - run -.....
* lots of modules
* I was getting tired of teaching c++! Bored teacher = bad instruction.
* thought about tcl/tk but it's just too different syntactically
(for me, not my students!) after so much time with languages like
c++/ada95/pascal/BASIC/Fortran, etc.
* it appears to be FREE (which in a high school environment is
mightily important) from both python.org or activestate.com. I think I
like activestate's ide (under Win98) a bit better than idle, but your
comments/suggestions?

I've decided to give John Zelle's new book a try as a student
textbook--it's as good an introductory CS book in any language I've
seen. I've done a couple of small projects with tkinter, like what I
see, and would like to introduct my students to it, although Zelle
doesn't make use of it in his text.

So, what pitfalls should I look out for in introducing Python to
students who have had a year of Visual BASIC?

Regards,

chackowsky dot nick at portal dot brandonsd dot mb dot ca <-- have the
spambots figured this one out yet?
 
R

Ryan Paul

Well, after years of teaching grade 12 students c++, I've decided to
make a switch to Python.

Why?

* interactive mode for learning
* less fussing with edit - compile - link - run - debug - edit -
compile - link - run -.....
* lots of modules
* I was getting tired of teaching c++! Bored teacher = bad instruction.
* thought about tcl/tk but it's just too different syntactically
(for me, not my students!) after so much time with languages like
c++/ada95/pascal/BASIC/Fortran, etc.
* it appears to be FREE (which in a high school environment is
mightily important) from both python.org or activestate.com. I think I
like activestate's ide (under Win98) a bit better than idle, but your
comments/suggestions?

I've decided to give John Zelle's new book a try as a student
textbook--it's as good an introductory CS book in any language I've
seen. I've done a couple of small projects with tkinter, like what I
see, and would like to introduct my students to it, although Zelle
doesn't make use of it in his text.

So, what pitfalls should I look out for in introducing Python to
students who have had a year of Visual BASIC?

Regards,

chackowsky dot nick at portal dot brandonsd dot mb dot ca <-- have the
spambots figured this one out yet?

Python is REALLY easy to learn. Your concern should probably be: "are they
going to learn this so quickly that I run out of material in a month?"
I've seen 6th graders learn to write relatively impressive,
object-oriented python programs within about 2 months.

I may not be a curriculum expert, but I would recommend replacing your
lower level visual basic class with a python class, and teaching something
far more advanced to 12th grade students. If you are getting bored with
c++, maybe switch to a functional language, like ocaml or haskell.

Python is a powerful language, and the simplicity and consistency of its
syntax enables developers to produce useful applications in very short
periods of time - but I question python's capacity to 'challenge' a
student that is already familiar with another object oriented programming
language. Python is an excellent introduction to object oriented ideas and
methodology, but if the students already know VB, they have already
learned object oriented programming, right?

If you do end up teaching python to advanced programming students, you
might want to look at David Mertz' 'charming python' articles. He deals
with a few rather sophisticated and interesting concepts, which managed to
spark a few insightful paradigm shifts (for me at least):
http://gnosis.cx/publish/tech_index_cp.html

-- SegPhault
 
H

Hank Fay

Visual Basic has no inheritance; but it has a nice GUI IDE.

I'd look at wxPython as a freely available GUI IDE. SPE (Stanni's Python
Editor), which integrates wxPython and Blender (which performs visual magic)
would give your students some capabilties they don't have in VB.

For web stuff there are some very nice frameworks that are freely available,
such as Webware, which has a persistence layer, and Twisted, which can do so
many things it is eponymous. You would easily do a year of web stuff,
including ZOPE (Content Management) and Plone (visually acceptable Content
Management and user-friendlier Content Management) on top of ZOPE, after
they have Python down.

Hank Fay
 
M

Mediocre Person

Python is an excellent introduction to object oriented ideas and
methodology, but if the students already know VB, they have already
learned object oriented programming, right?
Well, there's OOP and then there's OOP, right? The first year students
have learned to _use_ pre-defined objects, but not design and create
classes.

You state, "Python is REALLY easy to learn. Your concern should probably
be: "are they going to learn this so quickly that I run out of material
in a month?" I've seen 6th graders learn to write relatively impressive,
object-oriented python programs within about 2 months." Can you give me
some references to this, such as samples of student work? I would like
to see what grade 6 students can do in two months!

I agree that the syntax of Python makes it is easy to learn. However, I
think I've got a pretty good imagination where material is concerned!
There are excellent tie-ins to their mathematics, physics, chemistry,
and biology curricula. For instance, I recently came across the concept
of partitions in number theory, and computing all the partitions of an
integer is a dilly of a pickle of a problem!

And, of course, it's really not about the language, in the end, after
all, but what you can learn to do with it. In which case, you say,
"AHA--so what was wrong with c++???" In a word, nothing. And I'll *miss*
all the lovely memory management lessons we did to develop our own
vector and list classes. In the end, I think the change is mostly for me!

I know nothing about ocaml or haskell, but I'll be sure to research them
this summer, so thanks for the tip!

Nick.
 
A

Arthur

You state, "Python is REALLY easy to learn. Your concern should probably
be: "are they going to learn this so quickly that I run out of material
in a month?" I've seen 6th graders learn to write relatively impressive,
object-oriented python programs within about 2 months." Can you give me
some references to this, such as samples of student work? I would like
to see what grade 6 students can do in two months!


Me too.

My IQ problem might be more dramatic than I thought. It took me
longer than that to sense which way was up, and I was coming to the
effort with good energy and a good deal of non-programming computer
background.

"REALLY easy" sounds great, but I think the idea that it is in fact so
can work, in the end, to discourage those of us who don't find it so.

"REALLY worthwhile", perhaps.
I agree that the syntax of Python makes it is easy to learn. However, I
think I've got a pretty good imagination where material is concerned!
There are excellent tie-ins to their mathematics, physics, chemistry,
and biology curricula. For instance, I recently came across the concept
of partitions in number theory, and computing all the partitions of an
integer is a dilly of a pickle of a problem!

I strongly agree that it is these tie-ins that make the effort to
extend programming literacy more widely "REALLY worthwhile".

And happen to believe that Python is an excellant way to go.

Art
 
L

Leif K-Brooks

Mediocre said:
So, what pitfalls should I look out for in introducing Python to
students who have had a year of Visual BASIC?

I was a Visual Basic programmer for a few months in 2002. It took me
almost a year to recover. It is vaguely object-oriented, but its
definition of objects are horribly warped; going to a genuine OO
language after VB is a complete nightmare.

If at all possible, I would recommend changing the Visual Basic class to
RealBASIC (http://realbasic.com/). It's not perfect, but it has proper
OO support, and would make the transition to Python much easier. Even
better would be teaching basic Python to the VB class and more advanced
Python to the 12th graders; Python's biggest strength is allowing
beginners to use simple OO or even procedural techniques without ever
noticing the advanced stuff like list comprehensions and metaclasses.
 
M

Mediocre Person

If at all possible, I would recommend changing the Visual Basic class to
RealBASIC (http://realbasic.com/). It's not perfect, but it has proper
OO support, and would make the transition to Python much easier. Even
better would be teaching basic Python to the VB class and more advanced
Python to the 12th graders;
Using Python for the early class is not out of the question--but I'd
want to find an environment that mimics (or improves upon) VB's
brilliantly (forgive me) easy model of designing the gui and then
programming responses to events. Someone mentioned SPE, which I haven't
seen in action yet.

Python's biggest strength is allowing
 
R

Ryan Paul

Well, there's OOP and then there's OOP, right? The first year students
have learned to _use_ pre-defined objects, but not design and create
classes.

That makes sense. If they haven't learned to create objects yet, then
python is probably the most practical way to teach it.
Can you give me some references to this, such as samples of student
work? I would like to see what grade 6 students can do in two months!

This was part of a special program at my former junior high school. They
offered a single semester computer programming class as an 'elective'.
Thematically, the class focused on using object oriented idioms to solve
problems. Most of the assignments were designed to emphasize the power and
flexibility of OO.

I think that the immediate and consistent focus on OO was part of what
made them capable of doing so much, so quickly. Towards the end of the
semester, they were working in groups, writing games. Their devotion to
their work was somewhat inspiring. Many of them put in many extra hours to
improve their work, and they developed a sort of competitive enthusiasm,
challenging each other with small problems and comparing their solutions.

The instructor of that programming class is doing a summer program with
some of the students that will involve putting together a web site about
the programming class that will showcase some of the student programs. He
wants to teach them how to use mod_python. As soon as he gives me the
address, i'll be sure to post it on a.l.p, as i'm sure there are many here
who would be interested.
I agree that the syntax of Python makes it is easy to learn. However, I
think I've got a pretty good imagination where material is concerned!
There are excellent tie-ins to their mathematics, physics, chemistry,
and biology curricula. For instance, I recently came across the concept
of partitions in number theory, and computing all the partitions of an
integer is a dilly of a pickle of a problem!

This is obviously why I'm not a teacher and you are. =} Sounds like you
have some creative ways to tie it into general curriculum.
And, of course, it's really not about the language, in the end, after
all, but what you can learn to do with it. In which case, you say,
"AHA--so what was wrong with c++???" In a word, nothing. And I'll *miss*
all the lovely memory management lessons we did to develop our own
vector and list classes.

I'd never ask "what is wrong with c++", because I'm already painfully
aware of the answer: almost everything. I completely understand the
motivation for moving away from it. When I write c++ I spend more time
thinking about how to deal with the language's severe flaws, rather than
how to get the job done.
I know nothing about ocaml or haskell, but I'll be sure to research them
this summer, so thanks for the tip!

Really, it depends on what your goals are, and what you believe the
capacity of the students to be. If you are introducing object oriented
programming, python is a good choice, especially if the students have
never been exposed to anything like python before.

I know that if, in my senior year of high school, I had seen a python
class offered, I would probably have laughed at the prospect, and taken
something more challenging.

OCaml is also free, and it also provides an interactive top-level. It has
automatic memory management, and type inference. It is statically typed,
and that makes it significantly more challenging to use effectively. OCaml
has some interesting features, and learning to use them well requires a
lot of thought, and careful attention to detail. Some aspects altered the
way I think about programming logic (particularly: pattern matching,
recursive types, stateless OO, and parametric polymorphism.)

Based on what you have said, it sounds like python may be the best choice
for your students at this point. I live in california, and the schools in
my immediate vicinity all have very strong (well funded) tech programs.
There are computers in most of the classrooms, and a simple computer
science class is required for all students at the junior high, so the
level of the students here is probably not indicative of students
everywhere, and I hadnt really stopped to think about that before I made
my post last night.

As far as teaching python is concerned, the Edu-Sig is probably the best
place for you to start.

http://python.org/sigs/edu-sig/

You find this specific link insightful, it talks about python at a high
school level:
http://python.org/workshops/2000-01/proceedings/papers/elkner/pyYHS.html

Best of luck!

--segphault
 
A

Aahz

Using Python for the early class is not out of the question--but
I'd want to find an environment that mimics (or improves upon) VB's
brilliantly (forgive me) easy model of designing the gui and then
programming responses to events. Someone mentioned SPE, which I haven't
seen in action yet.

There isn't anything as good as VB for simplicity of generating a UI and
attaching some simple programming to it. Problem is, that's *ALL* VB is
good for. Closest you'll come is either Boa Constructor or PythonCard.

On the flip side, is your goal as an educator to show your students how
to do the equivalent of crayon on construction paper? I find it
interesting how frequently people teach either from the highest feasible
level (e.g. VB) or the lowest feasible level (e.g. C or assembley),
instead of finding something with a good balance of ease and power (e.g.
Python).
 
H

Hank Fay

In addition, for your advanced class you could take a look at Leo, part of
the Literate programming effort. Think of a outliner, where your code
resides under the nodes of the tree. For the data-oriented aspect of the
application, you can put the data-oriented Use Cases as the tree, and put
the code that implements each use case right there. Leo does much more, but
it's a tool that will open your students' minds, and probably spoil them
for the future. <s>

Hank Fay

--
 
B

beliavsky

Mediocre Person said:
* less fussing with edit - compile - link - run - debug - edit -
compile - link - run -.....

The Python cycle of running programs and fixing run-time errors that
would be caught at compiled time in another language is in my
experience MORE tedious than than the cycle for compiled languages
like C++ and Fortran.

It is easy to write a script that compiles, links, and (if no errors
occurred) runs a program in a compiled language, making those three
steps effectively one. I very rarely find myself directly calling the
linker.
 
N

news

You could consider using boa constructor or PythonCard. However, I fear you
will be disappointed ... there is just nothing (in any language) which comes
close to the GUI IDE of VB. Boa probably comes closest ... but it is one
heck of a steep learning curve.

BTW. I am also a high school teacher and previously taught VB until more
recent years when I have been encouraging students to enter programming
competitions. The feedback from comps continues to be "those who use VB
continue to under perform" ... most likely because VB allows one to focus so
much on the gui rather than the problem / logic. ANyway, last year I had a
very close minded group who wanted C++ at any cost. I refused and
compromised by teaching them Java. I have not been happy with this move
mostly because in NSW (Australia) we have a very restrictive syllabus which
focuses on "structured programming". Hence (IMO) students are disadvantaged
if they do anything other than VB. Similarly, this syllabus does not extend
to cover OOP, design patterns and the like, so I would be shooting myself
in the foot if I attempted to cover these things. Java does allow
programming in the imperative (structured) style but is oh so bloody *&^%$
.... students need to use it in an OO way to realise the true strength and
value of the language.

This year I am starting earlier (yr7) and introducing the students to
Python. To capture their imagination I am creating a unit on programming
Python games. Eventually I am aiming to be able to utilise the pygame
modules. Now I know it is going to take some time (more than I have with the
students this year), but it something different for them and I may attract
greater numbers in two years time when we will have the time to develop this
area. If I had the money I would buy a class set of Michael Dawson's -
Python Programming for the absolute beginner. Premier Press.

As far as an IDE goes I am going to stick with IDLE, build a reasonable
knowledge and skill base, then attack wxpython and / or tkinter before
moving on to pygame.
regards
Darren Payne
Hurlstone Agricultural High School
 
T

TomH

Mediocre Person said:
Well, after years of teaching grade 12 students c++, I've decided to
make a switch to Python.
....

So, what pitfalls should I look out for in introducing Python to
students who have had a year of Visual BASIC?
....
I would replace the VB with Python, then teach SQL to the more
advanced students. This exposes them to two entirely different
approaches to computing.
 
T

Tim Golden

Well, after years of teaching grade 12 students c++, I've decided to
make a switch to Python.

Not sure how old "grade 12 students" are, but might
be worthwhile having a look at the LiveWires site:

http://www.livewires.org.uk/python/

I'm planning to use it for the 13/14-year-olds at
my Youth Club here in London, and its authors have
certainly used it for several years at some Summer
Camps to go by their site.

TJG
 
D

David MacQuigg

Well, after years of teaching grade 12 students c++, I've decided to
make a switch to Python.

Excellent choice.
Why?

* interactive mode for learning
* less fussing with edit - compile - link - run - debug - edit -
compile - link - run -.....

The IDLE environment, included with Python, is perfect for interactive
learning (and for serious work later). It's a minimal environment,
but it has everything I need. It has no GUI builder, but I don't miss
that because I use Qt Designer when I need a GUI.
* lots of modules
* I was getting tired of teaching c++! Bored teacher = bad instruction.
* thought about tcl/tk but it's just too different syntactically
(for me, not my students!) after so much time with languages like
c++/ada95/pascal/BASIC/Fortran, etc.

I looked at tcl/tk before discovering Python. I've never looked at it
since.
* it appears to be FREE (which in a high school environment is
mightily important) from both python.org or activestate.com. I think I
like activestate's ide (under Win98) a bit better than idle, but your
comments/suggestions?

I haven't looked at Activestate, but it may be the right choice if you
are using Windows. Qt Designer is free only on Linux. I think there
is an educational license for Windows, but you might want to check on
that. http://www.trolltech.com
I've decided to give John Zelle's new book a try as a student
textbook--it's as good an introductory CS book in any language I've
seen. I've done a couple of small projects with tkinter, like what I
see, and would like to introduct my students to it, although Zelle
doesn't make use of it in his text.

I haven't seen Zelle's book, but I would think the best book for a
one-semester course would be Learning Python, 2nd ed. My only problem
with LP2E is that I need something shorter because I have only a few
weeks in a course on circuit-design tools. I've written a shorter
presentation of Python OOP for engineering students. It may be too
short for high school students, but you are welcome to use it. I'm
thinking of expanding it to a larger audience by keeping the basic
presentation short, but adding more simple examples and exercises.
Your comments would be appreciated.
http://ece.arizona.edu/~edatools/Python/
So, what pitfalls should I look out for in introducing Python to
students who have had a year of Visual BASIC?

I used VB for many years, but never really learned it. It has always
been just a way to get something simple done quickly. Now that Python
has assumed that role, about the only thing I would use VB for is
macros in an Excel spreadsheet.

I would think having a year of VB prior to Python would be an
advantage, in that the students have at least worked with computers
and simple programs. The problems might be an expectation of being
able to do instantly in Python what was done with the GUI builder in
VB. You will need to avoid long discussions of syntax, and focus as
early as possible on interesting examples. From your later posts, it
sounds like you already have some good examples in mind.

I would be interested in following your progress in developing this
course. Do you have a website?

-- Dave

************************************************************* *
* David MacQuigg, PhD * email: dmq at gain.com * *
* IC Design Engineer * phone: USA 520-721-4583 * * *
* Analog Design Methodologies * * *
* * 9320 East Mikelyn Lane * * *
* VRS Consulting, P.C. * Tucson, Arizona 85710 *
************************************************************* *
 
C

Cameron Laird

On Sat, 12 Jun 2004 03:22:23 GMT, Mediocre Person
.
.

I haven't looked at Activestate, but it may be the right choice if you
are using Windows. Qt Designer is free only on Linux. I think there
.
.
.
Many ActiveState resources for Python are both free of
charge and available for Linux (and Solaris and ...)
<URL: http://activestate.com/Python.plex >, not just
Windows.

One consideration in all this talk of "teaching GUI
construction" is to emphasize Web applications. The
biggest surprise to me in this thread is that that
hasn't been taken more seriously. I suspect that's
where my daughters will start, if they ever choose to
try out development.
 
J

Jonathan Ellis

(e-mail address removed) (Cameron Laird) wrote in message
One consideration in all this talk of "teaching GUI
construction" is to emphasize Web applications. The
biggest surprise to me in this thread is that that
hasn't been taken more seriously. I suspect that's
where my daughters will start, if they ever choose to
try out development.

I'm currently employed as a CS instructor and I've seen it
demonstrated to my satifaction at least that teaching web apps first
confuses the heck out of beginners. The distinction between client
and server is a big hurdle. We're now back to teaching console apps
before trying to do anything fancy.

-Jonathan
 
F

Fuzzyman

Mediocre Person said:
Well, after years of teaching grade 12 students c++, I've decided to
make a switch to Python.

Why?

* interactive mode for learning
* less fussing with edit - compile - link - run - debug - edit -
compile - link - run -.....
* lots of modules
* I was getting tired of teaching c++! Bored teacher = bad instruction.
* thought about tcl/tk but it's just too different syntactically
(for me, not my students!) after so much time with languages like
c++/ada95/pascal/BASIC/Fortran, etc.
* it appears to be FREE (which in a high school environment is
mightily important) from both python.org or activestate.com. I think I
like activestate's ide (under Win98) a bit better than idle, but your
comments/suggestions?

I've decided to give John Zelle's new book a try as a student
textbook--it's as good an introductory CS book in any language I've
seen. I've done a couple of small projects with tkinter, like what I
see, and would like to introduct my students to it, although Zelle
doesn't make use of it in his text.

So, what pitfalls should I look out for in introducing Python to
students who have had a year of Visual BASIC?


I don't know anything about visual basic.... but the difference
between an object and a name bound to that object bites *every* python
newbie at some point.....

Regards,

Fuzzy

http://www.voidspace.org.uk/atlantibots/pythonutils.html
 
C

Chris King

Leif K-Brooks said:
going to VB after a genuine OO language is a complete nightmare.
Fixed ;)

VB's IDE is a great way for your students to get immediate feedback
while designing their GUI, but so is the combination of Python's
immediate interpreter and Tkinter. With code as simple as this,
entered in the interpreter:

students can both watch the window be built as they enter commands,
and immediately have a program that 'does something' (albiet something
as simple as printing 'click!' on the screen). Getting feedback like
this will allow them to more readily understand what's going on in
non-VB languages that require code to create GUIs.
 

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

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,048
Latest member
verona

Latest Threads

Top