The first course in a two-semester sequence in algorithmic problem solving. Basic data structures, data and procedural abstraction, and problem-solving strategies are discussed and exemplified using modern programming technology. Programming laboratory experiences to build problem-solving skills accompany this course.