So How Much Computing Should An Astronomer Learn?

I was asked this by a colleague after last week’s post on why astronomers have not taken to cloud computing. So I thought this week I would give my answer to this question.  What I think astronomers need to learn as part of formal instruction is

  • How a computer works and what limits its performance – when do I/O, memory, processing speed start to limit performance, and what a scientist can do about this
  • Languages – at least one low level language, preferably C, and at least one scripting language; my choice would be Python.  C is powerful – as it is close to machine language, it can perform bit-level manipulations, it is versatile, and a the best choice for many high performance apps.    Python introduces astronomers to object-oriented coding as well as a powerful scripting language with an easy syntax.  Armed with these two languages,  it becomes easier to learn IDL , Java and many other languages.
  • How to make code portable – Astronomers are much more likely nowadays to have to run their code on a remote computer, so they should learn how to develop portable code that is easy to maintain (component based design, avoid shared memory and avoid system calls…)
  • Parallel programming. Astronomers will process larger and larger volumes of data in the future, so I think they should learn how to perform parallel processing – MPI, vectorizing code etc
  • How relational databases work,  their theoretical basis (set theory), and how to design relational tables
  • Computing platforms – clusters, clouds, grids. What they are and when  to use them.

Of course, in a few years, I might advocate different technologies, such as computing on mobile platforms, if that takes off in science.

This entry was posted in Astronomy, education, software maintenance, software sustainability, Uncategorized and tagged , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s