COURSE TIME/LOCATION:
Lectures: Mondays and Wednesdays 3:104:00 pm, Roessler 55 Section 1 Labs: Tuesdays and Thursdays 1:103:00 pm, Physics 285 Section 2 Labs: Tuesdays and Thursdays 3:105:00 pm, Physics 285 Please attend your assigned section only!
INSTRUCTOR:
Richard Scalettar
TEACHING ASSISTANT:
TBA
GRADING:

Programs will be written in C or C++ in first part of course, and python in the second portion. 
TEXT:
None required. However....
You will probably find it useful to have a book on
computational physics, and guides to C and python programming.
I suggest:
"Numerical Methods for Physics", Alejandro Garcia,
which is available in both C++ and Python versions ($19 and $16
respectively on Amazon):
http://www.algarcia.org/nummeth/nummeth.html
These cover both the programming and tools in one swell foop, and hence
are probably your best bet as a single, efficient, source.
Longer books on the languages themselves are
"Teach yourself C++" by Al Stevens,
"Think Python" by Allen B. Downey.
Everything you need to know will be provided in class, so
it is up to you to decide if background reading helps you learn better.
REQUIRED BACKGROUND:
My experience is that there is a more broad range of student backgrounds
in computational physics courses than in any of the department's other
classes.
I will not assume you know *anything* about coding or computational
methods. I will provide supplementary problems to those students
who do have a deep background, so they can push forward as well.
NOTES:
SHO and Projectile
Kepler
Partial Differential Equations
Diffusion Equation
Laplace Equation
Analytic Solution to Laplace Equation
DETAILED SYLLABUS, PART ONE (Computational Physics in C):
Class/Lab One (Tuesday March 31):
Introduction to C++; Simple Practice Programs.
For the "expert": The Collatz Conjecture; The Locker Problem
Lab One write up
Class/Lab Two (Thursday April 2):
Introduction to C++ (continued);
Geometric, Arithmetic, and Taylor Series.
For the "expert": Intersecting lines, root finding by bisection.
Lab Two write up
Class/Lab Three (Tuesday April 7):
Numerical Differentiation and Integration;
Plotting using xmgrace.
Lab Three write up
Class/Lab Four (Thursday April 9):
Molecular Dynamics: the harmonic oscillator.
Lab Four write up
Class/Lab Five (Tuesday April 14):
Plotting; More molecular Dynamics: the damped oscillator and
projectile motion.
Lab Five write up
Class/Lab Six (Thursday April 16):
The Kepler problem.
Lab Six write up
Class/Lab Seven (Tuesday April 21):
Kepler Part Two; Conservation of Energy and Angular Momentum;
Condition for circular orbits.
Arrays.
Diffusion equation in one dimension.
Lab Seven write up
Class/Lab Eight (Thursday April 23):
Partial differential equations;
Discretization of second derivative.
Laplace equation in one dimension.
Lab Eight write up
Class/Lab Nine (Tuesday April 28):
Connection between diffusion and random walks.
Random number generator; Random number moments.
Lab Nine write up
Analytic Solution Data File
Class/Lab Ten (Thursday April 30):
Analytic solution of diffusion equation;
Greens functions.
Exploring diffusion equation for different initial conditions.
Random walks.
Lab Ten write up
Class/Lab Eleven (Tuesday May 5):
"Visual test" of random number generator.
(Random numbers fall mainly in the plane.)
Using random numbers to compute a famous constant.
Laplace equation in two dimensions.
Lab Eleven write up
Class/Lab Twelve (Thursday May 7):
Analytic solution of Laplace equation.
Iteration step is not the same as time!
A simpler example of iteration.
Analytic Solution data file
Lab Twelve write up
Class/Lab Thirteen (Tuesday May 12):
Mathematics of eigenvalues and eigenvectors.
Eigenvalues in classical mechanics. Normal modes of diatomic molecule.
More eigenvalues in classical mechanics. Normal modes of N atom chain.
Eigenvalues in quantum mechanics.
Using Numerical Recipes function 'jacobi'.
Lab Thirteen write up
Class/Lab Fourteen (Thursday May 14):
Participation ratio.
Matix multiplication.
Lab Fourteen write up
DETAILED SYLLABUS, PART TWO (Computational Physics in Python):
Class/Lab Fifteen (Tuesday May 19):
Python in Interactive Mode.
Lab Fifteen write up
Class/Lab Sixteen (Thursday May 21):
Python with scripts. More python syntax.
Lab Sixteen write up
Class/Lab Seventeen (Tuesday May 26):
Plotting in Python; Arrays in Python;
Molecular Dynamics in Python the harmonic oscillator.
Lab Seventeen write up
Class/Lab Eighteen (Thursday May 28):
Molecular Dynamics in Python the anharmonic oscillator,
the Kepler problem.
Lab Eighteen write up
Class/Lab Nineteen (TuesdayThursday June 24):
More on Arrays,
Diffusion Equation, Laplace Equation.
Lab Nineteen write up
QUIZZES AND FINAL FROM 2019:
Quiz 1
Quiz 2
Quiz 3
Quiz 4
Quiz 5
Quiz 6
Quiz 7
Quiz 8
Final Exam
Diagonalization Routines
Instructions for compilation and use.
jacobi.c
jacobi_test.c
nrutil.c
nrutil.h
input.txt