CCE20003 HGU
CCE20003 PROGRAMMING I
Lecture 1
Spring 2015
ICT Convergence Division
Handong Global University
OUTLINE CCE20003 HGU
Goals of the course
What is computation ?
Computational thinking
About Python
2D robot control
Reading assignment:
Chapter 1 of the textbook
Learning programming with robots
(You may download the PDF file on Hisnet site)
GOALS OF THE COURSE CCE20003 HGU
Two-level goals
- Building up a basis on ICT (Information and
Communications Technology)
- Computational thinking and programming
(but not learning a programming language Python)
Think like a computer scientist for problem solving !
WHAT IS COMPUTATION ? CCE20003 HGU
Problem solving with computer
Finding the facts that a solution satisfies
Designing an algorithm(recipe) to find
the solution
Mapping the algorithm to a program
Understanding abilities and limitations
“Algorithm” is at the heart!
CCE20003 HGU
Knowledge
Declarative Imperative
Statement of facts Recipes for deducing information
“How to” knowledge
is y such that Start with guess G.
is x. Ifx, stop and return G.
Otherwise, G (G + x/G )/2.
Repeat.
Heron of Alexandria(10-70 AD)
Ancient Babylonians
CCE20003 HGU
Fixed program computers
Atanasoff and Berry(1941): a linear equation solver
Alan Turing: bombe machine
Calculators
CCE20003 HGU
Stored program computers
Memory
Data Program
Instruction 1
Instruction 2
………………
Instruction k
………………
Instruction N
Processor
Input Control unit ALU
Output
PC k
CCE20003 HGU
Computation
Computation is solving a problem with a program.
A program is a realization of an algorithm(recipe)
on a computer.
An algorithm is a sequence of instructions to do a task.
imperative knowledge
(for humans)
An algorithm should be refined enough to be easily
translated into a programming language.
(for computers)
COMPUTATIONAL THINKING CCE20003 HGU
How to design an algorithm : top-down design
How to convert it to a program: coding and debugging
What to do with computers ?
CCE20003 HGU
Top-down design
Decomposing a problem into smaller sub-problems
Decompose each of the smaller sub-problems
recursively until every sub-problem is simple enough
to map to a few instructions in a program language
Multi-level abstraction
Divide and conquer
CCE20003 HGU
Coding and debugging
Coding is “a process of fighting with bugs (errors).”
Syntax error: Python cannot understand your program, and
refuses to execute it.
Runtime error: At runtime, your program suddenly
terminates with an error message.
Semantic error: Your program runs without error messages,
but does not do what it is supposed to do.
Why making such bugs (errors) ?
Well, … , that is the difference between humans and com-
puters.
CCE20003 HGU
What to do with computers?
According to Turing-Church Thesis, modern computers are essen-
tially equivalent to a stored program computer.
What kind of problems can we solve with a stored program machine
?
Decidable problems
Tractable problems : good algorithms
Intractable problems: no good algorithms
e.g., travelling salesman’s problem
approximate algorithms
Undecidable problems: no algorithms ever found
e.g. halting problem
ABOUT PYTHON CCE20003 HGU
Low vs High
General vs Targeted
Compiled vs Interpreted
Python is relative young but one of the most popular
programming languages
Open software
CCE20003 HGU
Why Python ?
A programming language easy to learn and very powerful
- Used in many universities for introductory courses
- Main language used for web programming at Google
- Widely used in scientific computation, e.g., at NASA
- Large portions of games written in Python (Civilization IV)
Once you learnt programming in one language, it is relatively
easy to learn another language, such as C++ or Java.
CCE20003 HGU
Characteristics of Python
Instruction set
Arithmetic and logical operations for defining
+, -, *, /, and ** expressions
and, or, not
Assignment
Conditionals
Iterations
Input/output
No pointers
No declarations
CCE20003 HGU
Why programming ?
Every scientist and engineer must know some programming.
It is part of basic education, like calculus, linear algebra, in-
troductory physics and chemistry, or English.
Alan Perlis 1961
After half a century later, we should change it as follows:
Every student in a university should learn some pro-
gramming. It is part of basic education, like calculus, linear
algebra, introductory physics and chemistry, or English.
2D ROBOT CONTROL CCE20003 HGU
A small grid-like 2D world
Basic actions
move (): moving one grid forward
turn_left (): turning left by 90
pick_beeper(): pick ing up beepers
drop_beeper(): putting down beepers
Our own instructions: functions
Comments
Interactive mode
Python programs (scripts)
14
CCE20003 HGU
Interative mode
>>>from cs1robots import *
>>>create_world()
>>>hubo = Robot()
>>>hubo.move()
>>>hubo.left_turn()
CCE20003 HGU
Script mode
from cs1robots import *
create_world()
hubo = Robot()
hubo.move()
hubo.turn_left()
CCE20003 HGU
Functions
A function definition specifies the name of a function
and the sequence of statements that are executed when
the function is called.
def print_message():
print "CCE20003 is fantastic!"
print "Programming is fun!"
You can call a function inside another function:
def repeat_message():
print_message()
print_message()
CCE20003 HGU
Flow of execution
def print_message():
print "CCE20003 is fantastic!"
print "Programming is so much fun"
function definitions
def repeat_message():
print_message()
print message ()
repeat_message() function
print ‘Done’
calls
Execution begins at the first statement. Statements are executed
one by one, top to bottom.
Function definitions do not change the flow of execution
but only define a function.
Function calls are like detours in the flow of execution.
CCE20003 HGU
Comments
# create a robot with one beeper
hubo = Robot(beepers = 1)
# move one step forward
hubo.move()
dot notation
# turn left 90 degrees
hubo.turn_left()
CCE20003 HGU
Turning right
Define a func-
tion!
def turn_right():
hubo.turn_left()
hubo.turn_left()
hubo.turn_left()
CCE20003 HGU
Newspaper delivery
Hubo should climb the stairs to the front door, drop
a newspaper there, and return to his starting point.
Algorithm(pseudo code): Python version:
Climb up four stairs climb_up_four_stairs()
Drop the newspaper hubo.drop_beeper()
Turn around turn_around()
Climb down four stairs climb_down_four_stairs() 24
CCE20003 HGU
Climbing up stairs
def climb_up_four_stairs():
climb_up_one_stair()
climb_up_one_stair()
climb_up_one_stair()
climb_up_one_stair()
def climb_up_one_stair():
hubo.turn_left()
hubo.move()
turn_right()
hubo.move()
hubo.move()
def turn_around():
hubo.turn_left()
hubo.turn_left()
CCE20003 HGU
Iteration: for-loops
We should avoid writing the same code repeatedly. A for-
loop allows us to write it more elegantly:
def climb_up_four_stairs():
climb_up_one_stair()
climb_up_one_stair()
climb_up_one_stair()
climb_up_one_stair()
def climb_up_four_stairs():
for i in range(4):
climb_up_one_stair()
CCE20003 HGU
To repeat the same instruction 4
times:
for i in range(4): for-
loop
print "CCE20003 is fantastic!"
Don’t forget the indentation!
What is the difference between the following
two programs?
for i in range(4):
print "CCE20003 is great!"
print "I love programming!"
for i in range(4):
print "CCE20003 is great!"
print "I love programming!"