# 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.
### Instructors

Prof. Phil Duxbury - Rm 205PA, 353-9179, duxbury@pa.msu.edu
Patrick Gallager (CSE major) - gallag63@msu.edu
### (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).