Computational Physics: Physics 261

Course Information

Physics 261 is a three credit laboratory course which meets for 6 hours/week. This course is designed to be taken by physics majors in their second semester, and it typically taken concurrently with Physics 123. Because our physics curriculum integrates computational throughout all our upper level courses, it is essential to take this class before advancing to any other 200+ level physics courses. 
This course is project based, and students are not expected to have any prior programming experience. We currently teach this course using python with the majority of work being done using the JupyterLab interface running on our department’s 20-Core System76 Linux Server which runs an instance of “The Littlest Jupyter Hub”. 

Learning Outcomes

By the end of the semester, students in this course will gain experience in:

  • The Bash Shell (basic commands like ls, cd, mv, rmdir, etc)

  • Logging into a JupyterHub server and using the Jupyter Lab  interface

  • Learning how to install and maintain a working python distribution on a personal computer

  • Uploading data, python scripts, and .ipynb files to the server

  • Using Github for version control

  • Learning the basic data types and control structures in Python 3.x

  • Reading in and writing data files in multiple formats

  • Become proficient in using Markdown syntax and incorporating basic LATEX code to typeset mathematics.

  • Become proficient in technical written communication.

  • Learn how to use the Euler, Euler-Cromer, Verlet, and Runge- Kutta methods for solving ordinary homogeneous and inhomoge- neous differential equations.

  • Using simulation to solve random systems (randomwalks in 1 and 2D, percolation theory)

  • Use python to read in data, make technical plots, perform fits to the data, as well as the uncertainties in the fit parameters.

  • Simulate the motion of simple systems such as projectile motion, planetary motion (with and without air resistance)

  • Explore the behavior of chaotic systems such as a driven non-linear oscillator)

  • Work together on a team to solve a larger programming project, all coordinated using version control.

  • Walk away from class with a computational toolset that can be used for all further coursework, and provides a framework of un- derstanding relevant to a STEM Career and further scientific work.

    Computing Platform Recommendation

    Three Recommendations for running Python.
    If you’re in the nice position of being about to purchase a new computer, I strongly recommend using either the Mac OS or Linux. However, in order to attempt to give all students equal computing access, the University of Southern Maine helped the Physics Department purchase a 20 core Linux server which runs JupyterHub; this will allow you to compute using a laptop, a tablet, a chromebook, or even a smartphone.

    Option 1:
    Every student will be given a JupyterHub account on the Physics Department’s Linux Server; this System76 Linux server has two 10-core processors, 256 Gb of Ram, and a GeForce RTX 2080 Ti GPU with 4352 CUDA cores.
    Option 2:
    For running python on your own computer, I recommend the Anaconda Python Distribution . This is an one click install with everything you need to get up and running on your own computer. (Pick the python 3.x version.) Anaconda Download Link

    Option 3: (beta):
    Another interesting option is the nteract application; this is a self-contained jupyter notebook application that opens just like any other app on your operating system. You can find out more about this project here  it is still not at v1.0, but seems to work well for most of what we need for class.