Intended for Computer Science majors and others who need this specific course to meet requirements in other departments. The course is a concept--oriented introduction to programming and algorithmic problem solving principles. Topics include top--down design; searching and sorting strategies; recursion; computational complexity and analysis of algorithms; and the limits of computation. Aspects of computer organization; computer solutions to problems in graphics, user interfaces, and file manipulation. Computer programming solutions to several laboratory exercises. Prerequisites: First--Year or Sophomore standing; or consent of instructor.