|
Schools are woefully short on teachers who can approach anything that requires logical thought. A friend helped his son with some physical science homework and the teacher gave the boy an F. When the father asked the teacher why she replied that she just wanted him to repeat what the book said because she didn’t understand anything about physics.
The thought of high school teachers trying to teach programming or logic makes me quake with fear.
|
|
|
|
|
1. Every kid would first learn the basics of logic and logic gates.
2. Learn to build basic circuits like counters, adders, etc.
3. Learn some basic analog electronics - resistors, capacitors, induction coils, transistors, etc.
4. Build some basic analog stuff -- amplifiers, tuners, ...
5. Every kid would get an rPI or an Arduino or a BBB
6. The first intro to actual programming would be learning assembly language to blink some lights, measure voltages on the board, etc. Learn how to use a debugger to single step and inspect registers.
7. Maybe learn to write a serial communication protocol between two of the devices, and it would be cool to use infrared optics for that rather than wires.
8. Learn C. Do the same thing in #7 but in C. Learn how to use a debugger again.
9. Learn how to test
10. Learn how to document
11. Learn how to write a requirements document for then next project.
... and so forth (no pun intended.)
I think it would be really useful to introduce functional programming fairly early too, as well database architecture, parallel processing, etc.
Marc
|
|
|
|
|
I agree whole heatedly, but I would also transition them into C++.
What you have proposed is similar to the logic I taught my children to drive; if you can learn to drive with a stick you can drive anything! And they can!
New version: WinHeist Version 2.1.0 Beta
There's a fine line between crazy and free spirited and it's usually a prescription.
I'm currently unsupervised, I know it freaks me out too but the possibilities are endless.
|
|
|
|
|
Mike Hankey wrote: but I would also transition them into C++.
Definitely. I left out all the OO stuff, the post was getting too long, haha.
Marc
|
|
|
|
|
Mike Hankey wrote: if you can learn to drive with a stick you can drive anything!
Coming from a country where cars without gear sticks are almost solely for the disabled or women who really, really cannot work out how to drive with one; I am always amazed (and amused) by the way many American's seem to view 'driving a stick' as some sort of Herculean achievement.
Some men are born mediocre, some men achieve mediocrity, and some men have mediocrity thrust upon them.
|
|
|
|
|
It's funny very few people I know can drive a stick.
New version: WinHeist Version 2.1.0 Beta
There's a fine line between crazy and free spirited and it's usually a prescription.
I'm currently unsupervised, I know it freaks me out too but the possibilities are endless.
|
|
|
|
|
I have picked up many sticks[^], eaten sticks[^], and even watched a stick[^]. But I have never driven a stick[^].
Within you lies the power for good - Use it!
|
|
|
|
|
Once around the block and you're hooked.
New version: WinHeist Version 2.1.0 Beta
There's a fine line between crazy and free spirited and it's usually a prescription.
I'm currently unsupervised, I know it freaks me out too but the possibilities are endless.
|
|
|
|
|
Synchronized or unsynchronized transmission?
|
|
|
|
|
Unsync. of course, Sync. is for sissies.
New version: WinHeist Version 2.1.0 Beta
There's a fine line between crazy and free spirited and it's usually a prescription.
I'm currently unsupervised, I know it freaks me out too but the possibilities are endless.
|
|
|
|
|
That is an interesting point of view, and reflects a previous mentality to programming.
Originally, CS was an offshoot of engineering and math departments, rather than a department of itself. In fact, my 'CS' degree says 'Applied Physics' on it, reflecting that mentality...
But the point of my post is to say, of everyone I have worked with, it was the Electrical Engineers turned programmers that were the best coders! In everything... consistency of quality, design patterns, teaching, work-ethic, troubleshooters... whatever it was, the EEs were the best. The folks churning out of CS departments (instead of engineering departments) always seemed either clueless, or needed the most help to ramp up.
If I ran a coding business, I would hire EEs almost exclusively.
|
|
|
|
|
Pualee wrote: That is an interesting point of view, and reflects a previous mentality to programming.
Yes, I'm showing my age, but I also believe that a solid foundation is important. Being able to have some sort of a mental picture of what happens physically in a computer is, IMO, a prerequisite.
Pualee wrote: it was the Electrical Engineers turned programmers that were the best coders! In everything... consistency of quality, design patterns, teaching, work-ethic, troubleshooters... whatever it was, the EEs were the best.
That's been my experience too. You might find it interesting that my first love was actually with hardware, and I learned a lot about digital circuits before doing any coding.
Marc
|
|
|
|
|
Your numbers 10 and 11 would be my numbers 1 and 2!
|
|
|
|
|
clawton wrote: Your numbers 10 and 11 would be my numbers 1 and 2!
I thought about that, but if we're dealing with high school students who have no prior exposure to software development, I felt it would be putting the cart before the horse in this case.
Marc
|
|
|
|
|
Not at all. Wouldn't have to be huge, just something to plant the seed that documentation is very important.
|
|
|
|
|
It should in fact be embedded in every point on your list.
Wrong is evil and must be defeated. - Jeff Ello
Any organization is like a tree full of monkeys. The monkeys on top look down and see a tree full of smiling faces. The monkeys on the bottom look up and see nothing but assholes.
|
|
|
|
|
... I would not go that route. Instead, I'd try to find a problem that excites the student, and help him solve it for himself by transmitting the knowledge to do so. Along the way I'd try to keep his excitement up as the topics you raised logically came into focus at the proper time. Perhaps there would be no 'proper time,' but in that case the student wasn't really a student, and I would reconsider my teaching approach for the next kid.
Start with excitement, go from there... I know that is far from today's teaching model, but everything I've learned has been through that method. Much of the school stuff has been forgotten, because it was unexciting in presentation, and personally.
|
|
|
|
|
Definitely assembly as the first language. Not just a light blinker but something real world. It teaches you everything about step by step logic, memory management, hardware - all the things that higher level languages mask. No debugger - learn to read a core (sorry memory) dump. Then you see how it all fits together. You come to see what makes higher level languages so powerful, and why its so easy to stuff up royally using them.
|
|
|
|
|
I've been programming for a while, it wasn't until I did some PLC programming that I truly understood what's happening at the machine level. I'm with you and believe that including the hardware side of things would greatly help people understand what's going on when they do their programming.
|
|
|
|
|
|
|
The original language for algorithms and that contains almost all the useful features you see in successor languages.
Plus Simula, the originator of objects, which is based on Algol.
|
|
|
|
|
I learned Algol 60 initially, and then did some Forth. They have both stood me in good stead.
|
|
|
|
|
|
I think C or C++, I know it C++ seems to be advanced . But it can be broken down to have the general and conceptual Knowledge of.
These Are important to understand in a way that at least kids know basics of hardware and programming interaction.
|
|
|
|