## Physics 329: Introduction to Computational Physics: Proposed Syllabus

### Unix: 2 weeks

- Week 1: Overview, Unix basics (filesystems, commands, standard I/O, X-interface ...)
- Week 2: Basic shell programming and Web authoring.

### Maple/Mathematica: 3 weeks

- Week 3: Introduction, command-line and GUI interfaces, basic
commands and interactive problem solving.
- Week 4: Basic Maple/Mathematica programming.
- Week 5: Plotting facilities, interfacing with other systems,
sample applications.

### Scientific Programming (F77/F90/C): 3 weeks

- Week 6: Use of target language in Unix environment (compilation, linking,
make, RCS ...), basic programming elements (variables, basic statement
types, control structures ...)
- Week 7: Modularization (functions/subroutines), arrays and other
data structures useful in scientific programming.
- Week 8: Integration and interaction of programs with other
tools (plotting packages, visualization packages, Maple/Mathematica ...),
porting and testing codes on different architectures/machines.

### Solution of Linear Systems: 1 week

- Week 9: The LU decomposition algorithm, using "canned" software for solving
full linear systems, applications (circuit analysis ...)

### Elementary Finite Difference Methods: 2 weeks

- Week 10: The nature of discrete equations derived from continuum systems,
expected behaviour of FD approximations (convergence & accuracy),
polynomial interpolation.
- Week 11: Numerical differentiation and numerical integration, applications.

### Non-linear Equations (Root Finding): 1 week

- Week 12: Bisection (binary search), Newton's method, Newton's method for systems of
non-linear equations.

### Particle Simulations: 1 week

- Week 13: Typical equations of motion for interacting particle systems,
discretization of EOM, applications (n-body gravitational problem ...).

### Solution of ODEs: 1 week

- Week 14: Using "canned" software to solve ODEs and simple systems of
ODEs.

### Random Numbers, Monte Carlo and Stochastic Methods: 1 week

- Week 15: Random number generators, generating non-uniformly distributed
random numbers, simple Monte Carlo simulations (diffusion limited
aggregation ...).