Fundamentals of Computational Physics

		Fundamentals of Computational Physics
		-------------------------------------

	This course covers the application of computers to solving
	basic problems in physical science, including an introduction
	to programming in C(C++), use of external libraries, and
	implementation of basic algorithms with a focus on numerical
	methods, error analysis and data fitting, and simulating
	physical processes. Prerequisites include one semester of
	physics and one semester of calculus. No previous computer
	experience is required.

	This course was developed as Physics 254 and, later, Physics
	2660 by Prof. Bob Hirosky.  These notes are by Bryan Wright,
	and are derived from Prof. Hirosky's curriculum.


Outline:
--------
1. 00-Welcome-notes.pdf
      Welcome; Course Structure; Intro to Linux and GNU C;

2. 01-Intro-notes.pdf
      Inside the computer; The shell; First steps toward programming;

3. 02-C1-notes.pdf
      Variables in C; Data types; Basic I/O; Operators;
      Functions; Debugging tips;

4. 03-C2-notes.pdf
      Conditionals; Loops; Intro to statistics;

5. 04-C3-notes.pdf
      More on Loops;  Pointers; More on functions; Static Variables;
      Performing integrations with random numbers

6. 05-C4-notes.pdf
      Estimating Errors in Monte Carlo Results; Arrays; Reusing code;
      Passing arguments to main(); Pointers to functions;
      Basic numerical integration / differentiation techniques

7. 06-C5-notes.pdf
      Arrays and pointers; Strings; User-defined data structures;
      Histograms; Libraries; Tips (etc) 
      
8. 07-C6-notes.pdf
      More probability distributions: Binomial, Poisson, ...  but 
      the world is mostly Normal; Histograms with weights;
      Default parameters and constant specifiers in functions;
      More on Structures;

9. 08-notes.pdf
      A taste of C++, functions in structures -> classes;
      Searching & Sorting; Interpreting experimental uncertainties;
      Combining / propagating uncertainties in experiments;

10. 09-Fits-notes.pdf
       Agreement of data with theory (or other data);
       Fitting a model to your data;

11. 10-notes.pdf
       Comments on chi-squared fits; Bitwise operators and binary files;
       Generating arbitrary distributions of pseudo-random numbers for 
       functions that can be inverted and binned data;

12. 11-notes.pdf
       More on bitwise operations; Reading/writing binary files;
       Dynamic memory allocation; A few more C++ techniques;

13. 12-notes.pdf
       Data structures;

14. 13-notes.pdf
       Convolution; Fourier Analysis; Cryptography