Forgot your password?
typodupeerror

Comment 4 SURE (Score 1) 508

We have added a computing requirement for physics majors in my department. Physics is about observing and describing the world around us and this often requires many widely applicable skills (analytical, computational, electronics, mechanical, plumbing, you name it, ...). I see graduate students starting out with a wide range of these axillary skills and students with broad practical experience become more effective and valuable collaborators much faster. This isn't about finding "lab minions". Students are expected to pick up a lot of practical experience in the lab and an undergraduate education that ignores commonly required skills is lacking, if that gets in the way of doing the physics. Any sentiments about getting others to do the grunt work is a fantasy. Most research really is a lean operation with a lot of DIY expected of everyone involved. Furthermore, a good technical knowledge is still required in the cases where we collaborate with experts to build specific devices or software systems.

Around my department I have encountered a variety of comments on computing ranging from those can get along using something like Excel to those of us who code frequently and might even need to hack a kernel on occasion. But the pervasive feeling is that programming literacy should be expected of a physics major. In my research work (HEP) a strong computational background is really indispensable for students wishing to participate in research. I expect the same to be true for many research areas involving large data sets and complex modeling problems.

I have developed and taught an introductory course in computational physics for a number of years. The course is technically in C++, but we primarily restrict things to the C-language features with a procedural programming model. We cover pretty much all of C, talk about how computers work, discuss memory usage, binary operations, creation and use of libraries, etc. What makes this class different from a CS class is that we require a semester of calculus and a semester of introductory physics and while about half of the class is devoted to programming, the rest is used to cover some statistical concepts, illustrate the applications of some common numerical methods, fitting/parameter extraction, data visualization, and some open ended problems where students are expected to simulate and study some scenario with simple Monte Carlo approach. Basically this is an introduction to skills a working researcher will find valuable in the lab. We then offer a couple of optional classes appropriate for advanced undergraduates or graduate students that focus on various computation methods and topics. Of course your friendly CS or engineering department may offer a perfectly reasonable course to teach programming to science majors as was the case in my undergraduate days. You'll have to decide if they have a service course that covers enough for majors who may be likely to be doing scientific computing in the near future.

I mainly teach physics and other STEM majors and find that about half of the students I encounter have no previous programing experience. Every year I hear from students who find they can immediately apply this new experience to summer lab jobs, work in REU programs, etc. and as a result get to participate more fully in the research projects. I choose C/C++, because I want them to use a compiled language and one that is low-level enough to allow for some discussion about what the hardware does. We concentrate on general programming concepts, and avoid unnecessary learning curves of complex libraries, heavyweight IDEs, etc. We use g++ on a Linux cluster, gnuplot, a simplified plotting library, and ddd (introduced about the time we start dealing with pointers!). Fairly barebones, but it helps us to cover a lot of ground in a semester. IMHO this has been a very well useful and well regarded addition to our curriculum.

Slashdot Top Deals

"This isn't brain surgery; it's just television." - David Letterman

Working...