PHY473A: Computational Physics

Course Description

What is this course about?

Many scientists and engineers are using computers to solve their research problem. In the present course, we will cover how to program, and how to solve scientific problems using computers.   

Python as the computer language 

The course will emphasize how to think algorithmically.  However, we need a programming language to write programs on.  In the present course, we will use Python. This is to save time in the programming part.  Python is a full-fledged programming language, and you can do most of the work using Python.

We will use Ananconda Python distribution (https://www.continuum.io/downloads) since it is easiest to work with.  You will not need to learn a host of things like Operating System etc.  (though I recommend that you learn Linux).  Install the academic version. It is free after registration.  The course will use version 3.0.

Homework

Every week we will provide practice programs in PRUTOR. These will be of programming kind.  It is imperative that you solve all the problems of the HW.  Programming cannot be learned by theorizing the solution.  

During the lab, we will give assignments that will be graded.  These problems will be typically solved on PRUTOR.

Projects

I will float a set of projects after the mid-semester examination.    A team of 2 students will work on these projects.  Projects are open-ended.  You are expected to achieve a minimum level in the project.  You could, however, take the projects any height you may wish.

Marks distribution

Midsem exam (theory+programming): 30 marks

Endsem exam (theory+programming) OR project: 30 marks

Assignments: 30 marks

Quizzes:10 Marks

Attendance: Mandatory 80% for the lab + 60% for the discussion hour.  The students failing to do so will not be allowed to appear in the final exam.

Top 16 students of class based on lab assignments and midsem exam will be offered  projects in lieu of the final exam.

Discussion hour

Every MONDAY 11-12AM in L14

Quizzes will be held during the discussion hour.  I recommend that everyone should attend the discussion hour.

Office hour

Every THU 10:30-11:30AM in Old core lab 103D

 

Course Content

Topics

First part: 

  • About computers: hardware and software

  • How to be a good programmer?

  • Algorithmic thinking and Aesthetics. 

  • Python

Second part - Numerical analysis:

 Interpolation, differentiation, integration, ODE solver, PDE solver, matrix computations, Monte-Carlo method, Equation solver.

Textbooks & Websites   

  1. Mark Newmann: Computational Physics with Python, 2nd Ed. (to be placed in TB section).
    http://www-personal.umich.edu/~mejn/cp/index.html

  2. J. M. Stewart: Python for Scientists, Cambridge U. Press (2014)

  3. M. Lutz, Learning Python 5th Edition, O'Reilly Media (2013) 

  4. J. H. Ferziger, Numerical Methods for Engineering Applications, John Wiley & Sons (in TB section).

  5. My notes.

References

Unix

  1. The first three tutorials of  http://info.ee.surrey.ac.uk/Teaching/Unix/

  2. Sumitabha Das, Unix Concepts and Applications, Tata Mgraw Hill (Indian Ed): An introductory book.

Books on C++ (advanced.. only for the interested students!)

  1. B. H. Flowers,  An Introduction to Numerical methods in C++, Oxford Univ Press (Indian Ed) (in TB section).

  2. D. Yevick, A First Course in Computational Physics and Object-Oriented Programming with C++, Cambridge U Press.
    http://www.cplusplus.com/doc/tutorial/

  3. B. Stroustrup, Programming: Principles and Practice Using C++, Addison Wesley, 2009.

  4. B. Eckel, Thinking in C++, Volume 1, Second Ed. Pearson Education, 2001.

Books on numerical analysis

  1. W. H. Press et al., Numerical Recipes in C++: The Art of Scientific Computing, 2002.

  2. T. J. Chung, Computational Fluid Dynamics