5 ms·
The approach you describe is excellent, but it builds upwards from the physical foundations of computing. SICP builds from the mathematical foundations of comp
by ekidd 4y ago
The approach you describe is excellent, but it builds upwards from the physical foundations of computing.
SICP builds from the mathematical foundations of computing (sort of). The end game is to take students from zero through:
1. Understanding several styles of programming (though most often in terms of "what fundamental operations does this language provide?").
2. Being able to build an interpreter.
3. Being able to build a compiler.
For a two term intro course, it's extremely agressive.
I encountered it much too late to benefit much—I'd already been working on compilers at Lisp companies for a couple of years. But as an introductory text, it's a bit like the Feynman Lectures are for physics: probably too hard for almost everyone. But the right people, at the right time, will really love it.
- kayodelycaon 4y agoThat would explain why I never got SICP. I can’t follow the math.
- User23 4y agoDon't sell yourself short. The traditional mathematical guild has put religionists to shame with their penchant for obfuscation and ambiguity. Computing science math on the other hand is rigorous, concrete, and accessible to anyone who can, well, write a program.
- naikrovek 4y ago> Computing science math ... is ... accessible to anyone who can, well, write a program. it most definitely is not. maybe it's the notation or the sudden appearance of it on the page, or something I don't know about, but math on a page becomes a literal wall that I can't overcome when reading. I can explain any concept I understand well enough to teach others, via analogy, metaphor, or demonstrative example, including algorithms I use when I write software. I can't even understand software I write on a mathematical level; forget describing it or teaching it with math. math is just out of reach for me. it has been since high school and it will be for the rest of my life. if I have to describe an algorithm I am using in a program by using math, then it will never be described by me, except via the program source code. if you try to share an algorithm with me and you use math to define it, you might as well just save your time because you are as likely to extinguish the Sun with a single eyedropper of water as you are likely to communicate with me in any way using math. I loved math when I was young. I would spend time on weekends making up numbers and then calculating their square and cube roots on paper for fun. My high school math teacher hated calculus and he taught us all to hate math in toto when we were in that class. he sucked the enjoyment of math out of everyone effortlessly and completely. I will not be rejoining the mathematically literate in this lifetime, and it is something that I desperately want to learn. to say that math is simply accessible to any given person is just plain incorrect.
- inimino 4y agoYou protest too much. You surely know it is not out of reach, but you would have to find your own way back into the joy of it and no-one else can tell you what to read or where to start.
- wrycoder 4y agoYou’ve convinced yourself that you can never do it. It may interest you to know that the greatest mathematicians also feel that they are groping and may never accomplish what they are trying to do. Two comments: notice that the equations written physics text books always use single letters for variables - possibly with sub/superscripts. This is to keep the notation compact. If they used long variable names as programmers do, the essence of the relation described would disappear in the clutter. That’s why math notation is as compact as possible. (APL is an example of a programming language that tries to emulate a mathematical style.) Second, try to look for the shape of an equation and what it’s trying to tell you about the relationship between the variables.
- hnfong 4y agoNoting that olympian runners and the physically disabled both want to run faster doesn't help. I get really angry when math types just drive by and claim everything is easy if you practice and have the correct mindset. Everyone has something they aren't good at, and that's OK IMHO.
- 4y ago
- kayodelycaon 4y agoIt’s not actually. I have short-term memory issues that make holding math in my head next to impossible. Things get transposed or forgotten mid-operation. The only way I can do math is to have everything written down, including formulas. Even then, I may not be able to figure out how to change both sides of an equation. I can’t convert miles per hour to time required to travel X miles, even with paper in front of me. (I wish I could. I love hard sci-fi.) I don’t have these issue with programming because it doesn’t use my logical memory, it uses visual/spatial memory. I see function calls as a series of lines creating decision trees. You may be surprised how little math matters in practice.
- yonaguska 4y agoI had no idea that I also do this. The visual logic thing that is. I also have short term memory issues, but those seem to be improving with lions mane and bacopa. Having a high resolution large monitor also helps, the more I can fit on a screen, the easier it is to work. Double edit, if your interested in learning some math, geometry is basically algebra, visualized. Algebraic proofs didn't really click for me until I took a different math class in college on geometric algebra.
- User23 4y ago> Having a high resolution large monitor also helps, the more I can fit on a screen, the easier it is to work One of the most important things I learned at the Tufte seminar I attended was to let the optic nerve do as much work as possible to free up the short term memory for the hard parts. Big screens or big printouts are a great tool. > geometry is basically algebra, visualized This isn't still part of basic math instruction? It was literally middle school math where I went to school! We were frequently tested on both the algebraic and geometric solutions for a given problem. That explains a lot really.
- yonaguska 4y agoIt was split out when I took it, it wasn't until I took some math history geometry class in college that it all made sense.
- smitty1e 4y agoIn particular, while I can visualize code executing in my head, I cannot just look at a formula and do the same: the formula is too static. Formulae are a beautiful top-down model of some narrow, idealized slice of reality. Understanding is built bottom-up. For example, the raw torment of differential equations could have been clarified if the Prof. said something like: "Your car going down the street is a differential equation. Your position, x, your speedometer velocity is dx/dt, and the accelerator pedal position d/dx(dx/dt). We will now set about abstracting this past all casual understanding."
- wrycoder 4y agoAnd then you learn that most differential equations are not explicitly solvable, and the world is actually coded in partial differential equations, anyway.
- consilient 4y ago> In particular, while I can visualize code executing in my head, I cannot just look at a formula and do the same: the formula is too static. The right lesson to learn from this isn't that math is too hard, it's that you're using the wrong tools. The usual target architecture of math (so to speak) is a rewrite engine, not a register machine. You should almost never be "executing" anything.
- markus_zhang 4y agoI forgot to include, that the last part of SCIP is indeed very interesting, and that's the only part that I completed when studying the course in Python. Compiling theory is always interesting and that's part of the syllabus I'm looking forward to drill a bit deeper into in the future.