Python at Schools

3 views
Skip to first unread message

Abhishek Mishra

unread,
Sep 26, 2009, 10:29:13 PM9/26/09
to Mailing list for the PyCon India conference, Bangalore Python Users Group - India, ilug-be...@googlegroups.com
At Pycon India Day 1, "National Mission on Education through ICT &
Python" was a great talk, and mission is seriously something which is
the need of the hour. What I like best about the mission is,
engineering students would actually be _utilizing_ computers to do a
whole variety of tasks which Python makes as easy as pie, by attaching
wings to our imaginations rather than restricting it by [ language
specific rules, conventions, the need to understand things at core
level ]
The impact, sooner or later is going to be huge. As one of the people
already questioned about schools, and it was announced that this
initiative aims just colleges - engineering and sciences. I would like
to ask, are there any parallel initiatives which aim at schools?
I wish there are some... one aspect of Python which I appreciate most
is - There is very less time between imagination and implementation
for short programs. Secondly, being an interpreter, you can always
execute on the fly and you can always make live mistakes and know what
went wrong. There is inbuilt help as we saw it. What could be more
perfect to begin programming.
I've heard about how kids in European countries begin with Python.
Let's compare that to India, I started with GW-BASIC, which is a very
good language to begin with. But don't you think it has become pretty
old, and is hardly readily available. People start with LOGO at some
places, but that limits them to drawing, though it does introduce one
to joy of programming. I don't think teaching C++ actually gets a
normal kid excited about programming, rather than that, just like some
of us developed maths phobia back then, some kids end up hating the
word 'programming'. I've heard that many times from my peers at
college.
Python is something that can convince them more about the power of
programming than C/C++ for sure. And instead of people developing a
sort of resistance to programming, can actually appreciate how it
actually gives them freedom over huge software suits and tools and
instead get their work done the way they want, with outputs in format
they want, without having to pay a penny as in case of Python.
It happens that at ICSE schools java/c++ is offered for almost last 4
years of schooling, while my CBSE experience was horrible, with no
programming in syllabus till class 11th. While way back in an ICSE
school, programming started at class 6 with GW-BASIC and that language
was fun.
My whole point is, wherever programming is taught at school levels, I
think Python must replace old almost dying pieces of
GWBASIC/QuickBASIC or TurboC++.
People usually tend to leave both BASIC, and TurboC++ when they don't
realize, the ones who don't end up as teachers at colleges like mine.
But had we a generation that knew basics of Python, things would've
been different. For whome a TurboC++ IDE became something they depend
on, like chain smokers depend on cigarettes, Python would've been a
Jetpack they would've never forgotten. What I mean is that learning
Python at school won't make Python vanish from your life after you
leave school since you can possibly do anything with it.

Anyways, So is MHRD/(Whoever cares) doing something at School Level?

Wouldn't that solve the demand of Python teachers as needed by
"National Mission on Education through ICT & Python" and actually
reduce the friction to its adoptibility which I can obviously see at
engineering level, I'm sure not many of the profs/teachers at my
college would put efforts to try out Python.

Regards,
Abhishek Mishra

out for Day 2 :)

vid

unread,
Sep 26, 2009, 10:56:00 PM9/26/09
to ilug-be...@googlegroups.com, Mailing list for the PyCon India conference, Bangalore Python Users Group - India
Hmm... this is cross-posted to many lists.

On Sun, Sep 27, 2009 at 08:14, Abhishek Mishra <idea...@gmail.com> wrote:
>
> I'm sure not many of the profs/teachers at my
> college would put efforts to try out Python.

Here is my experience after a few interactions : The school teachers
(i had met last year) were interested but the management does not
trust volunteers. Besides, each school has its own idea of how to
promote computer education in schools. Most of them force students to
buy text-books all teaching proprietary software :( Also the word
"computer education" preys on the parents desire --it is a
money-spinner in the name of 'making the student computer literate' --
parents are charged extra money per month as part of "computer
education", lab fees, etc... Students in grade1, grade2 were being
taught computers -- their notebooks had nice colored pictures of a
monitor, printer, laptop, with the teacher's red-ink ticked mark and
"good" sign for the color not going out of the lines. I kid you not.

One school principal lamented about Indians not writing their own
OS/compilers, etc.... when I politely suggested that he would set a
trend if he removed the pirated copies of a proprietary OS and
installed the Ubuntu CD that I gave him.

All this was about a year ago in Bangalore at the CBSE schools and one
government aided school. I doubt if things have drastically changed
for the better since.

IIRC, recently there was another effort to train the government teachers :
http://mailman.linuxchix.org/pipermail/indichix/2009-July/001674.html
--
vid
http://vid.svaksha.com ||

Abhishek Mishra

unread,
Sep 26, 2009, 11:16:58 PM9/26/09
to ilug-be...@googlegroups.com
On Sun, Sep 27, 2009 at 8:26 AM, vid <v...@svaksha.com> wrote:
>
> Hmm... this is cross-posted to many lists.
>

Yeah I want opinion of many people over this...

Anirudh

unread,
Sep 27, 2009, 3:24:54 PM9/27/09
to ilug-be...@googlegroups.com
Abhishek,

Thank you for your well written note about the requirement of a new
mean of teaching programming in schools. While I'm nearly complete
with my non-cs undergraduate course, I have a little sister who is in
class 10. Her(and also my) school was famous for having a more
rigorous and better computer education. It broke my heart to see her
sitting down and memorizing C programs to do trivial things like print
odd numbers, etc.

Nope, not understanding, not even learning, *memorizing*.

I sat down and proceeded to teach her, making analogies between
algorithms, code and recipes, which worked quite well. She listened
and understood before proceeding to get back to her memorizing ;)

I have a few thoughts about your idea of teaching python in schools:
1. How will you teach the teachers about how to impart the knowledge
of python. Surely the change has to be gradual and it won't be long
before the teachers notice the benefit as well.
2. Why not try to encourage the "hacker" mentality in children -
change part of the code and see how the application behaves. Some of
my earlier memories involve spending a lot of time with LOGO tweaking
different parameters and seeing their effects.
3. Programming is an *idea*, not theory. The test-driven development
of children (not to be confused with the software development method
:)) encourages teachers to teach theory like variables and functions.
4. Textbooks - a lot of general textbooks will need to be printed.
While Mark's Dive into python is great, it's not for school children.
5. Better toolkits - I personally like processing(.org), a
spiritual-successor for logo which is now a first-rate data
visualization system, but still gives me the same fun that I felt all
those years back with the turtle, to be able to *see* my code running
- to see art instead of text. "_why the lucky stiff" started work on a
language called "Hackety Hack" which disappeared mysteriously along
with the rest of his languages and resources unfortunately. That was
designed around a concept to make programming easy and with minimum
extra startup.

http://pythonturtle.com/ and pygame are also great ways that a kid can
get to see his program do something useful and interesting within a
few short minutes of writing it. The word I'm looking for here is
"gratification".

But needless to say, it would be very nice to see a movement to
encourage bringing better and more productive languages into the
classroom which will make writing code seem like a lot more fun.
Python eliminates the need for the ubiquitous boilerplate code
synonymous with C(++). And thank you for saying it - the horrible blue
Turbo C++ editor _must_ die. I recollect a friend telling me that
she's actually forced to use it for her undergrad course.

Obligatory - http://xkcd.com/409/

Thanks,
Anirudh

--
Senior undergraduate student, Indian Institute of Technology, Kharagpur.
http://anirudhsanjeev.org

Abhishek Mishra

unread,
Sep 27, 2009, 4:24:45 PM9/27/09
to ilug-be...@googlegroups.com
PythonTurtle really brings logo days back for everyone.
I remember "Hackety Hack", which was really a great effort by _why. I
think someone has preserved it on github - http://github.com/whymirror
But as for help in learning Python, I was really impressed by
http://www.bpython-interpreter.org/ and have planned to use that
instead of usual python interpreter to become more familiar to syntax
of functions by looking at them each time I type instead of referring
to docs and forgetting.
Yeah memorizing programs is very common, even at college level, as in
my case, we've got at least 30% of class totally dependent on
memorizing code. The fault is of paper setters too, they tend to set
such a paper where memorizers would survive. This is like a chain
support for memorizers, some of them grow up memorizing, and few of
them become teachers, hence a few papers become memorizer compatible.
blah

Well as for point 1, yeah I agree we would face a shortage of such
teachers who would find it okay to switch. At college level it might
be possible for many teachers to switch and bring about a change, but
finding such staff at school level will be tough. While reading a post
in python-list the other day, an individual reported that their
company could find just 25 pythonistas in Pakistan. The situation is
much better in India, and as one of the replies for that post said -
"Hire good programmers, they would find it easy to switch", I think
there are many good teachers, who once shown the rapid productivity of
Python, would eventually switch and start teaching it.

2. Encouraging the 'Hacker' mentality would be great. I still don't
understand how it actually comes into people. Does it come naturally
to those kids who love breaking toys and dissecting internals, I think
yes. But would it actually develop in lets say 70% of kids in a class
if teacher asks them to play around, modifying things and learning by
experimenting?
Joy of doing something on own comes out to be always more than working
upon at someone's instructions. So I think encouraging hacker
mentality part would have to be subtle in nature.

Anyways, but seriously, before we talk about those killIE6 websites,
we must actually start with this Kill TurboC++ movement in India.
Killing IE6 might be the dream of web standards enthusiasts and
frustated web designers, but Killing TurboC++, wiping it out of
colleges and schools is the need of the hour.

Yes, and I remember some teacher telling me 'It worked in TurboC++, I
wonder why not in gcc", my college relies on GCC but some of the staff
still love the blue screen.

hmm Kill TurboC++ sounds interesting! would look cool on a TShirt.

regards,
Abhishek Mishra
http://ideamonk.blogspot.com

Abhishek Mishra

unread,
Sep 27, 2009, 4:29:16 PM9/27/09
to ilug-be...@googlegroups.com
Here is another interesting find -

---------- Forwarded message ----------
From: Perica Zivkovic <perica....@gmail.com>
Date: Mon, Sep 28, 2009 at 1:25 AM
Subject: Re: [python-nl] Python at Schools
To: Dutch Python developers and users <pyth...@python.org>


Hi there,
I had contact with several schools/universities in US which are using
Portable Python in their classrooms. They install it on USB (or local)
drives and everything works, no permissions/ configuration hassle. If
kids broke installation it is simple matter of re-extracting Portable
Python again and viola they can continue programming.
On the homepage of the project in "Useful links" you can find couple
of links to free python books.
In the next version I plan to include (optional) documentation
together with Portable Python (http://www.PortablePython.com).
regards,
Perica

On Sun, Sep 27, 2009 at 9:48 PM, Abhishek Mishra <idea...@gmail.com> wrote:
>
> Hi,
>
> >From some source that I can't remember at this moment, I remember
> hearing about how Python is popularly used as a beginner's language to
> teach kids programming in European countries. Could some one verify
> this for me?
> And if yes, it is true that Python is being used in such a nice way,
> then I would like to ask as to what kind of teaching materials are
> being used for the purpose?
> Are they picked from the internet, or modified and
> simplified versions of guides like 'Dive into Python' ?
> Could someone point to Python teaching material for kids, if available
> on the internet ?
>
> Thanks,
> Abhishek Mishra

Ramkumar R

unread,
Sep 30, 2009, 3:48:12 AM9/30/09
to ilug-be...@googlegroups.com
> Nope, not understanding, not even learning, *memorizing*.

Correct. First understand the problem. Students aren't taught how to
think- they are made to memorize programs. We can't get rid of all
these problems magically by replacing programming language X with
Python. In fact, it'll make the problem worse with its complex data
structures, list comprehension, iterators, and generators. Until
recently, MIT had a fantastic introductory computer science course
structured around Scheme (Structure and Interpretation of Computer
Programs). Now they've built a course around Python. My point is quite
simple: several programming languages fit the bill. We need to design
a fantastic introductory course, not arbitrarily go around asking
schools to switch to Python.

> 2. Why not try to encourage the "hacker" mentality in children -
> change part of the code and see how the application behaves. Some of
> my earlier memories involve spending a lot of time with LOGO tweaking
> different parameters and seeing their effects.

Good point. As Abhishek pointed out, this isn't easy at all. See last
paragraph for more on this.

> Python eliminates the need for the ubiquitous boilerplate code
> synonymous with C(++). And thank you for saying it - the horrible blue
> Turbo C++ editor _must_ die. I recollect a friend telling me that
> she's actually forced to use it for her undergrad course.

How did anyone design a course around a compiler for an imaginary
programming language? Either teach a ANSI standard, or create a good
well-documented language just for the purpose of teaching. I don't see
the language Turbo C++ compiles documented anywhere, and I'm pretty
certain it wasn't created for the purpose of teaching.

> Anna University starts with C, then jumps to Bash (?!!?!) and then jumps
> back to C and C++. I've no idea where it is going (I'm in my third sem, and
> we're with a new curriculum), but I've seen glimpses of Flash(?!). 99% of my
> friends gave up on programming a month into the course - C isn't exactly the
> best first language, and Bash is just... curious.

C is terribly complex. The limitations on sizes of data types, highly
imperative style, and pointers give the student a window into
microprocessor design. However, this is sometimes, the desired result.
It is admittedly difficult to design a course around C to teach good
programming, but I'm attempting to do it. Why? Because it's easier to
convince schools to accept improvements to their existing C course,
than dump C for another programming language.

... And finally about designing that introductory course:
Designing a good course can be achieved through a long
teaching-redesigning cycle. I'll try to summarize the features of a
good introductory computer science course. Feedback is welcome!
1. Choose one easy-to-understand programming language; however,
encourage students to submit assignments in a different language.
2. One fantastic primary book is needed, along with good
language-specific reference manuals.
3. For routine assignments, prepare a huge problem set of ascending
difficulty, along the lines of ProjectEuler.
4. Teach programming, and not the programming language. Discuss only
discuss abstract ideas in class, and ask students to write
implementations in a language of their choice. Avoid building
language-specific patterns (for example, the double-for loop for
generating prime numbers in C got stuck in my head). Discuss
implementations AFTER the students have tried it themselves. Do not
restrict discussions to a single programming paradigm.
5. Collaborative programming sessions where students learn to
implement from each other. No one instructor will be able to provide
such a vast variety of implementations.
6. A huge reading list students can optionally read, including
articles on debugging, versioning, testing, and profiling. This is the
engineering aspect of programming, and I believe that this cannot
really be taught. It's important to make students write large programs
in steps, so that they will be able to appreciate the importance of
these tools.
7. Another optional reading list for theoretical computer science.
Give them insights into the latest work in every field.
8. Finally, it all boils down to grading. If you're going to ask
students to evaluate things like (i++) + (++i) in the exam, it's clear
that you're expecting students to know programming language
intricacies, and not programming methodology.

Practical steps: Teach! I'm trying to get a chance to teach an
introductory course in computer science myself. But it's much harder
for me, since I'm just an undergrad student.

--
Artagnon (.com)

Reply all
Reply to author
Forward
0 new messages