Experiences/guidance on teaching Python as a first programming language
rustompmody at gmail.com
Wed Dec 11 15:44:49 CET 2013
On Wednesday, December 11, 2013 5:16:50 PM UTC+5:30, Oscar Benjamin wrote:
> The Electrical Engineering students will subsequently do low-level
> programming with registers etc. but at the earliest stage we just want
> them to think about how algorithms and programs work before going into
> all the hardware specific details.
> While reading around this subject I found this interesting (although
> verbose) speech from Dijkstra advocating the opposite point of view:
> This definitely wouldn't work for my students but a friend of mine
> studied CS (at Warwick?) and his course worked as Dijkstra describes.
> In the first year they don't touch a real programming language or
> write any actual programs. They take exams in pseudocode and formal
> proofs of correctness. Then after a year of studying algorithms,
> linguistics, semantics, proof, mathematics and so on they write their
> first hello world program in a real programming language. I don't
> really know whether he's any good at programming but he's certainly a
> good mathematician.
A government form -- say for filing income tax -- and poetry may both
be in English but one doesn't read them with the same attitude!
Dijkstra talks in so much hyperbole that one does not take him
literally. In particular if you want to take him seriously, you must
not take him literally. [I remember reading somewhere that in CS
arrogance is measured in nano-dijkstras]
I believe there is a truth in the line that Chris and Gene take of
getting students' hands dirty early.
Equally there is truth in Dijkstra's line that students need the habit
of thinking and reflecting before diving in.
Now if you believe that one is clearly more important than the other,
your way is clear.
However what if you want to balance both? Its a challenge...
It is this need to balance that makes functional programming attractive:
- implemented like any other programming language
- but also mathematically rigorous
No python is not strictly a functional language but it can be bent to seem
that way more than C/C++/Java/what-have-you
More information about the Python-list