Computers
and Algorithms
 Announcements:
 This week only, discussion sections will all meet in
PAI 5.38 on Friday.
Today's
Topics:
 hardware and software
 writing algorithms  a plan for how to solve a
particular problem with the computer
 a simple example program
What is a
computer?
 A machine that processes information
and performs
calculations
 A computer executes a program, a detailed set of
instructions that tell the computer what to do to solve a particular
problem
 Hardware
 the mechanical and electronic parts of
the computer
 Software
 the programs that tell the hardware
what to do
 Components:
 Central Processing
Unit (CPU)  brain of the
computer. The CPU repeatedly fetches the next instruction from the
computer's memory and executes it. The CPU controls the other
components, and performs all calculations, such as addition and
subtraction and logical comparisons.
 Primary or Main Memory
 storage used to store
data and programs. Main memory consists of electronic components called
integrated circuit chips, and it is very fast. Information stored in
main memory is lost when the computer's power is turned off.
 Secondary Storage
 devices used for longterm,
permanent storage. E.g. magnetic disks, hard disks, magnetic tapes,
CDs. Relatively
slow, but data is not lost when computer is turned off and large
amounts of data can be stored.
 Input Devices
 devices that bring data into
the computer. E.g. keyboard, mouse, scanner.
 Output Devices
 devices that display the
information stored in the computer. E.g. Speakers, printer, monitor.
Storage
 All data stored in binary
 Either 0 or 1
 Numbers: 1001 = 9
 Characters: 0100 0001 = 'A'
 bit: a unit of information on a computer (0 or 1)
 byte: 8 bits
 A character requires a byte of storage
Question: Which part
of a computer executes a program?
A. main memory
B. CPU
C. keyboard
What is
programming?
 program:

set of detailed instructions which
a computer carries out to solve some particular problem.
 Programs are written in a specific
programming
language, like Python, Java, C++, Haskell, C#, Lisp, ML.
 algorithm:
 a step by step description of a
problem's solution
 often written in psuedocode
 a program converts an algorithm into
a particular
programming language
 An algorithm must have the following
properties:
 finiteness  the process
terminates; the number of steps in the algorithm is finite
 definiteness  each step is
precisely stated
Algorithm Example
Write an algorithm to
compute the sum of the first 100 positive integers.
1. Set sum to 0.
2. Set n to 1.
3. Repeat while n <= 100:
3a. Set sum to sum + n.
3b. Set n to n+1.
4. Print sum.
Convert this algorithm into
Python:
sum = 0
n = 1
#
Add all integers from 1 to 100 to sum
while n <= 100: # do this as long as n is at most 100
sum = sum + n
n = n+1
print sum
Programming Languages
 Highlevel Languages
 statements look a lot like English
 easily read and understood by humans
 computers do NOT understand highlevel languages
 Machine Language
 instructions now in form of sequences of 0s and 1s
 0s and 1s correspond to off and on in electronic
devices
 Each chip (PowerPC, etc) has its own machine language
that it understands
 Programs called translators
convert highlevel languages to machine/object code
 A compiler translates an entire highlevel program
into machine language
 Python
is Different
 The Python interpreter
is a program which converts each command in your Python program to
machine language and executes it immediately.
Algorithms:
More Examples
 A step by step description
of the solution to a
specified problem.
 Algorithm to calculate the
area of a rectangle:
 1. Multiply length and width.
 Algorithm to compute the sum of a list
of numbers:
1. Initialize the sum to 0.
2.
If there are no numbers remaining, go to step 5.
3.
Add the next number to the sum.
4.
Go to step 2.
5.
Output the sum.
Psuedocode
for this algorithm:
 pseudocode is a mix of
programming
language structures and the English algorithm.
 Looping structures like the while
statement are found in most
programming languages.
Set sum to 0
while
(more numbers remain) add next number to sum
print
the sum
Exercise: Write an algorithm
that prints the numbers from 1 to 100. (You can use psuedocode).
Exercise: Write an algorithm
that prints the sum of all the even
numbers from 1 to 100.