Course description: This course is designed to teach students essential elements of computer programming and numerical analysis that will useful in carrying out research and other work. This work often involves
(i) the gathering, organizing, and analysis of data
(ii) the use of numerical algorithms (e.g., regression, simulation, optimization, solution of nonlinear equations, etc.)
(iii) the generation and presentation of results using tables, graphs, slides and reports
This course will prepare students to be able to correctly and efficiently carry out these tasks. No prior programming experience is necessary to take this course. Students from all divisions are welcome. Specific course topics include:
1. Basics of programming: variables, memory, control structures, code design
2. Overview and comparison of languages: Visual Basic, MATLAB, Mathematica, C/C++/C#, Java. Creating Excel add-ins using XLL+.
3. Principles of software design: performance and reliability, testing and debugging, code profiling
4. Basic numerical analysis: roundoff and truncation error, statistical error, stability of algorithms
5. Use of software libraries including Numerical Recipes in C++, Gnu Scientific Library, CPLEX and CFSQP. The course focuses on the use of existing software tools to accomplish a task, not on the writing of original code for numerical methods.
6. Introduction to databases and grid computing
7. Graphics and presentation of results using LaTeX
The majority of the course will focus on MATLAB, Visual Basic and advanced Excel, C (and C++), and interfacing C/C++ and Excel. A smaller amount of time will be spent on Mathematica, LaTeX and SQL databases. Examples will be taken from finance, economics, operations research and other disciplines. There will be a midterm and a final project in the course (but no final exam).
Course work: The work for the course will involve weekly assignments and a final project. For the final project, students are encouraged to choose a project that will be related to their area of research.