one introduction objectives to review the ideas of computer scienceprogrammingand problem-solving to understand abstraction and the role it plays in the problem-solving process to understand and implement the notion of an abstract data type to review the python programming language getting started the way we think about programming has undergone many changes in the years since the first electronic computers required patch cables and switches to convey instructions from human to machine as is the case with many aspects of societychanges in computing technology provide computer scientists with growing number of tools and platforms on which to practice their craft advances such as faster processorshigh-speed networksand large memory capacities have created spiral of complexity through which computer scientists must navigate throughout all of this rapid evolutiona number of basic principles have remained constant the science of computing is concerned with using computers to solve problems you have no doubt spent considerable time learning the basics of problem-solving and hopefully feel confident in your ability to take problem statement and develop solution you have also learned that writing computer programs is often hard the complexity of large problems and the corresponding complexity of the solutions can tend to overshadow the fundamental ideas related to the problem-solving process this emphasizes two important areas for the rest of the text firstit reviews the framework within which computer science and the study of algorithms and data structures must fitin particularthe reasons why we need to study these topics and how understanding these topics helps us to become better problem solvers secondwe review the python programming language although we cannot provide detailedexhaustive referencewe will give examples and explanations for the basic constructs and ideas that will occur throughout the remaining