A sort of Course Syllabus for Physics 410/510:

Spring Term 2016:

  • Class Meets F 1-3:30 pm in Library 41
  • There is no required textbook
  • Students should have their own laptop


The Course Website is:

http://homework.uoregon.edu/pub/class/sciprog16




Practices of Scientific Programming


Instructors:

  • G. Bothun (hair): bigmoo@gmail.com
  • C. Rasmussen (no-hair): rasmus@cas.uoregon.edu


Course TA:

  • Bishara Korkor (bishara.korkor@gmail.com)

    Office Hours: Tu,We,Th 1-2 pm

Topics in this class could include:

  • Why programming matters
  • How programming enables data exploration
  • Basic scientific progamming logic
  • Data organization, data management, data forms
  • Visualized output of data; using viz libraries
  • Scripting: shell, python, etc
  • Fortran programming (yes really)
  • Parallel programming
  • High performance computing.
  • Collaborative projects using GitHub


Grading and Course Logistics:


There will be a series of excercises, some short, some more involved that will be due Thursday before that week's class. The Assignment should be available by Saturday following the Friday class. The assignments all have multiple ways of doing them along with various kinds of failure potential.

Your are encouraged to work with others, in groups up to N = 3 on the exercises. Collaborative failure and recovery is how this entire enterprise works. When you get stuck always type this into Google: "How do I do this fucking operation in (pick your language)". You are never the first to encounter these problems. Use the accumulated knowledge of others.

The friday class will always start out with a review of the various approaches to the assigned problem of the week, the various kinds of failures encountered, and suggestion for to how avoid these in the future. This is precisely why the assignment is due Thursday night. The only real way to learn this stuff is by practice, trial and error, failure and recovery.

There will be NO midterm and NO final. Those traditional instrument are pointless for this course. Your course grade will be based entirely on how conscientiously you do these assignments - success is not a requirement - a good faith and serious effort is.

In the beginning the assignments can be done using any set of tools that you want but near the end of the course, most all students will converge on using some combination of python and Fortran (fortran90 = gfortran on ACISS) as the main tools.

We will also be doing data visualization routinely as part of the exercises - you should refer to the Resources Tab often as there will be links to useful things there


Does this class even work?



Well we don't know but here is a recent email from an undergraduate physics major from last year's class.

    Hi Greg,

    Just wanted to thank you for the frank and accurate insight you shared regarding the job market for physics undergrads during the scientific programming course you taught last spring.

    The class motivated me to a pursue a career in the field and I'm happy to have received a good offer as a data analyst at a small healthcare firm. I start work April 4th, two weeks after I graduate.

    The course was easily the most valuable I took at UO.



Finally, this is very important and we write it down here to remind the instructors of this very important notion.

Data science is about thinking and exploring data without any pre-conceived notions of how to do this. The homework exercises involving real data sets are meant to directly reinforce this idea of data science.

You will never see this material taught in any kind of computer science class because, in such classes, there are preferred ways to execute data analysis. In general, computer scientists are not concerned with noisy data.

In the real world of scientific data, noise, ambuiguity and open ended explorations abound. Analysis of this data is difficult and many failure points exist. You will encounter these points and rebound and solve them with a variety of approaches. Learning this kind of resiliency is KEY to future sucess.

In the past we have failed to properly articulate this, or if we did the students did not believe this, until the end of class. So, recognize that data is difficult to deal with and there is no best approach most of the time. This class is about thinking first and computing/algorithms second.