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.
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.
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.
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.
Every MONDAY 11-12AM in L14
Quizzes will be held during the discussion hour. I recommend that everyone should attend the discussion hour.
Every THU 10:30-11:30AM in Old core lab 103D
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.
Mark Newmann: Computational Physics with Python, 2nd Ed. (to be placed in TB section).
http://www-personal.umich.edu/~mejn/cp/index.html
J. M. Stewart: Python for Scientists, Cambridge U. Press (2014)
M. Lutz, Learning Python 5th Edition, O'Reilly Media (2013)
J. H. Ferziger, Numerical Methods for Engineering Applications, John Wiley & Sons (in TB section).
My notes.
Unix
The first three tutorials of http://info.ee.surrey.ac.uk/Teaching/Unix/
Sumitabha Das, Unix Concepts and Applications, Tata Mgraw Hill (Indian Ed): An introductory book.
Books on C++ (advanced.. only for the interested students!)
B. H. Flowers, An Introduction to Numerical methods in C++, Oxford Univ Press (Indian Ed) (in TB section).
D. Yevick, A First Course in Computational Physics and Object-Oriented Programming with C++, Cambridge U Press.
http://www.cplusplus.com/doc/tutorial/
B. Stroustrup, Programming: Principles and Practice Using C++, Addison Wesley, 2009.
B. Eckel, Thinking in C++, Volume 1, Second Ed. Pearson Education, 2001.
Books on numerical analysis
W. H. Press et al., Numerical Recipes in C++: The Art of Scientific Computing, 2002.
T. J. Chung, Computational Fluid Dynamics