An introduction to problem-solving concepts and program design. Topics covered include top-down design with a structured programming language, bottom-up testing, control statements and structured data types. No prior knowledge of programming is required. The language for the course is Python; students with knowledge of another programming language will find the course valuable.