PHY301 - Physics Computations III

Maintained by Phil Duxbury

Course content

This one credit course is the third of three computational physics courses (PHY102, PHY201, PHY301) designed to teach undergraduate physics students how to use computers to solve physics problems. PHY102 emphasizes the use of Mathematica to solve mechanics problems. PHY201 introduces Fortran(77,90) illustrated with problems from electricity and magnetism and continues the use of Mathematica. The ideas of well structured and object oriented programming are briefy introduced. PHY301 emphasizes object-oriented programming primarily in JAVA but also with reference to JAVA's predecessors C++ and C. JAVA is used to solve selected numerical problems in differential equations and linear algebra which are relevant to physics. Mathematica continues to be used.
We offer a further course in computuational physics, PHY480 , which is a three credit course intended to introduce more advanced techniques of computational physics, such as Monte Carlo, Molecular Dynamics and Electronic Structure Calculations.


  • Prof. Phil Duxbury - Rm 205PA, 353-9179,
  • Patrick Gallager (CSE major) -

    (Tentative) Lab. Schedule(for 201 and 301) - Room 346 Giltner Hall

    Tuesday: 2-4:30pm.
    Instructors Duxbury/Donev
    Students Arnold, Harris, Lande, Prichard, Santonocito
    Tuesday: 7-9:30pm.
    Instructor Gallagher/Donevr
    Students Kuxhaus, Ochoa, Park
    Thursday: 2-4:30pm.
    Instructors Duxbury/Donev
    Students Chvolka, Dumont, Katsuhara, Schepler, Strahler, Trionfi, Weerts
    Thursday: 6-9:30pm.
    Instructor Donev
    Students Lam, Oostdyk, Welsch
    You should set aside at least 2 hours per week to work through the weekly worksheet.

    Course Assessment

  • 75% will come from your solution to the weekly worksheets
  • 25% will come from a one hour practical exam at the end of the semester. This exam will be held in the last week of semester during your regular lab. time. In the exam you will be asked to perform mathematica functions you have used in the worksheets during the semester. Nothing new will be introduced. You will need to know how to use the online help facilities and online reference material.

    The Worksheets

  • Worksheet 1 ( html)

    Reference Materials

    JAVA references

    There are many online tutorials for JAVA, C++ and C. Two sites that we recommend are:
  • The Java tutorial at Sun
  • The tutorials at DevCentral Learning Center
    The C, C++, JAVA series of languages started with C, so you might like to start there. However JAVA is sufficiently evolved from C that you can treat it as a ``new'' language. Actually the worksheets will follow quite closely the text:
  • JAVA gently for scientists and engineers.
    They also have a web site and we shall download code from their site periodically. JAVA is very similar to C++ and contains most of C++, with the exception of some things, such as pointers (though there are things called ``references'' which are quite like pointers). Anyway knowing C++ certainly helps in learning JAVA. Here is a local course on C++ (by a physics grad. student)
  • Alex Zhukov's C++ class
    This is probably too much for us, but it is good to read through the first few units of the course.

    Othe useful reference material, some of which is used in the PHY102 and PHY201 courses is:

  • Introduction to Mathematica (Written by Ellen Lau)
  • Introduction to Linux Computing in rm346G.
  • Introduction to Fortran Reference Manual
  • We also plan a parallel computing component to our offerings in Fortran
    Alexandar Donev is putting together the hpf links and infrastructre necessary to initiate that effort.

  • Introduction to C and C++ (handout)
  • Nice online intro to C and C++
  • C++ programming for scientists - highly recommended.
  • Lots of online C, C++ and Java (but quite a few dead links)
  • Introduction to C online.
  • C++ An Introduction to computing, Adams, Leestma, Nyhoff

  • Numerical Recipes online. This is a book of numerical methods that are very useful in physics.

  • Introduction to HTML online
  • local html help
  • Graphics programs, including xmgrace
  • Other local help manuals (e.g. Latex and related packages).