An introduction to problem-solving techniques, the fundamental concepts of programming, and the software design process. Topics will include data types, control structures, scope rules, functions, files, and the mechanics of running, testing and debugging. Problems will be drawn from various science disciplines.