Next semester I’ll be doing a new course in computational simulation. I’m looking forward to the course and hope believe that it will be extremely useful for our physics majors who rarely do any programming. I am a bit apprehensive that it might mean a very heavy workload for me next semester as I will also have a new General Education course in solar and alternative energy as well as be teaching descriptive astronomy and contemporary astronomy. 

If you would like to check out my course, please follow my course web page. I wanted to dive a bit into mechanics in this post.

Software

I’ve decided to use python in my course as it has a relatively shallow learning curve and includes a very robust set of tools in SciPy and NumPy. I am pointing my students to the Enthought Python Distribution which bundles the libraries they need together for Mac OS X and Windows. Their free academic version should make installing a working python distribution and libraries fairly easy. I have also suggested the students use Wingware’s Wing IDE 101 which is also available for free academic use. I am less familiar with Wing, but my research students found it more intuitive than other text editors.

I decided that part of any computational class should be instilling good practices for coding and for research, so I am also introducing them to distributed revision control in the form of mercurial. I considered introducing them to git, but I find mercurial a bit more intuitive to use and understand. I use mercurial as my main revision control system, so it’s also not a steep learning curve for me.

I will be requiring them to submit reports with their laboratory write-ups. I considered letting them use whatever WYSIWYG systems they currently use, but I would prefer that the files they work on be text based and included in the mercurial revision control easily. I thought about requiring LaTeX, but that seemed like a steep learning curve for a one semester class that will also include python programming, so I decided to meet them half-way and use LyX for write-ups. LyX files are plain text, but they include a WYSIWYM (What you see is what you mean) editor which should be more intuitive for the students.

Finally I decided to include Gnu Make as a topic and program in my course. I know Make is a bit old and there are several build systems which might be more modern, but Make is very adaptable. I want to get the students automating the production of simulations and the comparison of those simulations with data. Make will be especially important as a tool for them in one of the later competition based assignments where they will be given a new data set and be required to produce a simulation based on that data in class.

Paperless

Since this is a computational class, I am going to try to be paperless. I will be assigning homework through the wiki and a mercurial repository will be serving them code stubs and instructions. They will turn in assignments as a mercurial bundle which will be delivered directly to my Dropbox using FileStork.

I was going to modify each repository with comments and a grade, but I haven’t figure out how I will return it. Probably via email as the comments are not likely to create a very large changeset. If anyone has suggestions, please feel free to contact me.