I want to write (and have starting outlining) a physics textbook which assumes its reader is a competent computer programmer. Normal physics textbooks teach physical formulas and give problems that are solved with pen, paper and calculator. I want to provide a book that emphasizes computational physics, how computers can model physical systems and gives problems of the kind: write a program that can solve a set of physics problems. Third party open source libraries would be used to handle most of the computation and I want to use a high-level language like Java or C#.

Besides the fact I'd enjoy working on this, I think a physics-computer science joint curriculum should be offered in schools and this is part of a larger agenda to make this happen. I think physics students (like myself) should be learning how to use and leverage computers to solve abstract problems and sets of problems. I think programming languages should be thought of as a useful medium for engaging in many areas of inquiry.

Is this an idea worth pursuing? Is the merger of these two subjects in the form of an undergraduate college curriculum feasible? Are there any specific tools I should be leveraging or pitfalls I should be aware of? Has anyone heard of college courses or otherwise that assume this methodology? Are there any books/textbooks out there like the one I'm describing (for physics or any other subject)?

This question appears to be off-topic. The users who voted to close gave this specific reason:

"Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – Snowman, jwenting

Sorry, where's the computer science aspect of the book? It sounds like physics and computer programming, which is something completely different.
–
Peter TaylorMar 7 '11 at 18:36

2

There's plenty of room for CS in a physics book; e.g. when building simulations of classical or quantum objects, we will certainly have to wrestle with state, concurrency, algorithms, trade-offs of representation, etc.
–
limistMar 7 '11 at 18:42

2

As might be inferred from the comment by @Peter Taylor, please make sure that there is some good CS in the book. Also, imo Python would be a better choice than Java or (especially) C#. In my experience (19+ years in science environments), scientists are more likely to know Python than the others you mention. While I am currently doing Java, I know no one in the sciences doing C#.
–
GreenMattMar 7 '11 at 18:55

2

From what I understand, R might also be a good choice, I have heard it's very good for numerical analysis. If you're going to write a program that simulates some experiment, you might want to write another program to analyse the results. It might be that two languages would be best, one for writing simulations, one for analysing the resulting data.
–
FrustratedWithFormsDesignerMar 7 '11 at 20:39

As an aside, I think there's a strong case to be made - and thus a need - for overhauling the teaching of many subjects with a computing foundation, because computation fundamentally extends our powers of modeling, not to mention teaching, learning, and thinking. In the book Masterminds of Programming, Paul Hudak (of Haskell fame) argues exactly for such an overhaul. Sussman, of course, also called for new ways of using computers to teach "old" subjects; SICM is a beautiful example of him doing so. I hope he takes on teaching quantum mechanics next!

Drs. David Gavenda and Luther Frommhold at UT Austin were trying to do that exact thing, in the early-mid 1970s, using a timeshared Data General Nova system. I think Dr. Gavenda has retired, and I have no idea what became of Dr. Frommhold. (Dave Gavenda was definitely one of the Good Guys.)

Dr. Gordon Novak, in the UT Austin CS Department, was working on the other end of that. His dissertation, in Computational Linguistics, was a program that could understand and solve freshman-level ladder problems in statics. (Full Disclosure: Gordon is a friend from long, long ago.)

I'm not sure this is a good idea, though. You can do some pretty demos, and it makes it easier to see SOME things, but much of elementary physics is teaching the student the methods, and giving an intuitive grasp of the material, and that's something that is probably better done the old-fashioned way.

I think it's a brilliant idea and as long as the computer language you choose is not too obscure, it could be a success. If you choose a language that nobody outside the scientific community uses anyway, you haven't achieved anything.

Based on my experience (dealing for most of the past 20 years with code written by scientists with little-to-no computer science background), if this is written properly and is used in science curricula and improves the code that scientists develop, it will improve a lot, even if it uses FORTRAN instead of Java, C#, or something else "more common"!
–
GreenMattMar 7 '11 at 18:47

@GreenMatt Definitely it was more like LISP and Matlab that I was thinking about as typical academia languages rarely used elsewhere.
–
biziclopMar 7 '11 at 18:53

@biziclop: Agree w/ LISP being obscure, but I've seen Matlab used a fair amount.
–
GreenMattMar 7 '11 at 20:19

I certainly think so! It's an idea like this that makes me wish I was still an undergrad. And truth be told, I did once turn in a lab where the manual calculations were solved by Perl script I wrote. I attached the source code too. The TA didn't know much programming but when I finally got it back, it was full marks. And it took way less time to finsih the lab too.

Is the merger of these two subjects in the form of an undergraduate college curriculum feasible?

I don't see why not!

Are there any specific tools I should be leveraging or pitfalls I should be aware of?

Off the top of my head, Weka might be a good tool for data analysis. I think it has a Java API so it should be pretty accessible to Java developers, and it could probably make for some interesting exercises.

Is the merger of these two subjects in the form of an undergraduate college curriculum feasible?

I've long felt that a triple merger, physics, applied math, and computation makes sense. Perhaps even adding a fourth, computer graphics -at least enough to generate enough graphs to gain inutition. Computation has in some sense become the third way of doing science, after experiment and theory, and in order to be really good at it, you will need a grounding in all three. Also there are professional support jobs for say scientifically minded programmers, whose first love is the computer, and the math/science is secondary. Ideally there would be a way to satisfy groups with differing primary interests, some want computers first, others applied math, and still others science as their primary focus.