=== Introduction to High-Level Programming for Students of C === The purpose of this 3-week course is to provide an efficient transition from C to high-level programming. The pace is faster than a typical introductory course. We assume you already understand the basics - data types, pointers, functions, and are comfortable writing a simple program in C. You now have an excellent foundation for work with high-level languages like C++, Java, or Python. We have chosen Python as the vehicle for this transition for these reasons: 1) Python is half the complexity of Java or C++, yet is especially clear on what we want students to learn (modular design, object-oriented programming, and good programming practices, including coding style, documentation, and unit testing). 2) Python is an ideal "personal productivity language" for any technical professional. It will serve students well in their careers, providing the functionality and convenience of MatLab, but in a general-purpose programming language. Even full-time Java programmers will find it useful as a prototyping language. 3) Python is a mature language, with well-developed libraries and a large, very active community of users, including a group [edu-sig] focused on using Python in education. 4) Python was built on top of C. There is no relearning the details of literals, identifiers, operators, and expressions. The few "diffs" from C have a simple rationale, and are easily remembered. 5) Python is very similar to Java, and for those students continuing to Java, the transition should be easy. Students are delighted with the simpler, more powerful Python language, and some want to forget about C. We end with an example program written in Python to display Mandelbrot images. By replacing a few lines of Python with inline C, we make the program run 100 times faster. Someday, there may be a language as easy as Python and as efficient as C. Until then, Python and C together make a winning combo. Contents 1) Annotated examples - translations to Python of already-familiar programs in C 2) Transition from C to Python - Twelve most important things a C programmer should know about Python - Table of diffs C to Python 3) Real-world programs - Scientific programming with SciPy, Python's alternative to MatLab - Mandelbrot images, adding inline C using scipy.weave