..  Copyright (C)  Brad Miller, David Ranum, Jeffrey Elkner, Peter Wentworth, Allen B. Downey, Chris
    Meyers, and Dario Mitchell.  Permission is granted to copy, distribute
    and/or modify this document under the terms of the GNU Free Documentation
    License, Version 1.3 or any later version published by the Free Software
    Foundation; with Invariant Sections being Forward, Prefaces, and
    Contributor List, no Front-Cover Texts, and no Back-Cover Texts.  A copy of
    the license is included in the section entitled "GNU Free Documentation
    License".

.. index:: programming language, portable, high-level language,
           low-level language, compile, interpret

Introduction: The Way of the Program
====================================

.. youtube:: xuEtNpVzFYA
    :divid: goog_course_intro

The goal of this book is to teach you to understand and create computer programs in Python.
At the beginning of each chapter, we will outline for you the learning goals and objectives
that should be accomplished once you have gone through the chapter.

Understanding computer programs requires algorithmic, mechanistic thinking.
Programs specify mechanistic sequences of actions to perform; when executed,
they transform input data into output data. They execute very reliably, and
very fast, but not creatively. Computers do what you tell them to do, not what you
mean for them to do. Thus, understanding computer code
involves a lot of mental simulation of what will actually happen, not what you
wish would happen.

Writing computer programs requires not only mechanistic thinking but creative
problem solving. Problem solving means the ability to formulate problems, think
creatively about solutions, and express a solution clearly and accurately. As
it turns out, the process of learning to program is an excellent opportunity to
practice problem solving skills.

Learning Goals
~~~~~~~~~~~~~~

* Introduce terminology used in computer science
* Introduce the features of this book
* Describe the purpose of programming languages
* Distinguish between formal & natural languages

Objectives
~~~~~~~~~~

* To be able to use the activecode component and multiple choice questions in textbook
* To be able to use and interpret the Codelens component
* To be able to describe what a comment is
