3 ms·
Man, do I feel old. Back in undergraduate school, we were taught to learn programming (FORTRAN) through physics, not the other way around. The idea that the p
by cubano 12y ago
Man, do I feel old.
Back in undergraduate school, we were taught to learn programming (FORTRAN) through physics, not the other way around.
The idea that the process could be turned around really hammers home how much things have changed due to the access to computers at a young age that most kids have nowadays.
- Iftheshoefits 12y agoEh, I think the approach we (as in, that's how I learned programming, too) learned with is the correct one, really. Computational physics is less about programming and more about the constant tension between the demands of efficiency and accuracy and the inherent imperfections of the methods (e.g. difference models) and underlying machine representation of numbers. Physics isn't just about punching numbers into a computer or solving math problems, and I think a shift toward more programming centered learning of physics needs to be heavily tempered with that understanding.
- one-more-minute 12y agoIf you're doing really advanced computational physics, sure, but that doesn't mean you can't start on an easier path and learn about those challenges later. It's no different to practical work – you start off by focusing on the concepts, not worrying about budgeting and time constraints, even though those things are important in the real world too. In our undergrad course we used C and it was completely the wrong tool for the job. No one learned more about numerical challenges than they could've with Python, and fighting with semicolons just puts people off.
- drostie 12y agoI learned programming independently, but I've done a Master's in physics. I really think that you want the curriculum to go in this order: (1) teach a high-schooler to program via games; (2) leverage that programming knowledge to build up some abstract mathematics and love of patterns; (3) start into Newton's equations with a programming background. Haskell is actually a pretty good choice for this process because it is functional. I wouldn't tell the student that it's a "functional language" but rather that it is "based on a simpler model of computation". You start with the idea of "expressions reduce", the naming of things, and backslash-function literals. Once you understand that, then there are data structures and pattern matching -- you expand slowly outwards this way. The syntax is surprisingly simple if you explain it top-down, but is often "lighter" than Lisp's parentheses. Curried functions and operator sections let you easily speak about high-level functions really early on without a mess of syntax. Haskell guards and pattern matching really embodies the SICP value that "every good program starts with a case dispatch." And, you can still do SICP's trick of implementing a Scheme dialect in Haskell pretty easily (in the context of games this allows them to be "scriptable"). The value that you get is that in the mathematics courses, you are sneakily starting a student off in a proof-centric environment; you can start calculus with the discrete calculus delta list@(x : xs) = x : zipWith (-) xs list sigma = scanl1 (+) ...and you swiftly get an inductive proof that sigma and delta are inverse functions. Because computers are stupid, you really break every idea down to the lowest common denominator, which makes it really easy to incrementally learn.
- machinshin_ 12y agothat sounds so fun. I would love to take a class (or classes) like that :)