Introductory Computational Physics
Introduction
This is a course on solving physics problems algorithmically: using a combination of analysis and modern computer based numerical techniques. The first, and main, desired outcome of this course is to enable you to frame physics research in terms of wellposed problems, which then have algorithmic solutions. The second desired outcome is to learn basic techniques in the three main areas of linear problems, finite differences and stochastic methods.
On the way we will meet interesting concepts such as iterations, fixed points and chaos, computability, hardness and NP completeness, the ChurchTuring thesis and randomness.
Prerequisites
If you want to take this course then you must have a good knowledge of the elements of differential equations, linear algebra and statistics at the level of being able to solve most exercises in Arfken. Understanding the power of computation is one of the purposes of this course, so you should know either C or Fortran (C++ or Fortran 90 will do, but not Java). Code development will take place in class, so you need a laptop running linux and loaded with either C or Fortran compiler and libraries.
This course will not teach elementary mathematical physics or programming languages. If you want to brush up on C use Kernighan and Ritchie. If you want to brush up on Fortran 90 then use Metcalf and Reid. You will need to learn Mathematica. This computer algebra system is available in the computer center, and you can use it by remote login to specific machines there. If you don't know anything about it, then download this introduction notebook and run it. You can also look at their web site and the book by Wolfram.
Knowledge of the document preparation system T_{E}χ is not mandatory, but merely useful. You can start by looking at the source and pdf of a small style guide, and then continue reading on line.
Laptop configuration
First the hardware. You need to have a laptop with a dual or quad core Intel CPU running at a speed of over 1 GHz. You should have a RAM of at least 1 GB. Your laptop should have wireless. As for the software: for interoperability with the software that I'm putting together for the course, you need to run a linux operating system. Also, you need to load Intel C and FORTRAN compilers and libraries. These licences will run on a server in TIFR and you should set up your machine to be a client. We will have a meeting at 5 PM on January 29 to synchronize software.
Remember that your performance during the class is one of the inputs into your course grades. So make sure that you have working hardware and software before the lectures begin on February 1.
Evaluation
Drop Test
If you think you know the material that will be covered in this course, then you are very strongly urged to take a drop test. Send me mail at the email address "sgupta+cp2010" (at mailhost) asking to register for the test. A drop test will be administered on February 13 to those who register by that date. Make sure that you don't miss the deadline, because this will be your last chance to gain credits without doing any work. No other drop test will be administered.
Course Evaluation
Evaluation for this course will be a combination of performance metrics based on classroom work, assignments and individual projects.
Classroom work will consist of actual problem solving in the form of written programs and their demonstrated outputs. For this work it is absolutely essential that each student brings a laptop to every class.
Individual projects will be assigned in the first half of the course. I propose to spend the last 15 (approximately) contact hours of the course in handson exercises and student seminars on their progress in the respective projects. Each student will be required to submit a project report and the complete set of programs which gave the data in the report. All these inputs will be used for the evaluation.
Course contents
The first half of the course will involve handson work on your laptop during the classroom hours. In the second half, each student will be assigned a problem to solve, and the classroom hours will be used for seminars and progress reports by each of the students.
 The mathematical context of modern physics

 Section 0
 C code, F90 code, Mathematica, Notes
 The representation of numbers in a computer

 Section 1.1
 C code, F90 code, Mathematica, Notes
 The first basic technique: linear algebra

 Section 1.2
 C code, F90 code, Mathematica, Notes
 The second basic technique: function approximation and finite differences

 Section 1.3
 C code, F90 code, Mathematica, Spreadsheets, Notes
 The third basic technique: stochastic variables

 Section 1.4
 C code, F90 code, Mathematica, Notes
 Solving real problems

 Section 2
 C code, F90 code, Mathematica, Notes
References
Course references
 Computational Physics — an Introduction 2001 Plenum Publishers
 This is the primary reference book for the first part of the course. A copy is reserved for reference during the course in the Ablock library.
 The Art of Computer Programming (Volume 2) Seminumerical Algorithms 2000 Addison Wesley
 The ultimate reference book for computer arithmetic and random number generation from one of the founding fathers of computer science. It is absolutely necessary to read through it some time during the course. A copy is reserved for reference during the course in the Ablock library. After you've read the book and solved all the exercises, you can expand you mind a little more by taking a look at Knuth's home page.
 Matrix Computations 1996 Johns Hopkins University Press
 One of the standard modern references for algorithms in linear algebra: covers everything from efficient multiplication of matrices to modern iterative techniques for matrix and eigenvalue problems. Contains a nice introduction to the BLAS (Basic Linear Algebra System) library. Golub was one of the foremost numerical analysts in recent years. A copy is reserved for reference during the course in the Ablock library.
 Numerical Methods for Mathematics, Science and Engineering 200? PrenticeHall of India
 This book covers the usual complement of basic algorithms in numerical mathematics. Some people may find this to be an useful book because it is written at a very elementary level and contains a large number of exercises for selftesting.
Optional references
 Computational Physics 2006 Pearson Prentice Hall
 This books contains a large number of examples of systems described by differential equations. There are nice examples of how realistic systems are built out of simpler components, and how the additional physics affects the behaviour of the system. A copy is reserved for reference during the course in the Ablock library.
 Computational Physics 2007 WileyVCH
 This books deals with the usual material covered in older numerical analysis courses with more examples and less of the analysis. It provides context and longer descriptions, as well as example problems, to supplement material in Numerical Recipes. A copy is reserved for reference during the course in the Ablock library.
 A Survey of Computational Physics 2008 Princeton University Press
 This book extends the material of the previous one by including more details, and presents techniques used in some modern day research level computation. A copy is reserved for reference during the course in the Ablock library.
 Computational Physics 2007 Cambridge University Press
 This book presents techniques used in computational condensed matter physics. A copy is reserved during the course in the Ablock library.
Prerequisites and background
 Mathematical Methods for Physicists 200? Academic Press
 This is a standard reference for most of the mathematical methods that are needed for this course: matrices and vectors, complex variables, differential equations, special functions and elementary group theory.
 The C Programming Language 1988 Prentice Hall Software
 A guide to ANSI standard C written by the developers of the language. It shows how to take advantage of C's rich set of operators, economy of expression, improved control flow, and data structures. This is the gold standard for books on C.
 Fortran 90/95 Explained 2002 Oxford University Press
 A guide to the object oriented version of FORTRAN which explains the language elements and structures in the Fortran 90/95 standard.
Manuals
 The Mathematica Book 2002 Cambridge University Press
 This is a manual for the Mathematica computer algebra system, and is an encyclopedic documentation of the system. It has everything, although it may be difficult to find what you want the first time around.
 Numerical Recipes 200? Cambridge University Press
 This is the basic textbook for the course. There are multiple editions aimed at different languages, and a web site. Use whichever version you are interested in, but make sure that you identify section numbers and material correctly.
Copyright: Sourendu Gupta; Last modified on 28 Oct, 2009.