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 on 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-fledge 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 2.7.

Homework

Every week we will provide practic 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 midsemester 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.

Tentative Plan - Marks distribution

Midsem exam (theory+programming): 30 marks

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

For projects, you will need 60% in assignments and midsem exam.

Assignments: 30 marks

Quizzes:10 Marks

Discussion hour

Every Friday 10-11AM in L15

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

Office hour

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

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).

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 ones!)

  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