This course provides an introduction to a disciplined approach to computer programming and problem solving, utilizing a block-structured high-level language, with an emphasis on procedural abstraction and good programming style.Students will apply programming skills in solving a variety of problems.Algorithmic concepts are also introduced.This course also provides a survey study of data structures and data abstraction, and an introduction to complexity considerations and program verification.