Syllabus

Course Meeting Times

Lectures: 2 sessions / week, 1.5 hours / session

Prerequisites

Calculus (18.01), Multivariable Calculus (18.02), Physics I - Classical Mechanics (8.01).

Course Description

This course introduces programming languages and techniques used by physical scientists: FORTRAN, C, C++, MATLAB®, and Mathematica. Emphasis is placed on program design, algorithm development and verification, and comparative advantages and disadvantages of different languages. Students first learn the basic usage of each language, common types of problems encountered, and techniques for solving a variety of problems encountered in contemporary research: examination of data with visualization techniques, numerical analysis, and methods of dissemination and verification. No prior programming experience is required.

Course Objectives

The aim of this course is to give students an introduction to the uses of computer languages in the analysis of contemporary scientific problems. The course covers both conceptual areas of converting a problem to be solved into a computer-based solution, and specific aspects of individual languages and the types of problems they are best suited to solve. Emphasis is placed on the importance of structure, documentation, and levels of “user-hostility” of program interface. For each language, the basic syntax and structure of the language is covered with examples drawn from real applications. The major toolboxes and libraries, interfacing techniques and platform specific issues are also addressed.

Assignments and Exams

Homework will be assigned for each of the languages and there will be a common project developed during the course that students will solve using the language of their choice. The final class will be used to compare the different solutions developed. Homework grading will be based not only on completing the assigned task but also on solution structure, robustness, human interface, documentation and transportability. This class has no final exam.

Grading

ACTIVITIES PERCENTAGES
Homework 80%
Final project 20%

Course Info

Learning Resource Types

assignment_turned_in Problem Sets with Solutions
notes Lecture Notes
group_work Projects
assignment_turned_in Programming Assignments with Examples