The next generation of Python programmers
The next generation of Python programmers
Posted Apr 24, 2014 8:55 UTC (Thu) by jschrod (subscriber, #1646)In reply to: The next generation of Python programmers by gnacux
Parent article: The next generation of Python programmers
When I compare the Math I learned in high school with real Math at university, I have to question that students in high school learn Math as science. They learn arithmetic, some trigonometry, and some curve scetching. Not what I would call Math science. (And I only had bachelor-level classes, didn't got to the master-level.)
That's OK, and that would be the same with CS: In a CS high school class students might learn some programming. A very valuable skill today in many professions -- even if one doesn't do it, one may understand possibilities and limits of projects where one is involved. But, as with Math, they will not learn what Computer _Science_ is. Nor will they learn computer-related Engineering, e.g., Software Engineering.
At least that's the situation in Germany; don't know the US curricula.
Posted Apr 24, 2014 9:19 UTC (Thu)
by anselm (subscriber, #2796)
[Link] (16 responses)
The big difference is that mathematics at school is mostly about calculating stuff, while mathematics at university is mostly about proving stuff. This means that in school you're dealing with actual numbers but in university you mostly don't. 90% of the time you get by with 0, 1, and 2 (possibly with »i« thrown in if you need it); seeing a 3 once in my undergraduate analysis class felt really strange at the time.
One could quibble about whether schools teach the right sort of calculation (many students would probably be better prepared for life being able to do back-of-the-envelope type approximations and simple statistics than calculus and trigonometry) but high-school maths does have its occasional uses in life even if you're not a scientist. In the same vein, high-school computer programming should have its uses in life even if you're not a professional computer programmer. Professional computer programmers tend to find it difficult to understand how people go through life without being able to get a computer to do tedious things for them, but it mostly means those people get to do these tedious things themselves, or the tedious things are left completely undone.
Posted Apr 24, 2014 11:55 UTC (Thu)
by fb (guest, #53265)
[Link] (15 responses)
I don't hope for high-school courses to prepare folks to write handy scripts 2 years after the class, but I think an _exposure_ to the most basic procedural methods would already be invaluable. Much like the "hour of code" attempts to do.
With regards to computer concepts that could help in real life, some demos and exercises could help a lot with identity theft and security breaches in general, like showing (i) a line by line script to capture the keyboard output, or (ii) using Wireshark to monitor unencrypted network traffic, (iii) reading through one of many compromised customer databases and how much private information of each customer became "public", (iv) using Ghostery to visualize how many people are getting informed of each page visit you make. At least these are the stuff I've present to friends to ask about it...
Posted Apr 24, 2014 16:04 UTC (Thu)
by tialaramex (subscriber, #21167)
[Link]
Seems obvious to us, but to someone with no relevant expertise the github migration seemed like we should just change some bookmarks in our web browsers to point to the new provider, while the DB change meant (in their heads) laboriously selecting and deleting millions of records. Neither mental picture was anywhere close to correct.
-
I think CS is a special case, but even if it wasn't, I am reminded of my mother's experience at high school in the 1960s. She learned to type. Most of her contemporaries did not learn to type because typing was a menial skill of no relevance to professional careers. But of course by the late 1980s, when these people were actually mid-career, being unable to type was a significant frustration. She had never been a terribly good typist, but just being able to touch type at all was a big advantage in management jobs by that point, as "typing pools" gradually went out of existence and anybody below executive level was expected to do their own typing using a computer.
Posted Apr 24, 2014 22:01 UTC (Thu)
by mm7323 (subscriber, #87386)
[Link] (13 responses)
Instead, and as I was taught, it is the job of the Computer Scientists and Engineers to make computers usable for all.
The way this is done is by making tools and languages that simplify and abstract from the necessary complexities of how a computer works, until the point is reached that someone can effortlessly and usefully make use of a computer.
The extreme example of this is perhaps animators manipulating NURBS surfaces in some application written in a high level language, which has been compiled by yet another tool to run atop of an operating system that provides yet more abstraction from the actual complexities of making hardware useful.
Requiring people to learn to code just means we haven't written the right tools yet.
PS: Spreadsheets were a great leap forward.
Posted Apr 24, 2014 22:35 UTC (Thu)
by dlang (guest, #313)
[Link] (1 responses)
everyone should have to write code to make their computers work
and
everyone should understand what coding is
I agree that the normal person should not have to write code to get things functional
but the average person should have at least some inkling of what's involved.
Think of it this way.
The normal individual should not need to be an Electrical Engineer.
i.e. it goes through metal and water, but not plastic/wood, high voltage is dangerous, low voltage less so) so that they can reasonably differentiate between the dangers involved with handling different types of cables and wires.
right now, most people are like loin-clothed savages wandering around an electrical room when it comes to computers. They don't know what anything does, they know that sometimes if they touch things they get shocked, and they can be trained that throwing a specific combination of switches in a specific order usually gets the lights to come on.
just a little bit of knowledge can both make them much more effective, but also make them much more comfortable.
Posted Apr 26, 2014 14:20 UTC (Sat)
by nix (subscriber, #2304)
[Link]
(Except that some people have decided that locking these perfect servants so they don't accept instructions from their actual owners is a good thing. Pfui.)
Posted Apr 24, 2014 22:58 UTC (Thu)
by anselm (subscriber, #2796)
[Link] (3 responses)
Automotive engineers spent the better part of the last century making cars easier to use. This means that as a driver you no longer need to be able to take your engine to bits and put it together again the way you used to when the idea was new. However, driver education still attempts to give people a rough idea of how cars actually work, and a general awareness of this tends to make one a better driver. We still do need to push the pedals and turn the wheel ourselves to make a car go anywhere, although that is being worked on.
In the same spirit, a general awareness of how computers work will do people a lot of good, even though they should not be required to take them to bits and put them together again (in either hardware or software). Maybe in another 50 years or so, judging from how things went with cars, we will have figured out how to make computers truly usable. In the meantime, spending a semester or two in school writing short programs in something like Python will do nobody any harm, and probably give them a reasonable idea of what computers are actually about. It's certainly more useful, as life skills go, than dissecting frogs. Consider it pushing the pedals and turning the wheels while we're waiting for the fully automated computer that will do what we want without our having to spell it out in detail.
Posted Jun 9, 2014 21:45 UTC (Mon)
by Duncan (guest, #6647)
[Link] (2 responses)
My grandmother and her sister were travelling some distance, and stopped at a service station along the way for a fillup. Now the (crooked) operator offered to check the oil, and showed them the dipstick registering a quart low, so they bought one and put it in. On the way home they stopped at the same place, which evidently had a good price on gas as he was subsidizing it with oil sales, and the same thing happened. The poor engine ended up drowning in oil and they had a breakdown some way from home. My great grandpa had to pick them up.
First thing the next day he taught them how to check the oil themselves. Not how to change it, just how to check it, and where to top it off if need be.
Similarly, I've heard of people mixing up the oil and gas, and perhaps it's just the way I was raised (I remember several times helping my dad change a tire), but it still seems odd to me that so many people have to call a tow truck to change a tire!
An extremely basic level of automotive skills, knowing where the oil and gas go and how to check them, and how to change a tire, may not be absolutely required to "know how to drive", and arguably unfortunately that isn't covered on a driving test, but it sure helps, and that's as true today as it was about 70 years ago when that crooked gas station operator ended up killing the engine in my grandmother's car.
Same thing with computers. Having some idea of the basics so they aren't simply black-boxes really does help.
Posted Jun 9, 2014 22:16 UTC (Mon)
by khim (subscriber, #9252)
[Link] (1 responses)
But you are supposed to do that!
Posted Jun 10, 2014 12:29 UTC (Tue)
by mathstuf (subscriber, #69389)
[Link]
Posted Apr 25, 2014 0:57 UTC (Fri)
by neilbrown (subscriber, #359)
[Link] (6 responses)
Yes, but ....
When I watch intelligent non-experts work with computers I am often struck by a particular fact. They fail to understand various interactions or details which jump out as obvious to me, and it is because they lack a depth of understanding which I take for granted.
I think that modern UI design actually makes it harder for users to gain that understanding. Details are hidden, boundaries are blurred. This is done in the cause of making it easy to use. Maybe it succeeds in the short-term but by hiding details it makes it hard to see and learn the underlying model and so hard to progress beyond a simple understanding.
So I agree that it is our job to make computers easy to use, but I don't think we are doing a very good job for the long term. We need to expose the important internal details, not try to hide them.
My pet peeve is the 'back' button on my Android tablet. Sometimes it goes to a previous screen in the current app, sometimes it goes to the previous app. I can mostly figure out what to expect but that is because I'm used to computers following very subtle and non-obvious rules. I can well imagine a person with a different approach to computers absolutely hating in.
The reality is that there are two very different "Back" concepts and conflating them into the one button is a mistake.
So I think we as developers need to expect and encourage some degree of understand in our users, and not hide so many details that they can never learn.
Posted Apr 25, 2014 7:01 UTC (Fri)
by dlang (guest, #313)
[Link] (2 responses)
a GUI is like training wheels, it is a great help to get you started, but eventually it tends to limit what you can do.
keyboard shortcuts are a start at bypassing the training wheels, but only a start
Posted Apr 25, 2014 16:12 UTC (Fri)
by raven667 (subscriber, #5198)
[Link]
Posted May 1, 2014 18:42 UTC (Thu)
by smorrow (guest, #95721)
[Link]
Agreed.
> keyboard shortcuts are a start at bypassing the training wheels, but only a start
I have no idea what you're trying to get at with this. If you'd have said a command line, I'd see what you mean -- for a tastefully-designed (stdin/out) command-line program, once you know how to use it interactively, you also know how to use it in a script: `ed(browse) < ./oneIwrote.earlier` or `generatecommands | ed(browse)`, you can also be sure what the behaviour's going to be if you type-ahead at it while it's busy, you can also use the mouse to copy and paste commands as well as just data, etc, etc -- but keyboard shortcuts? What's the advantage? (Other than speed, which is less important than power, generality, transparency, ...) Keyboard shortcuts isn't a fundamentally different/better paradigm from GUI - most keyboard shortcuts correspond to menu items, and are about as flexible, in that you can't compose them together or arrange for them to be called in a loop or whatever. Ctrl-O isn't an improvement over File>Open in any way that I can see, but a proper command line's equivalent of ^O would get you glob, variable, and backtick substitution.
Posted Apr 26, 2014 14:23 UTC (Sat)
by nix (subscriber, #2304)
[Link] (2 responses)
The first great mistake was throwing away the (relatively new) concept of the pipeline when windowing systems came in. Without the ability to even instruct the machine to do the simplest things in sequence, the user interface has just got cruder ever since then. (Macro languages do *not* help: you have to be a programmer of some stripe to even start to use them without being scared off.)
There is surely a graphical way to model this -- I am reliably told that the original PARC windowing system had one -- but apparently it was dropped :(
Posted May 1, 2014 22:41 UTC (Thu)
by smorrow (guest, #95721)
[Link] (1 responses)
If that's the single most important thing about pipes (is it not?), then what's the GUI equivalent of that? Copy and paste is the closest thing I can think of.
It's too bad most research in HCI seems more concerned with tacky things like virtual/augmented reality.
Posted May 6, 2014 12:12 UTC (Tue)
by k8to (guest, #15413)
[Link]
There were some more researchy things like oberon and smalltalk, but I don't know how close to practical they ever became.
The next generation of Python programmers
When I compare the Math I learned in high school with real Math at university, I have to question that students in high school learn Math as science. They learn arithmetic, some trigonometry, and some curve scetching. Not what I would call Math science.
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
But it really does help to have at least some idea how electicity works.
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
Similarly, I've heard of people mixing up the oil and gas
The next generation of Python programmers
The next generation of Python programmers
This certainly isn't the only mistake, just the one that annoys me at the moment.
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
> a GUI is like training wheels, it is a great help to get you started, but eventually it tends to limit what you can do.
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers