Linked by Thom Holwerda on Thu 20th Sep 2012 20:27 UTC, submitted by MOS6510
General Development "Online Python Tutor is a free educational tool that helps students overcome a fundamental barrier to learning programming: understanding what happens as the computer executes each line of a program's source code. Using this tool, a teacher or student can write a Python program directly in the web browser and visualize what the computer is doing step-by-step as it executes the program."
Thread beginning with comment 535945
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[2]: barrier...learning
by Neolander on Fri 21st Sep 2012 09:24 UTC in reply to "RE: barrier...learning"
Neolander
Member since:
2010-03-08

I don't necessarily think that's the best approach for everyone. Starting at the high-end helps ease the student into thinking in an appropriately structured way. There is a certain barrier in understanding just how rigidly things are interpreted, and just how generic the building blocks are - and how to structure something to get the intended results. With that in place, digging deeper is easier: If you can understand not-entirely-trivial python programs, it's possible to understand (roughly!) how the python interpreter has to work, and from there on to "it's also (maybe indirectly) (sys-)calling the kernel to get certain things done" isn't a giant leap. The details of what makes the kernel special (memory mapping & swapping, interrupts, locking, IO, etc.) follow naturally, and somewhere in that it makes sense to look at how a CPU actually works.

Starting top-down does probably lead to more sloppy programmers, since they might not care as much about the lower levels when they feel they can already do something useful. Starting bottom-up will probably bore some potentially good future programmers to death (since they won't see the use yet), and does probably lead to more myopic programmers (the microƶptimization above structure - type).

And no, I'm really not sure what the best solution is. "Everything at once" would be great, but that might not be completely doable...

In a university context, one might imagine having one course on high-level programming and another on low-level computer architecture. It has been done before, and seems to work quite well...

Reply Parent Score: 2

RE[3]: barrier...learning
by dnebdal on Fri 21st Sep 2012 11:07 in reply to "RE[2]: barrier...learning"
dnebdal Member since:
2008-08-27


In a university context, one might imagine having one course on high-level programming and another on low-level computer architecture. It has been done before, and seems to work quite well...


Certainly, and I've been in both kinds - but that doesn't really solve the question of "if we want programmers that care a bit about the lower-level effects of the code they write, while still being decent at high-level code and structure - what's the optimal order to teach in?"

Reply Parent Score: 2

RE[4]: barrier...learning
by Neolander on Fri 21st Sep 2012 11:54 in reply to "RE[3]: barrier...learning"
Neolander Member since:
2010-03-08

Well, both courses can be taught simultaneously, isn't it ?

Reply Parent Score: 2

RE[4]: barrier...learning
by renox on Fri 21st Sep 2012 14:08 in reply to "RE[3]: barrier...learning"
renox Member since:
2005-07-06

I think that it may depends on the student..
Me, I find learning low level first easier because when something "magic" happens in a high level language you can look at how it is implemented to better understand it.

Reply Parent Score: 2

RE[3]: barrier...learning
by Alfman on Fri 21st Sep 2012 14:33 in reply to "RE[2]: barrier...learning"
Alfman Member since:
2011-01-28

Neolander,

"In a university context, one might imagine having one course on high-level programming and another on low-level computer architecture."

Don't most students start programming well before they reach university? Even by high school, those who have an interest are probably already programming.

In any case, my university didn't do it that way. All first year courses were taught in Eiffel, a relatively obscure high level language. I'm not even sure we touched C except in specialty electives. After us, they replaced Eiffel with Java in our program, but I doubt they increased emphasis on low level fundamentals.

Reply Parent Score: 2