..  Copyright (C)  Brad Miller, David Ranum
    This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/.


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 society, changes in computing technology provide
computer scientists with a growing number of tools and platforms on
which to practice their craft. Advances such as faster processors,
high-speed networks, and large memory capacities have created a spiral
of complexity through which computer scientists must navigate.
Throughout all of this rapid evolution, a basic principle of computer science 
has remained constant: it 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 a
problem statement and develop a 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 chapter emphasizes two important areas for the rest of the text.
First, we'll review the framework within which computer science and the
study of algorithms and data structures must fit. In particular, we'll look at the reasons
why we need to study these topics and how understanding these
topics helps us to become better problem solvers. Second, we'll review the
Python programming language. Although we cannot provide a detailed,
exhaustive reference, we will give examples and explanations for the
basic constructs and ideas that will occur throughout the remaining
chapters.

