Programming As a Part of a Science Education? 508
An anonymous reader writes "I'm a fairly new physics professor at a well-ranked undergraduate university. When I arrived, I was surprised to discover there were no computer programming requirements for our majors. This has led to a series of fairly animated faculty curriculum conversations, driven by the question: to what extent should computer programming be a part of an undergraduate science education (in particular, physics)? This is a surprising line of questioning to me because in my career (dominated by research), I've never seriously even questioned the need. If you are a physics major, you learn to program. The exact language isn't so important as is flow control, file handling, basic methods/technique, basic resource management, and troubleshooting. The methods learned in any language can then be ported over to just about any numerical or scientific computational problem.
Read on for the rest of the reader's questions and his experiences dealing with faculty who have their own ideas.
The reader continues, "I'm discovering the faculty are somewhat divided on the topic. There is even a bizarre camp that actually acknowledges the need for computer programming, but turns my 'any language' argument on its head to advocate the students do 'scientific programming' using Excel because it is 'easy,' ubiquitous, and students are familiar with it. They argue Excel is 'surprisingly powerful' with flow control and allows you to focus on the science rather than syntax. I must admit that when I hear such arguments I cannot have a rational discussion and my blood nearly boils. In principle, as a spreadsheet with simple flow control in combination with visual basic capabilities, Excel can do many things at the cartoon level we care about scientifically. But I'm not interested in giving students toys rather than tools. As a scientist raised on a heavy diet of open source software and computational physics, I'll hang my head in shame if our majors start proudly putting Excel down on their resumes. However, in the scientific spirit, perhaps I'm missing something. So I ask Slashdot, to what extent do you feel computer programming should be a part of an undergraduate science education? As a follow-up, if computing is important, what languages and software would best serve the student? If there are physics majors out there, what computing/programming requirements does your department have? My university is in the US, but how is this handled in other parts of the world?"
CMU (Score:5, Interesting)
Re: (Score:3, Informative)
Re:CMU (Score:5, Interesting)
Re: (Score:3)
"Other parts of the world" (Score:5, Interesting)
That was my formal introduction to computing. Later on in my course, I mostly used MatLab, and occasionally C. Sometimes I had to reverse-engineer old Fortran code. I wrote my Master's thesis in MatLab (even though it was a rather computationally expensive application. In scientific applications, the time saved during design time often easily makes up for the loss in computational efficiency).
Since I started my PhD, I've tried a lot of different languages, from MatLab to Java, C# Python and, recently, F#. Even though I was brought up with OSS (my laptop runs Debian next to Windows), I have come to value the rapid development capabilities of
I think my point is: It's probably a good idea to start with powerful low-level languages like C first, but don't overdo it. It's good if your students know about the existence of Assembler and Fortran, but the important point is that they lose their fear of computers. Nowadays, teenagers grow up with computers, but they never get to see behind the web 2.0 surface. Our generation grew up with text editors and batch files. They grow up with facebook. So it's important to give them a look behind the curtains. Let them feel the power of being able to control memory adresses. Once they have lost their fear of pointers, they can move on to use high-level languages that safe loads of design time, while being able to descend down into the architecture when it really counts.
Re:"Other parts of the world" (Score:5, Interesting)
Re:"Other parts of the world" (Score:5, Informative)
Re:CMU (Score:5, Insightful)
With one of my professors, it was "You can use any language you want as long as it can do the job it's required to do and your TA is willing to accept it". That approach worked really well for us. The TAs were very flexible. In fact, I would tend to think the job of grading projects was much more interesting because of all the variations in the student's work. Remember, you've said it yourself, this is not supposed to be a class on syntax. At my school at least, they didn't teach us the languages, they taught us the concepts (and you were supposed to learn the computer languages on your own, and of course, every Professor had their favorite pet language they had been developing/using for the last twenty years).
For the lecture itself, I think the choice should be left to the Professor teaching the class in question. If the Professor is an expert in Logo, let him use that -- if that's what he wants. If the Professor is an expert in pseudo-code and wants to use that -- let him use that. If the Professor is an Expert in VBA, let him use that if that's what he wants to use. Hopefully, your faculty is made up of smart people. If they're smart, just let them use the tool of their choice -- they'll probably do a far better job with them (than giving them some pre-assigned tool). An chances are, the students will gravitate toward the common tools already used in the industry.
The thing is, VBA may not be considered a grown-up language to you, but I can almost guarantee that if you run into a Physics Professor who's an expert in VBA -- he/she will be able to do things in it that you couldn't even dream was possible. So I would advise you against going down that road of trying to prove them wrong, I'm pretty sure you won't be able to. So let that Professor teach in VBA if he wants to, but don't let him force you to teach in a tool you don't want to teach in.
Re:CMU (Score:5, Interesting)
Re: (Score:3, Interesting)
I once heard Excel described as the world's most popular functional programming language, which if you take away the GUI, it effectively is.
Once you start looking at it that way, rather then "fucking Excel" it starts to be quite a lot more powerful.
Re:CMU (Score:5, Interesting)
The same teacher also taught my older kid in programing using Pascal, my son came home from his class early in the year with a single sheet of paper. He gave me the sheet and said mockingly "the teacer reckons that assignment will take all year" (he already knew how to set up a BBS and I was teaching C lab classes at uni, so he thought he knew something). When I read the sheet I found it was a very clear requirements spec for a toy database that would indeed take him through all the common programming tasks like file handling, common data structures, sorting and searching, input parsing, relational data storage, resource management, display, etc. The project was broken into four phases that were worth 25% of the final mark. Only met the guy once or twice but his techniques rank him as one of the best programming teachers I've come across at any institution.
Re: (Score:3, Informative)
Teach them Python (Score:3, Informative)
Once they know Python, then they can pick up C++ or Java as context requires it. And if they never have to deal with really huge amounts of computation, then Python + Scipy might get them by for most everything. (And if not, Python has bindings for everything, practically.)
Necessary Tool (Score:5, Interesting)
GNU Scientific Library. (Score:4, Insightful)
The GSL [gnu.org] is mostly C. It's useful for students to take a numerical methods class and recreate the basics and to understand the limitations. Once they know, they can use libraries like GSL to get real work done.
Excel is not only a joke for real problems, it's a real problem to grade.
Re: (Score:2, Insightful)
Scientific problems, sure. It's not designed for that any more than GNUCash is. But let's not generalize, twitter. It's actually one of Microsoft's better products.
For complex charting and plotting I really like GNUPlot [gnuplot.info].
Re:GNU Scientific Library. (Score:5, Insightful)
Re:Necessary Tool (Score:5, Insightful)
As far as requiring physics majors to take a programming course, I think that is ridiculous. I went through a PhD level applied physics program including writing a simulation of chemical reactions occurring on the surface of space shuttle heat shield tiles during re-entry and never found anything more than spending a few hours here and there reading language syntax. The applied maths literature is full of pidgin code for the algorithms that is easily translatable into the language of your choice. The courses in algorithm analysis and numerical methods are the rest if what you need. A formal course would have been both a terrible bore and a waste of time that should be spent on something more useful like quantum electrodynamics.
Re: (Score:2)
Physics requires number crunching. It's that simple. It's not much use learning differential equations if you're incapable of solving anything useful. Any physics or engineering major should learn at least basic numerical methods and how to implement them. For me, we did it with C, nothing fancy. As far as using Excel for scientific computing, some of my classmates tried to pull this in a heat transfer class. It's a joke, it'll work for something really simple, but it's no good for any serious work.
I know a couple people who did the computational work that earned their professors a Nobel prize who used Excel to do it all. It took a couple years to run simulations that probably could otherwise have been done in a month, but while they waited for the computer they were busy doing other projects, and if they really wanted they could have used more than one computer at a time.
Numerical methods requires programming (Score:5, Insightful)
Every physics graduate should have the ability to find and use Numerical Recipes by Abramowitz and Stegun. Doesn't matter if they're using the C version, Fortran or whatever. This means you need to teach some programming, but more importantly the skills to understand the recipes.
Re:Numerical methods requires programming (Score:4, Informative)
Beyond understanding the differences between conventional mathematical arithmetic and what computers actually do, the student really should have a formal introduction to data structures.
Lastly, and why I hung the comment on this one, Numerical Recipes is well known to not be a good numerical choice. Making it the foundation of a class would be a real crime against computing.
Re: (Score:3, Informative)
Re: (Score:3, Interesting)
FORTRAN? (Score:5, Insightful)
Just like they say "Don't give a programmer a soldering iron", giving physicists something like C is probably giving them more than they need for most number crunching.
And a follow up! (Score:3, Funny)
Re: (Score:2, Insightful)
When doing complex computation, having a better u
Excel can't handle real scientific data sets (Score:5, Informative)
I'm not suggesting that all physics students must learn C++ and Matlab, but they should be taught a grown-up computer language so that they at least understand the concept of C++ objects, or how to begin solving the problem of communicating with a machine via a Matlab environment.
My examples are very specific, but you get the idea. Physicists need to be aware of certain computer programming concepts (which cannot be gleaned from experience with spreadsheets) otherwise they will fall flat on their face when faced with a real research environment.
The specific language is not very important, but physics tends to be dominated by C/C++ and Fortran, so these would definitely be a good place to start.
Even BASIC is better than Excel.....
The answer to the Excel argument... (Score:5, Insightful)
Excel is not sufficient instruction in programming any more than Algebra is sufficient instruction in math. So if someone suggests that all students need to learn is Excel, you may ask why the students are required to take more advanced math classes.
Re:Excel can't handle real scientific data sets (Score:4, Insightful)
I cannot agree more. After a master in high energy physics where I learned C++/matlab(or octave)/gnuplot/latex/... I decided to continue my career in medical physics.
I was shocked by the omnipresence of Word and Excel. I am sorry, but there should be corporeal punishment for people publishing scientific papers with figures made by Excel.
Now, with a good undergrad training in programmation we would avoid such abberations
About that Matlab thing.... (Score:4, Insightful)
Re:About that Matlab thing.... (Score:5, Interesting)
Usually I don't feed ACs, but here I am astonished and ask for clarifications, because we, as educational institution with a 'university' in its name, have to pay horrendous sums for the licenses of Matlab. One single seat license is close to the campus license price of Microsoft.
Re:Excel can't handle real scientific data sets (Score:5, Interesting)
There are whole classes of problems that Excel is well suited to solve. Linear propagation models, optical ray tracing for instance, is one. I remember back in the early 80's spreadsheets in general were touted as a good way to solve complicated 2-D boundary value problems via iteration because you are given a nice cell grid to start (I have foggy memories of doing this myself on whatever preceded Excel). I have seen some very impressive models built out of spreadsheets; it wouldn't have been my tool of choice, but the people putting them together could really do some impressive things.
At the undergraduate level I don't know what to say. I don't know how much programming I would force on the physics major. I am a very strong advocate of teaching mathematical methods for the major, as I had been. My professor spent some time having us learn FORTRAN, but I wouldn't say it was very productive because we were learning it for the sake of knowing it, not because we had a task to use it for (and so it really didn't set in). I didn't do any serious programming until graduate school, where I ended up becoming a FORTRAN expert after all.
I do agree that Excel can't handle real data sets, especially with the limitations of plotting 32k data points and only holding 64k in a column. On the other hand, not too much data handling you do at the undergraduate level deals with that much data.
I wouldn't say the students would be at a major handicap having only used Excel at the undergraduate level. If they are handed that particle data set in C++ objects, they'd do what I would have to do: learn C++. Between undergraduate and graduate school I made a conscience decision to learn either C or FORTRAN, since those were the languages of physics. I settled on C, picked up some books and started teaching myself. When I got to graduate school, the research I inherited was all FORTRAN, so I ended up betting on the wrong horse (at first, at least). When I got out of graduate school, I ended up learning C for the job I was doing at the time (I've since drifted into the IDL/Matlab world and now I find I'm rusty in all of them!).
You also have to be careful what you consider a grown-up language. By the time I got out of graduate school, C++ was all the rage and I kept hearing how they couldn't believe that any serious programmer would program in a non-object-oriented language unless they were either old or a Luddite.
Re: (Score:3, Informative)
For doing some of the basic astrophysics in my Astronomy masters it was invaluable. Now I did this masters for my own learning and wasn't intending to use it professionally. To put it in perspective the course I took would make an okay stepping stone to teaching highschool physics/astronomy or first year university Astronomy but it was more an educator's course than a professional Astronomer's course. So much so that we were permitted to ski
C and FORTRAN (Score:4, Informative)
All of the libraries and programs of interest are in C and FORTRAN. C++ is interesting and used but the other two still dominate. If you had to chose between the two for teaching people to program, take C. For utility, the two are about equal.
You can lead a horse to water... (Score:5, Insightful)
Certainly Excel can be a powerful, and useful, tool in data analysis. But I agree, I would never call it programming.
For simulation, however, I would expect you need something a bit more powerful. Perhaps you can teach all the students how to use Excel to analyze experimental data, and design a separate course for simulation design, which would, in turn, use a far more featured language/toolset.
The big danger with trying to teach a "real" language is that you spend the whole semester teaching students with no aptitude for the work the basics of structured programming and they still won't have time for the numerical analysis that is important to them as scientists. Structured programming is as natural as breathing to a geek, but it would be a bit more of a struggle to somebody without the right mindset. I don't see any way of forcing two required semesters of programming on every student. Just not room in the schedule for it.
However, keep in mind that the purpose of college is not to get those students employed, it is to teach them to think. Your brighter students are going to figure out that as a practical skill, most of them will need to know how to program, and would possibly sign up for "Programming for Theoretical Science Majors" as an elective The not-so-bright students... well... they will struggle in the real world, just as they always have.
SirWired
Re: (Score:2)
Re: (Score:3, Insightful)
numerical routines in MSExcel? (Score:2)
I seem to recall from the MSOOXML debacle that some of the numerical routines in Excel are based on incorrect definitions. I don't think I would suggest it for analysis of experimental data without some testing of the routines to be used.
why is your blood boiling? preconceived notions? (Score:4, Insightful)
(i'm an aerospace engineer, and for work, i program in c, fortran, java, vb, and yes, excel / vba,depending on the need)
Re: (Score:2)
Re: (Score:2)
Re:why is your blood boiling? preconceived notions (Score:2)
It gives the students the skill of pointing at pictures in Excel 2003 (or whatever release they use) which translates poorly into pointing at pictures in other versions of the same application and gives them no concepts they can carry to other applications or programming languages. Everything else forces the student to consider each action in such a way that it can be presented in several ways.
A good teacher could use macros to teach programming concepts but I suspect most stud
Re:why is your blood boiling? preconceived notions (Score:5, Insightful)
I once had a friend who built an instantiation of LIFE in Excel. Using macros and stored VB code in each cell, he was able to have every cell look up the context of every other adjoining cell during each generation, and the cells would turn on and off accordingly.
I'm not saying it can't be done in Excel. I'm saying just because you're versed in Excel, doesn't mean it's an expedient, or even appropriate tool for managing complex data structures, critical physical concepts, or large multidimensional problem sets.
For straight forward engineering and archtectual applications, it might well prove to be an excellent resource. It just seems a little like going next door via the polar route to try ways of making problems fit an inappropriate tool, vs finding an optimal tool in the first place and having it available for problems requiring greater flexibility, and less application related operational overhead.
Of course, when what you have is a hammer...
Excel in Science?: Python - All a Scientist Needs (Score:5, Informative)
Computational Physics (Score:5, Insightful)
Bottom line: IMHO no special effort to add programming to a physics curriculum should be necessary. However, there are obviously classes where programming is essential to the physics content and for those you would horribly disserve your students by candy-coating the computational aspects.
Require programming as a pre-requisite where the class requires it, and if that means that none of the reasonable degree tracks are possible without it then you have your answer.
Perl, probably Python now (Score:5, Interesting)
Probably Python would be the 'cooler' kit these days. But, my former roommate, now with the National Weather Service, says it's all command-line Perl scripts there and working with me to learn Perl was one of the best things he got in college.
Re: (Score:3, Insightful)
Don't forget floating point .. and abstraction (Score:4, Insightful)
A solid understanding of the nature of floating point numbers wouldn't hurt either. For example, something like David Goldberg's What Every Computer Scientist Should Know About Floating-Point Arithmetic [sun.com].
As to the language not being important, I don't know that that's entirely true. Each language offers a choice of types and some sets of choices are more instructive than others. I personally think Lisp or Scheme are good teaching candidates because they offer arbitrary precision integers and rational numbers in addition to basic floating point number types so that it's easy to see side-by-side the trade-offs being made between correctness on one hand and space/speed on the other hand that go along with choices in this regard.
Plus, if you go the Scheme route, you get teaching materials focusing on good abstraction like Sussman and Wisdom's Structure and Interpretation of Classical Mechanics [mit.edu], the proper companion to Abelson and Sussman's popular CS text Structure and Interpretation of Computer Programs [mit.edu]!
In a modern, educated nation... (Score:4, Interesting)
I'll go even further and suggest that this isn't appropriate for college, but would fit nicely into 6th and 7th grade algebra.
That may be true (Score:4, Funny)
Re: (Score:2)
One might, but they'd be wrong. And if from what I typically read on Slashdot is any indication, people like it that way.
I think the questioner's statement that "Excel can do many things at the cartoon level we care about scientifically. But I'm not interested in giving students toys rather than tools." accurately (and depressingly) s
Re: (Score:2, Insightful)
Just because computers are so prevalent doesn't mean that everyone needs to know how to program. Effective programming is very analytical and structured and some people just don't work that way, and that's fine- w
Matlab (Score:5, Interesting)
If a physics major wants to learn more about programming than is required to compute complex formulas in Matlab then they should probably minor or double major in Comp Sci.
I majored in Math and the only programming I did as part of my degree was in Matlab. And that was in applied classes. I was taught just enough Matlab to do the assignments.
C/Java courses would have been a waste of time. A physics major's time is best spent learning how to use existing tools rather than wasting time learning low level languages so they can reinvent Matlab functionality.
Matlab/octave (Score:5, Insightful)
Numerical Methods (Score:2)
During my undergraduate I had issues with them teaching a proprietary language, but with the phenomenal p
Re: (Score:2, Interesting)
Programming required for Econ degree (Score:2)
I managed to take the course about three times (like most classes outside my major) before passing. The first time was with a Chinese Grad student teacher. We didn't even have a textbook. He recommended that we buy the Donald Knuth series of books at about the cost of fifty hours of minimum wage w
It's not necessary ... (Score:2)
Computer Literacy vs. Computer Science (Score:5, Insightful)
But scientists are going to need to do increasing amounts of computer use as computers pervade and inform the sciences, and that means doing their own programming, including writing real programs and writing scripts to bash input or output data for other programs. So they not only need to learn some syntax, and some scripting languages, they need to learn basic data structures, efficiency issues, debugging, and one of the most important lessons from my CS100 days - "Never trust input" "Ever" . That means they need at least two semesters of programming.
As scientists, even if they don't ever end up doing much more programming than feeding input to other packages and interpreting the output, they need to be able to do it in ways that will run in finite amounts of time and produce correct output - and learning not to trust input is as basic as learning not to connect the 110volt power to a 5 volt device or use fire near flammable liquids.
Programming As a Part of a Science Education? (Score:2, Interesting)
With a BS and MS in physics I find programming to get in the way of what the physics is about.
On the other hand I have spent 40 years programming and find it forces one to clarify the ideas behind any area.
I was taught Algol-60 at Stanford from the computer science department. At that time the physics department did not require any programming.
The experience of Algol lead to SAIL (Stanford AI Language) and then MAINSAIL (Machine Independent SAIL) and late
Varying levels (Score:2)
"Needs" Based Education (Score:2)
If they need to know the conceptual basis, they can get that from math (which physics students get plenty of) or in a more explicit form, from a course in logic. These prepare one for programming by teaching those concepts and so already serve the purposes of background material. If the students needs training in the thinking process, these should do, or else they're not doing their jobs.
Teaching th
Computation and Physics (Score:2)
Not surprised, but still... (Score:2)
Which is not to say that they shouldn't. I note that my own alma mater (Brigham Young University) has a required course in 'Computational Physics' for all Physics majors, but that is primarily solving integrals and differential equations using MAPLE.
From overseas... (Score:2)
They made us learn FORTRAN77 (shudder) for one semester, but it honestly wasn't used much in the curriculum beyond that class. I did a bunch of programming outside of that because my senior (third year...same thing) projects were entirely theoretical, but that was entirely self-taught...there was little to no formal system for getting students into serious programming.
For an undergrad curriculum, I'm not sure
Secondhand experiences (Score:2)
Critical Thinking (Score:3, Interesting)
I'm surprised this is even a question. There is a meaningful use for computers and information technology at virtually every level and function of Physics, save possibly the imagining part.
And even there, the mental muscles you acquire, solving puzzles, constructing semantic connections, seeing the big picture while managing the minutiae, all help to make you a better scientist, to see your problem newly. In fact a great physicist would want to try on at least two or three significantly different world views, just so they have the freedom to Grok their specific field in new and powerful ways. In my experience, getting mired in a narrow way of seeing things is the kiss of death for someone dancing on the fuzzy edge of unraveling the mysteries of existence and trying to see all in a meaningful and relevant way.
Additionally, the language of choice is clearly Vpython. Great for simulations, rich set of programmatic tools, quick prototyping, high level, easy to learn, tons of documentation, and huge user community with tons of ready made chunks of code available for the asking. Excel is a kiddie car. Forgive me, but trying to graphically express a tensor field in excel would be like trying to figure out how jerry-rig a Big Wheel to compete in the Indy 500. You're not going to achieve anything interesting in Excel, and it's a pitiful tool for expressing higher order concepts or visualizations. It's just not made for that for that purpose.
If you're looking to get a really sweet pie chart showing the distribution of funds for your next research grant, by all means, use Excel. If on the other hand you want to do a graphical simluation of branes colliding and view a number of possible outcomes, given by a select range of values for the simulations initial parameters, use Vpython. Let the tool fit the need.
More appropriate goals? (Score:2)
First, equation solving. This means numerical integration, root finding, and so on.
Second, spectral methods.
Third, numerical error. What does it mean for a numerical calculation to be ill-conditioned?
If they start out without the skills needed to write a trivial program, the physics department should not have to teach them. Don't people learn that much in high school?
The most important thing is the hardest to teach in a course of limite
Programming? Yes! (Score:2)
As an undergraduate (in Spain) I had two courses devoted to numerical methods, with practicals in Fortran 77, and at least two more where coding was part of an optional practical. Then I had a PhD-oriented course about Fortran 90. At times I wish I had been introduced to C/C++, but switching languages is very easy compared to learning the first one. I did my PhD (
Programming and a Physics Degree? (Score:2)
Why not Emacs? (Score:2, Funny)
Interpreted languages (Score:2)
University of York, UK (Score:2)
Computer science students seem to think that FORTRAN is funny in some way...
Matlab (Score:2)
Maybe. (Score:2)
Now, there are going to need to be scientists who can program, but there were plenty of scientists in the past who couldn't program -- coming up with the theories and thinking about their give
Depends on how it is taught (Score:2)
While Fortran was the standard when I went into graduate school doing particle physics, it was not as helpful as one might think because of how it was used - learning how to do bubble sorts is nice, but not when you needed to interact with actual hardware, like NIM and Camac crates.
Similarly, when we wer
Fortran (Score:2)
So long as its not fortran, you're in good hands.
I couldn't disagree more (Score:2)
There is little doubt that knowledge of computer programming would be valuable to any science or technology major. But it's one tool among many and depend on what they do with their degree, it's a tool that might go to waste.
As a CS major, my time an energy in college was wasted with several math courses that I hated and have never, I repeat never used. Had I gone in to a different kind of software developme
Working with CS professionals (Score:2)
totally unnecessary (Score:2)
I have a bachelor's in physics from Berkeley (1987) and a PhD in physics from Yale (1994). There was never any formal requirement that I take a programming course. I happened to have been interested in programming since I was a teenager, and I used it sometimes in my PhD research, but I could have done just fine without it. In fact, it might have been better for me if I hadn't known how to program, because I would have wasted less time on coding that wasn't strictly necessary in order to get my research don
One course is dangerous (Score:2, Insightful)
There are those that study programming and are respected by others who know what they are doing.
And there are those (probably managers) who have one course in programming and have written a 50 line program (probably in Basic). They think they know programming. Those people are dangerous.
Whatever gets the job done, basically (Score:2)
For simple plotting and statistics, I'd look into Scientific Python [scipy.org], or Matlab/Octave/Gnuplot.
For programming concepts in general, I advocate taking a course from the CS department, preferably one of the ones that are based on SICP (Berkeley CS61A, MIT 6.001). Then supplement that with some sort of imperative language, and you'll be set for life (cough).
In High Energy Physics
07 Grad from Vanderbilt (Score:2, Interesting)
My programming was limited to one class on MATLAB. Learning to program was a common debate and conversation between the professors and management and the students.
The major issue with knowing how to program was for people who intended to goto grad school. It's definitely a huge plus for graduate wor
Situation at University of Bayreuth, Germany (Score:2, Informative)
There are no strictly mandatory courses that teach programming. Even though, hearing a lecture on a programming language is recommended as is hearing a lecture on numerical computation which touches on numerical accuracy issues as well as basic numeric algorithms (interpolation, equation solving, splines...). Most students choose to follow that rec
When I was an undergraduate... (Score:4, Interesting)
Resume Buzzwords (Score:3, Interesting)
I was once in a moderately prestigious science undergrad program. There were no programming classes as part of the curriculum. And no, this wasn't an oversight on the part of the people who designed the program. Because this was a computer science program.
(Full disclosure: I didn't make it through. Had to admit that in case any of the profs who flunked me out read this.)
That's not uncommon. MIT probably rates as the leading computer science school in the country, maybe the world. I don't know much about their program as a whole, but I do know their key freshman course [mit.edu] spends almost no time describing any programming language. Of course, it helps that they do all their actually programs in Scheme [wikipedia.org], a language whose syntax you can write on the back of an envelope.
Which is not to say that Scheme is a trivial language. Quite the contrary. But I doubt that anybody who makes it through SICP puts "Scheme" on their resume. No, they talk about their newfound knowledge of algorithmics and data structures.
If you want to make your students skilled scientific programmers, don't make them take programming classes. Create physics classes where programming is a key element. Programming is just a tool, and do you have a class for every tool your budding physicists might use?
Constantly programming for science (Score:3, Insightful)
I'm with you (Score:3, Informative)
I have also had programming (not math methods) classes in Java and IDL from a physics department. While I enjoyed them, most of the students who did not have prior programming experience found those classes difficult and uninteresting. Most physics students aren't interested in learning the details of why or how a programming language works, simply what they can do with it. The students who had taken a math methods/programming course found "regular" programming courses much more useful.
I've also had (and taught) classes with LabView. While theorists find LabView totally useless, it is by far the most common programming tool used in experimental labs. You can learn structure and flow with labview, but it's not a very useful learning "language". However, it can (and should!) be taught in advanced lab classes to make things like temperature controllers, timed electronic measurements, instrument control etc. The people who say experimentalists don't need to program are dead wrong. If you can't rig up a simple temperature controller, basic e-beam writing system or digital oscilloscope in software, you're going to be wasting money on hardware you didn't need to buy.
I've had to teach lab classes where the students were forced to present the data in Excel, and that was bad enough. Good luck finding a graduate student in a physics department who's willing to teach VBA and Excel well enough to do anything useful. Use of Excel as a programming platform is not as common as your peers think. I would try very hard to get them to move to something like Origin or Igor, which are much more powerful, produce better graphs and actually ubiquitous.
all the cool kids use matlab (Score:2, Interesting)
Re: (Score:2)
Re: (Score:3, Insightful)
I wouldnt say essential, but it certainly helps, although most sciences don't require programming to achieve their goals, the mode of thinking envolved in programming can be intrinsicly helpful to science. And as you said "graphical", 3D software in general certainly has its place.
Personally, I think at some stage in general curriculum (K-12) programming should be envolved. I was lucky enough to have a teacher in grade 5 that made/let us do basic (as in easy, not t
Re:Excel is OriginLab light (real scientists use i (Score:2)
Re: (Score:2)
Not all physics students are geeks. Indeed, not all science students are geeks, though the non-geeks do seem to be the minority.
Re:Science majors (Score:5, Interesting)
I know this is going to confirm every bad stereotype the
Maybe next semester I'll do a research colloquium on SQL and basic database construction.
Re: (Score:3, Funny)
No column sums for you! (Score:5, Funny)
Re: (Score:3, Insightful)
Fear. Plain and simple. I've seen too many otherwise intelligent people completely freeze up when presented with a computer.
I used to think that it was a case of the older generation not being used to them, but I still see it happening with people who are younger then me.
Once you get beyond things that they know how to do people seem to have an irrational fear of breaking thin
Re:Science majors (Score:4, Funny)
Of course Speccy was wrong and met a premature end when switching him on and yanking out his joystick at the same time caused him to smoke and shortly afterwards to die.
Re: (Score:2)
I forgot Perl within a month. C++ stuck with me a little longer, though I think I've lost it now. I can still write
Re:Science majors (Score:4, Insightful)
Something like Pascal or Python would probably have been better for learning programming, but Fortran was/is the language for science and engineering.
I'm very glad I wasn't introduced to something as inconsistent and inelegant as VB(A) so early in the learning process. It's much harder to unlearn than it is to extend your knowledge.