Title: Algorithms and Programming
1Introduction
- Algorithms and Programming
2Computer Programming
- A form of problem solving
- Or, more accurately, a way to solve problems
- What we will be studying is How to solve
problems using computers
3Whats a Problem?
- A question that someone wants an answer to
- A problem usually has information that represents
a starting point, initial assumptions, facts, or
data that will be needed in answering the
question - For example, What is my grade point average?
4How Do We Solve the Problem?
- With pencil and paper we can compute our grade
point average if we know all of our grades and
the units for each of the courses taken - What are the advantages of writing a computer
program to compute our grade point average?
5How Do We Solve Problems?
- Four Steps
- Understand the problem
- Devise a plan to solve the problem
- Implement the plan
- Evaluate the solution
- From George Polyas book, How to Solve It
written in 1945.
6What is an Algorithm?
- A plan for solving a problem
- A series of steps to follow to arrive at a
solution - A highly technical and precise recipe for
solving a problem - A good algorithm is correct, complete, and
unambiguous - Good algorithms are also general rather than
specific
7Algorithm Definition
- From mathworld.wolfram.com/Algorithm.html
- A specific set of instructions for carrying out a
procedure or solving a problem, usually with the
requirement that the procedure terminate at some
point - Specific algorithms sometimes also go by the name
method, procedure, or technique - The word algorithm is a distortion of
- al-Khwarizmi, a Persian Mathematician who wrote
an influential treatise about algebraic methods
8What Does an Algorithm Look Like?
- It can be written in (precise) English
- It can be drawn as a diagram (e.g., a flowchart)
with steps and a path to follow from one step to
the next - To make it precise (and computer executable)
algorithms are translated into a computer
understandable form (e.g., machine language)
9A Simple Example
- Problem Calculate the average of a list of
numbers. - Let the number of numbers in the list be n
- Assume n is greater than or equal to 1
- Calculate the sum of the n numbers
- Call this sum s
- Then the average is given by s/n
10Example Expanded
- Problem Calculate the average of a list of
numbers. - Let the number of numbers in the list be n.
- Assume n is greater than or equal to 1.
- Pick off the first number on the list and place
it on the blackboard. - As long as there are more numbers on the list,
pick the next number off the list and add it to
the number on the blackboard and replace the
number on the blackboard with this sum. (Repeat
this step until the list is empty.) - Call the number on the blackboard s.
- Then the average is given by s/n.
11Final Note about Algorithms
- To qualify as an algorithm, the instructions must
be expressed so completely and precisely that
somebody could follow the instructions without
having to make any assumptions or ask for more
information or help of any kind.
12Computer Basics
- Hardware and Memory
- Programs
- Programming Languages
- Compilers
13Hardware and Memory
- The processor or CPU (Central Processing Unit)
- Executes instructions
- Memory
- Main memory (RAM)
- Secondary (auxiliary) memory
- Disk drives (hard drives)
- Diskettes (floppies)
- Compact disks (and DVDs)
- USB Flash Drives
14Bits, Bytes, and Memory Organization
- A bit is a single binary digit (i.e., it can
assume the value 0 or 1) - A byte is a string of 8 bits (enough to hold the
representation of a character) - The number of a byte is called its address or
memory location - When more than one byte is needed to store
information the computer uses a string of
adjacent bytes
15Why Do Computers Use Just Zeros and Ones?
- Its easier to make a physical device that has
only two physical states (e.g., on and off). - There is nothing special about zero and one. The
only important thing is that the physical device
have two stable states.
16Programs
- A program is simply a set of instructions for a
computer to follow. - A computer executes the instructions in the
program to process the data or information
provided as input in order to produce the results
or output desired. - It is actually the operating system (just
another program) running on the computer that
executes your program.
17Programming Languages
- High level languages (languages designed for
people to use) - Pascal, FORTRAN, C, C, Visual Basic, Lisp, Java
- Low level languages (languages that computers can
understand) - Machine languages, assembly languages
18Compilers
- Compilers are programs that translate high level
languages into low level languages - Compilers are generally machine dependent because
different machines have different machine
languages - The input to the compiler is called the source
code and the output is called the object code
19Designing Programs An Object-Oriented Approach
- An Object is a software package that contains a
collection of related procedures and data. - The procedures in an object-oriented approach are
called methods. - One object interacts with another by sending it a
message asking it to carry out one of its
methods.
20Designing Programs An OO Approach Contd
- A class is a template that defines the methods
and variables to be included in a particular type
of object. - The objects that belong to a class, called
instances of the class, contain only their
particular values for the variables. - Inheritance is a mechanism whereby one class of
objects can be defined as a special case of a
more general class, automatically including the
method and variable definitions of the general
class.
21Designing Programs An OO Approach Contd
- A special case of a class is known as subclass of
that class. - Encapsulation is a technique in which data is
packaged together with its corresponding
procedures in a way that the details of
implementation are hidden. - Polymorphism is the ability to use one name for
several different implementations of a method.
22Testing and Debugging
- A mistake in a program is called a bug.
- The process of removing bugs from a program is
called debugging. - There are three main classes of bugs or errors in
programs - Syntax errors
- Runtime errors
- Logic errors
23Syntax Errors
- A syntax error is a grammatical mistake in a
program. - There are strict grammatical rules for writing
programs including required punctuation marks. - The compiler will catch syntax errors and give
its best guess as to the problem, but is often
wrong regarding the actual mistake made.
24Run-Time Errors
- Errors caught when the program is run.
- The computer will give an error message, but such
messages are often hard to understand. - You can be sure that there is an error in your
program but it may take some time to find.
25Logic Errors
- If the program runs successfully to completion
but produces the wrong result, you have a logic
error. - What you have written is a valid program, but it
doesnt do what it is supposed to do. - These are the most difficult errors to find.
26The History of Java
- Java had its beginnings in an effort by James
Gosling in 1991 at Sun Microsystems to develop a
new language for programming home appliances. - Thats where the idea of translating programs
into an intermediate language that was the same
for all appliances (computers) came from (Java
byte-code).
27The History of Java Contd
- In 1994 Gosling realized that his language would
be ideal for developing a Web browser that could
run programs over the Internet. - The original name of the language was Oak but
they found that that name was already taken. - Rumor has it that the name resulted from a trip
for coffee after a fruitless meeting to come up
with a new name.
28Two Types of Java Programs
- Applications regular programs meant to be run
directly on peoples computers. - Applets little applications meant to be sent
to another location on the Internet and run
there.
29Sample Java Program
- public class Hello
- public static void main(String args)
- System.out.println("Hello, world!")
-
30Solution to the Eight Queens Problem (one of
twelve)