Python Programming:
An Introduction to
Computer Science
Chapter 1
Computers and Programs
Python Programming, 2/e
1
Objectives



To understand the respective roles of
hardware and software in a computing
system.
To learn what computer scientists study
and the techniques that they use.
To understand the basic design of a
modern computer.
Python Programming, 2/e
2
Objectives (cont.)


To understand the form (syntax) and
function (semantics) of computer
programming languages.
To begin using the Python
programming language.
Python Programming, 2/e
3
The Universal Machine


A modern computer can be defined as
“a machine that stores and manipulates
information under the control of a
changeable program.”
Two key elements:


Computers are devices for manipulating
information.
Computers operate under the control of a
changeable program.
Python Programming, 2/e
4
The Universal Machine

What is a computer program?



A detailed, step-by-step set of instructions
telling a computer what to do.
If we change the program, the computer
performs a different set of actions or a
different task.
The machine stays the same, but the
program changes! (Von Neumann
model)
Python Programming, 2/e
5
The Universal Machine

Programs are executed, or carried out
by the CPU(s).
Python Programming, 2/e
6
Program Power



Software (programs) rule the hardware
(the physical machine).
The process of creating this software is
called programming.
Why learn to program?


Fundamental part of computer science
Having an understanding of programming
helps you have an understanding of the
strengths and limitations of computers.
Python Programming, 2/e
7
Program Power





Helps you become a more intelligent user
of computers
It can be fun!
Creative form of expression
Helps the development of problem solving
skills, especially in analyzing complex
systems by reducing them to interactions
between simpler systems.
Programmers are in great demand!
Python Programming, 2/e
8
What is Computer Science?



It is not the study of computers!
“Computers are to computer science
what telescopes are to astronomy.” –
E. Dijkstra
The question becomes, “What
processes can be described?”
This question is really, “What can be
computed?”
Python Programming, 2/e
9
What is Computer Science?

Design


One way to show a particular problem can
be solved is to actually design a solution.
This is done by developing an algorithm,
a step-by-step process for achieving the
desired result.
Python Programming, 2/e
10
Euclid’s Algorithm for GCD

1.
2.
Finding the greatest common divisor,
one of the 1st known algorithms
Get two numbers, call them num1 and
num2
While num2 is not zero
1.
2.
3.
If num1 > num2, num1 = num1 – num2
otherwise num2 = num2 - num1
Show num1 as the GCD
Python Programming, 2/e
11
What is Computer Science?

Analysis



Analysis is the process of examining
algorithms and problems mathematically.
Some seemingly simple problems are not
solvable by any algorithm. These problems
are said to be unsolvable (halting
problem)
Problems can be intractable if they would
take too long or take too much memory to
be of practical
value (traveling salesman)12.
Python Programming, 2/e
Alan Turing


First to formalize the concept of
“computation” using a hypothetical
device called the “Turing Machine”
In the 30s, he laid the foundations of
theoretical computer science
Python Programming, 2/e
13
Finite State Machine



Input
States
Transitions
Basically, a simple Turing Machine.
Python Programming, 2/e
14
Example FSM that recognizes the word “nice”
Python Programming, 2/e
15
Turing Machine


More complicated version of an FSM
using infinite amount of tape, actions
(move head left, right)
To this day, it is the model of
computation of choice for theoretical
computer scientists
Python Programming, 2/e
16
Graphic rendition of a Turing Machine
Python Programming, 2/e
17
Undecidability


In any axiomatic mathematical system,
there are statements that cannot be
proven true or false (Gödel’s Theorem)
E.g., proof by Turing: determine if a
program halts (ends) at some point or
continues to run forever
Python Programming, 2/e
18
On the other hand…

There exist problems that are
intractable


There are algorithms to solve them, but
they take prohibitive amount of time or
space to solve them
E.g.: traveling salesperson problem,
knapsack problem, many more

These problems become intractable as the
size of the input (e.g.: number of cities)
19
increases Python Programming, 2/e
Implementation


Computer scientists DO write code
See web page for Python
implementation of Euclid’s algorithm
Python Programming, 2/e
20
What is Computer Science?

Experimentation


Some problems are too complex for precise
mathematical analysis.
Instead, you can implement a system that
simulates the problem and then study its
behavior.
Python Programming, 2/e
21
Hardware Basics

The central processing unit (CPU) is the
“brain” of a computer.


The CPU carries out all the basic
operations on the data.
Examples: simple arithmetic operations,
testing to see if two numbers are equal,
I/O requests sent to peripherals.
Python Programming, 2/e
22
Hardware Basics

Memory and secondary storage hold
programs and data.



CPU can only directly access information
stored in main memory (RAM or Random
Access Memory).
Main memory is fast but volatile, i.e. when
the power is interrupted, the contents of
memory are lost.
Secondary storage provides more
permanent storage: magnetic (hard drive,
floppy), optical
(CD, DVD) but slower 23
Python Programming, 2/e
Memory (RAM)




A memory cell (also called a word)
has an address, has contents
Contents are expressed in bits / bytes binary code; a byte is made up of 8 bits
Holds a value which may be data, may
be an instruction
data retrieval = a "copy" not a "cut"
getting a value does not erase it
Memory Cells
Address Contents
0
1
2
3
-27.2
354
0.005
-26
4
5
6
H
RTV 001
...
...
999
X
75.62
Secondary Storage





Files - source files, data file, output file
Devices - hard disk, floppy, CD, SD
card, flash memory stick
Slower than RAM, and cheaper per byte
Usually much larger capacity than RAM
Permanent – does not change when
power is cut off
Computer Units


Units of capacity - Kilobyte (2^10),
Megabyte (2^20), Gigabyte (2^30),
Terabyte (2^40), Petabyte (2^50),
Exabyte (2^60)
Units of speed – MegaHertz, GigaHertz
speed of signals from system clock
Python Programming, 2/e
27
Hardware Basics

Input devices


Output devices


Information is passed to the computer
through keyboards, mice, etc.
Processed information is presented to the
user through the monitor, printer, etc.
Both are peripherals
Python Programming, 2/e
28
Programming Languages

Natural language has ambiguity and
precision problems when used to
describe complex algorithms.



Programs expressed in an unambiguous ,
precise way using programming languages.
Every structure in programming language
has a precise form, called its syntax
Every structure in programming language
has a precise meaning, called its
semantics. (What does the computer
do when that
structure
is executed?)
Python Programming,
2/e
29
Programming Languages

Programming language is a code for
writing the instructions the computer
will follow.


Programmers will often refer to their
program as source code.
Process of writing an algorithm in a
programming language often called coding.
Python Programming, 2/e
30
Programming Languages

High-level computer languages


Designed to be used and understood by
humans
Low-level language

Computer hardware can only understand a
very low level language known as machine
language (actually binary codes)
Python Programming, 2/e
31
Languages

Telling a robot to leave a room

In Machine languages


In Assembly languages


take a step, lift arm, grasp knob, turn knob...
LEAVE through DOOR
In High-level languages

"get outta here!"
Programming Languages



High-level language
c=a+b
High-level languages are portable - they
can be moved from one kind of CPU to
another without rewriting the code.
Examples -- FORTRAN, COBOL, Pascal,
Python, Ada, Modula-2, C++, Java
Python Programming, 2/e
33
Programming Languages


But high-level languages need to be
translated into machine language that
the computer can execute.
TWO ways of translation:
compilers and interpreters

Compilers convert an entire program
written in a high-level language into the
machine language of some computer. A
compiler does NOT run the code.
Python Programming, 2/e
34
Programming Languages



Interpreters simulate a computer that
understands a high-level language.
The source program is not translated
into machine language all at once.
An interpreter analyzes and executes
the source code instruction by
instruction, one at a time.
Python Programming, 2/e
35
Programming Languages

Compiling vs. Interpreting


Once program is compiled, it can be
executed over and over without the source
code or compiler. If it is interpreted, the
source code and interpreter are needed
each time the program runs
Compiled programs generally run faster
since the translation of the source code
happens only once.
Python Programming, 2/e
36
Programming Languages

Interpreted languages are part of a more
flexible programming environment since
they can be developed and run
interactively
Python Programming, 2/e
37
The Translation Process

Syntax - the rules governing the
formation of statements in the language




Spelling
Order of words, statements
Punctuation
Semantics – meaning of the statement

What does it DO? What action does the
computer do when the statement is
executed?
Tools for programming


Compilers and interpreters for highlevel languages
IDE (integrated development environment)




Translator (compiler or interpreter)
editor (creates text format files)
loader (get machine code into RAM so it
can be run)
debugger
The Magic of Python
When you start Python, you will see
something like:
Python 3.1.2 (r312:79149, Mar 21 2010, 00:41:52) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
Python Programming, 2/e
40
The Magic of Python


The “>>>” is a Python prompt indicating that
Python is ready for us to give it a command.
These commands are called statements.
>>> print("Hello, world“)
Hello, world
>>> print(2+3)
5
>>> print("2+3=", 2+3)
2+3= 5
>>>
Python Programming, 2/e
41
The Magic of Python




When we exit Python, the functions we’ve defined
cease to exist!
However, the source code is saved on secondary
storage and can be accessed and ran many times
Programs are usually composed of functions,
modules, or scripts that are saved on disk so that
they can be used again and again.
A module file is a file created in text editing software
(saved as “plain text”) that contains function
definitions.
Python Programming, 2/e
42
The Magic of Python
# File: stars.py
# this is a sample program
# it prints out a string of stars on the screen
def main ():
stars = "“
num = eval(input("How many stars do you want? "))
for i in range(num):
stars = stars + "*"
print (stars)
main()
When we run the program, here’s the output:
>>>
How many stars do you want? 25
*************************
Python Programming, 2/e
>>>
43
The Magic of Python



We’ll use filename.py when we save our
work to indicate it’s a Python program.
In this code we’re defining a new
function called main.
The main() at the end tells Python to
run the code.
Python Programming, 2/e
44
Inside a Python Program
# File: stars.py
# A simple program

Lines that start with # are called
comments


Intended for human readers and
ignored by Python
Python skips text from # to end of line
Python Programming, 2/e
45
Inside a Python Program
def main():



Beginning of the definition of a function
called main
Since our program has only this one
module, it could have been written
without the main function.
The use of main is customary, however.
Python Programming, 2/e
46
Inside a Python Program
print (stars)

This line causes Python to print the
value of a variable.
Python Programming, 2/e
47
Inside a Python Program
num = eval(input(“How many stars do you
want? "))



num is an example of a variable
A variable is used to assign a name to a
value so that we can refer to it later.
The quoted information is displayed,
and the number typed in response is
stored in num.
Python Programming, 2/e
48
Inside a Python Program
for i in range(num):



For is a loop control structure
A loop tells Python to repeat the same
thing over and over.
In this example, the following code will
be repeated num times.
Python Programming, 2/e
49
Inside a Python Program
stars = stars + “*”




This line is the body of the loop.
The body of the loop is what gets repeated
each time through the loop.
The body of the loop is identified through
indentation.
The effect of the loop is the same as
repeating this line num times!
Python Programming, 2/e
50
Inside a Python Program
stars = stars + “*”


This is called an assignment statement
The part on the right-hand side (RHS) of the
“=“ is a mathematical expression.

* is used to indicate multiplication

In this case, it is a character in a string

Once the value on the RHS is computed, it is
stored back into (assigned) into stars
Python Programming, 2/e
51
Inside a Python Program
main()

This last line tells Python to execute the
code in the function main
Python Programming, 2/e
52
Case Study: Converting Miles
to Kilometers

Problem Your summer surveying job
requires you to study some maps that give
distances in kilometers and some that use
miles. You and your coworkers prefer to
deal in metric measurements. Write a
program that performs the necessary
conversion.
Case Study

Analysis The first step in solving this
problem is to determine what you are
asked to do. You must convert from one
system of measurement to another, but
are you supposed to convert from
kilometers to miles, or vice versa? The
problem states that you prefer to deal in
metric measurements, so you must convert
distance measurements in miles to
kilometers.
Data Requirements



Problem Input
miles
distance in miles
Problem Output
kms
the distance in kilometers
Relevant Formula
1 mile = 1.609 kilometers
Design an Algorithm that solves the
problem

Algorithm (Pseudocode)
1. Get the distance in miles.
2. Convert the distance to kilometers.
3. Display the distance in kilometers.

Algorithm Refinement
2.1 The distance in kilometers is 1.609
times the distance in miles

Desk check!
Implementation in Python
# converter.py
# converts miles to kilometers
def main ():
miles = eval(input("distance in miles? "))
kilometers = miles * 1.609
print("The equivalent distance in kilometers is",
kilometers)
main()
Python Programming, 2/e
57
Testing


Test with input data for which you can
easily determine the expected results
E.g.
10 miles should convert to 16.09
kilometers
Ethics






Responsibility comes with knowledge
Don’t do hacking!
Don’t do piracy!
Don’t do data theft
Protect data privacy
You have a responsibility to develop
programs without errors or at least let
the users know there are flaws
Python keywords used in Ch.1








print
def
#
eval, input
for, while, range
if
assignment =
+, -, /, *, **
Python Programming, 2/e
60