A sort of Course Syllabus for Physics 410/510: Scientific Computing

Spring Term 2017:

  • Class Meets F 1-3:20 in B042 in the Science Library
  • During that class time we will also spend time in the Visualzation Wall room, which is around the corner
  • There is no required textbook
  • Students should have their own laptop
  • Students should get an account on ACISS as soon as possible
  • Install VirtualBox on your PC if necessary
  • Install Python Notebook - http://continuum.io/downloads or some equivalent if necessary. Find out from other students what they use.

    For undergrads, bug Eryn Cangi. For grad students, bug Bishara, Kahli, or Jordan Chess.


The Course Website is:

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




Practices of Scientific Programming


Instructors:

  • G. Bothun: bigmoo@gmail.com

    Office Hours:

    1030-1300 Tuesdays and Thursdays Willamette Hall 417


Course TA:

  • Kahli Burke (kahli@uoregon.edu) (note that the TA knows more about this stuff than the calcified professor).

    Office Hours

    1-2 Wednesday Willamette Hall 463
Topics in this class could include:

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


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.



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.

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.