Hacker News new | ask | show | jobs
by japhyr 3146 days ago
I teach high school math and science, and I fully recognize that most of my students will not end up in math and science-focused careers. So I think pretty carefully about my goals for these students.

One clear purpose in everything I ask students to do: take away the sense of "magic" in technological things.

I just finished teaching a math class, where the final project was a 3d modeling exercise. Students didn't always enjoy the process, but they were deeply satisfied with their work in the end. Most of them will never model anything again in their lives. But we've removed the idea that when they see an amazingly detailed 3d-printed prosthetic limb, that the designer was doing some kind of magic. They know that the designer worked from the same principles they learned, the only real difference is that the designer enjoyed this work enough to stay with it and become highly proficient at it.

These are all students who will not want to burn programmers, but who will instead understand the hard work that goes into well-designed apps and products. They will also know that people who design crappy or harmful products can do much better and much different work.

4 comments

Someone whose name I no longer remember was a teacher of mine in highschool. Even though I knew how to program and had a nights / summers / weekends job programming I treated the CPU / motherboard as "magic". As if there was this dividing wall between the pure mathematical construct of a software program and the physicality of the bits moving through the motherboard.

The teacher taught us how to use NPN and PNP transistors to create very simple calculators.

Though I never went into hardware, that small demonstration was enough for me to see through the illusion and made it clear to me that the world was generally understandable if you just put in the time.

Even scary magical things like CPUs.

I'm going to have to chime in for the book/course Nand2Tetris - Building a Modern Computer from First Principles (http://nand2tetris.org/) which has been posted back and forth here on HN for quite a few years and is of course where I discovered it as well.

It was really eye opening to me (being a web programmer) to see how you can actually build a real computer with a C-like programming language and compiler just by starting out with simple logic gates. I mean, the damn thing eventually ends up running Tetris! All by essentially combining logic gates for computation and flip-flops for memory. How amazing is that, really?

I used to think the same way about the CPU, even after getting a masters in Computer Science! About a year ago I read the book Code by Charles Petzold and watched some lectures about Computer Science by Robert Sedgewick which really opened up my mind.
I am partway through Code (can't seem to get through some of the heavy combinatorial math just by reading...it's somewhat of a slog), but it oddly enough made me think of coding as even more magical.

We harness mana (electricity) to run it through circuits (runes), and craft spells (code) that generate effects (magic).

Just reading the start of it is humbling because it makes you realize that people had to come up with these principles in the first place, and figure out the initial abstraction layers that let everything else click into place.

Are those lectures in the public domain? If so, could you pls link to them? Thx.
In the case of the Computer Science course from Sedgwick, I have only been able to find it on Safari Books and InformIT (30$) http://www.informit.com/title/9780134493831

If you happen to be a member of ACM, you actually get free access to Safari Books through http://learning.acm.org

I had a very similar experience when I took a processor design class in college. At first in the class we started learning the binary codes for each instruction, which bits were the registers, instruction bits etc. It seemed so pointless at the time. When we finally got to the end and it clicked that those bits were physically turning on and off gates, it blew my mind.
In my class, circa 2001, we were taught about an adder, then used cheap chips in a breadboard with wires and bulbs to show it, then used Logicworks to create a simple version in software. Rinse and repeat for other components, and the final project was to copy and paste those components into a larger logicworks project and hook them up together into a simple 4 bit CPU with a few dozen bytes of RAM. It could understand four instructions if I recall correctly, so very simple programs could run from that RAM.

I don't really remember how to do any of it anymore (but I have no doubt I could research it without much trouble) but it certainly was a good way to demystify a CPU, given you had fully simulated one at the gate level by the end.

My world was opened up when in my college Computer Architecture class I learned the relationship between microcode and an instruction set. It gave me confidence. The final in that class had a question on it where I had to apply the general principles I learned to draw a new conclusion--the first time I'd ever taken a test where the test itself actually taught me something I hadn't fully internalized or learned before. What a feeling--it was like magic.
This is really cool. I had the good luck of having 2 really great math teachers in high school, and seemingly little things like this can really have a lasting impact.

One of them taught me both computer science and statistics, and did an amazing job at both. He went way above and beyond the minimum required curriculum for AP CS, so I basically picked up everything I needed to know to get a job just in that class.

And for stats, this guy did something I'd never actually seen a teacher do before. Over the course of one semester he'd managed to get the entire class of mostly average students to go from having a typical negative attitude towards math to being genuinely interested and capable of critical thinking that most adults I have met never do.

The other teacher taught a variety of math classes, but I had him for pre-calculus. He was really passionate about what he was doing and that rubbed off on everyone. He did an excellent job of relating everything back to real world topics and really seemed to make things click with people in a way that was highly unusual from my perspective.

The difference those two were able to make impressed me so much I almost decided to go into teaching, but I didn't have any means of paying for college. Fortunately I was able to get into software without a degree, in part because of the great work those two did.

This is a great point. I think it is tempting and understandable to, at times, appreciate the "magic" of our profession, but our goal should be able to take away that sense of magic - both in terms of creating programming languages and tools which are more intuitive for human beings, and, as OP says, in terms of education.

There will always be some magic in programming. Unnecessary magic, imho, is just another form of obfuscation.

> Most of them will never model anything again in their lives. But we've removed the idea that when they see an amazingly detailed 3d-printed prosthetic limb, that the designer was doing some kind of magic.

I don't believe in "magic", but I believe there is magic everywhere.

TIL I won a math award in grade 6 and almost failed grade 8. I remembered that the first time I took calculus I scored 39% and the second time I scored 93%.

I learnt a lot from school, but more on my own.

I'm terrible at math and programming, but better at it than most everyone I know. The only people I know who do it better do it professionally, but do it so narrowly they barely know anything at all.

I understand very little in detail, but quite a bit in principle.

I'm uneducated and probably unemployable, but make more than most people I know who are employed, in a field that's been made obsolete (while working less than they do).

I believe strongly in the dignity and simplicty of living that comes from reflection and self-awareness. And that empathy and understanding are the cornerstones of a just society.

I believe we should all know more and do less. That our experiments and play should be confined to safe spaces and have as few repercussions as possible. That the public acts we willingly make should be considered and measured.

I am hungry now, I will eat.