Download Intro and beginning Python - Villanova Department of Computing

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
CSC 8000 in Python
Lillian N Cassel
Department of Computing Sciences
Villanova University
Course purpose
• This course is intended to prepare incoming
graduate students for the programming
expectations of masters level courses in
computer science and software engineering.
• Official Description:
– Programming in Java or another object-oriented language.
Program design with an emphasis on the object paradigm.
Classic algorithms and data structures. Significant
programming assignments are required.
• This semester: Programming in Python
Why Python?
• Python is an object-oriented language, so
satisfies the basic requirements of the course.
• Python is a very powerful language with much
less overhead than Java. It is easier to get to
writing significant programs in Python than it is in
Java.
• Learning more than one language is very
important for computing professionals. We don’t
teach Python in any other class, so we will learn it
in this one.
Resources and Expectations
• Textbook:
– Object-oriented programming in Python. Goldwasser and
Letscher. Pearson/Prentice Hall publisher. 2008
– Note that it is about both Python and the object paradigm.
We will study both in depth.
• Computers:
– Does everyone have a laptop?
• Expectations:
– We will write and demonstrate programs of increasing
significance during the semester. Each program will be
demonstrated and described. A small class gives us the
luxury of doing this regularly.
Schedule notes
• Class meets on Wednesday evenings.
Attendance is required except for
extraordinary reasons.
• I have some travel that will take me away
some weeks during the semester. On each
occasion, there will be a class, generally in
distance learning mode. There will be no
missed classes due to my travel.
Grading
• Most weeks will include a brief quiz on the previous
material. This should take about 10 – 15 minutes. Quiz
grades will count for 25% of the course grade. I hope to
have no other exams.
• Most of the grade (65%) will come from programming
projects. Early in the semester, there will be a small
program due each week. Later, the programs will be a bit
larger and the time allowed a bit longer.
– Submitted programs must run, and must produce correct
results, must use meaningful variable names and include
appropriate comments.
– Programs with errors will be returned. There will be one
opportunity to correct and resubmit with a penalty. The penalty
will depend on the severity of the error.
• 10% of the grade will come from active participation in
class.
Slides -- sources
• The textbook comes with a set of slides. I will
use some of them, make some others, modify
some of the ones from the book, adapt others
that I find elsewhere. The slides that come
with the book were developed by
– Terry Scott
– University of Northern Colorado
– 2007 Prentice Hall
• Slides from other sources will always be
acknowledged with a suitable reference.
Finding a starting point
• To make the best use of our time, I would like to
know something about you and your
programming experience. The purpose of the
questions is to establish where we are starting so
that I can tell what we need to cover in the class.
Please answer fully and honestly:
– Have you done any programming, in any language? If
so, what language(s)? About how long was your
longest program? (10, 100, 300, 500, 1000, >1000
lines?) Are you familiar with/ comfortable with the
object paradigm?
– If no, what is your computer use experience?
Basics (continued)
A very simplified block diagram of a computer
(numbers vary, but these are available now)
External storage
(CDs, DVDs, USB
drives)
2–8
full
CPUs
Inside the box
8 - 12 MB
3 – 64 GB
Central
Processing
Unit
Memory
Cache
Battery, fan,
various
connections
Keyboard, mouse,
touchpad, printer,
scanner …
Internal Hard
Drive
Some now have
flash drives
GB to TB sizes
Starting, or reviewing
• The CPU contains all the processing components
of the computer, as well as some very special,
very accessible memory for temporary storage
• The internal memory of the computer contains all
instructions to be executed and all data to be
used during program execution.
• Other links and connectors allow communication
with external storage, and I/O devices.
Example
specification – the
July 2011 version
of the Apple
MacBook Pro
Note references to
dual core and
quad core
processors. This
has important
implications for
application
development.
Program development
• The processor in a computer is hard wired to
execute a small set of basic commands
– Add, multiply, change sign, logical operations
(and, or, not). Not much more than that.
• Any problem that a computer can solve can be
solved using these simple commands, but the
process is very tedious and subject to human
error.
Programming languages
• Machine code is too difficult for most purposes
• Assembly language provides human friendly
representations of the machine code, but still
closely related to the machine code
• Higher level languages are
– Oriented toward problem domains or solution
approaches
– Transferrable among different types of computers
with different underlying architectures and codes
Language examples
• Fortran (Formula Translator), designed for ease in representing
mathematical computations
• COBOL (COmmon Business Oriented Language) – good for simple
manipulation of data fields and production of reports
• C – invented for use in systems programming, providing the control of
the computer that comes from assembly code, but more human
readable.
• Pascal – developed specifically for teaching programming
• APL – very concise, special characters, designed for manipulating
matrices
• Algol, PL/1, Ada – many more
• Java – Object oriented, virtual machine concept
• Python – also object oriented, different characteristics, less overhead
than Java
Compilers and Interpreters
• All code from high level languages must be
translated to machine code for execution on a
specific type of processor.
• Two basic approaches
– Interpreter
• Read an instruction, interpret it, convert it, execute it
• Next run of the program must do all the interpreting again.
– Compiler
• Read the entire program, convert it to machine code, usually
doing some optimization. Prepare a file of executable code.
• The executable code can be rerun without re-compiling
Data and Types
• All data is stored as zeros and ones.
– So are all instructions!
• A collection of bits can represent anything
–
–
–
–
An integer
A picture
A sound
An instruction
• To be meaningful, a collection of bits must be interpreted
correctly and used as intended.
– If data that represents an integer is interpreted as an alphabetic
character, the result may be nonsense.
– Some operations only make sense when a particular type of
data is used. We multiply numbers, not names, for example.
Data and Types
• Some types of data are common and
programming languages are designed to work
with them naturally
– Integers, real numbers, alphanumeric characters,
etc.
• Other types of data are specific to a particular
context or problem domain and are created
when needed.
– Account number, shopping cart, blog post, etc.
Operations, Control, Functions
• Programming languages allow the programmer to
specify the operations to be carried out.
• Control structures allow specification of
repetition, ordering of operations, etc.
– Conditionals: do this only under these conditions
– Looping: repeat this sequence of instructions while
this condition holds
– Sub code: execute this other set of instructions, then
return here for the next instruction.
Libraries
• Some operations are so common that there
are libraries of code to call on when they are
needed, so that they do not have to be
reinvented by each programmer.
• These libraries have operations around a
common theme or type of environment or
problem. For example: system calls, or text
processing, or graphics
Abstraction
An abstraction
Modeling and Planning
• Programming begins with a problem to solve,
and a plan for solving it.
• Starting with code usually means missing
something.
• Various tools for planning a problem solution
– Flow charts show the steps in the code. Much like
programming, but language independent
– UML (Unified Modeling Language)
• Higher level planning tool
The Object Paradigm
• Think of a problem in terms of objects,
properties of those objects, actions carried
out by or on those objects.
• A problem solution becomes a collection of
objects and interactions among the objects.
• Objects are further characterized by type
– Objects of the same type form a class
• For example, we could have a class car and a particular
car would be an object of that class.
UML Class Diagrams
• Define the classes – types of objects – in a
system, and the relationships among them.
Class name
Attributes
Operations
Class diagram example
generalization
Many orders for 1
customer (many to
1 relationship)
Corporate customer and
personal customer inherit
characteristics from customer
http://atlas.kennesaw.edu/~dbraun/csis4650/A%26D/UML_tutorial/class.htm
Algorithms
• An algorithm is a step by step process for
solving a class of problems.
• A useful algorithm must be correct, but also
efficient.
• The book example of finding the greatest
common divisor illustrates that the obvious
solution is not always the right approach to
take.
GCD: Algorithm
Book slide
27
GCD Algorithm (Euclid)
Book slide
28
Euclid's GCD
Values for u, v, and r starting with u = 54 and v = 42. Answer is ?
u
v
54
42
12
6
0
42
12
6
Book slide, modified
r
12
6
0
29
Try another
u
v
85
15
10
5
0
15
10
5
r
10
5
0
Why does Euclid’s GCD algorithm
work?
• Let r = remainder of u/v
• Then u = k*v + r for some k (all values integer)
• r = u – k*v
– Anything that divides evenly into both u and v must
also divide evenly into r
– Similarly, any divisor of v and r must also divide into u
– Therefore, the gcd of v and r is the gcd of u and v
• Algorithm terminates: r<v. Each successive value
of v is smaller, but not negative and so must
reach 0.
Algorithm to program
• An algorithm is encoded as a program in a specific
programming language.
• Languages have syntax
– The requirements of form – punctuation, spacing, spelling,
etc.
• Languages have semantics
– What happens as a result of an instruction – values
replaced, computations done, comparisons made, etc.
• Programs encode logic
– If the language is used perfectly, but the logic is faulty, the
results will be wrong.
– Computers do exactly what you tell them to do, not
necessarily what you intended for them to do!
Again, The Object Paradigm
• In some programming models, there is an
emphasis on what is done
– Procedural languages, functional languages
• In the Object Paradigm, there is an emphasis on
the objects that are defined and manipulated in a
program.
– An object is an entity that has properties and for
which certain operations or actions are relevant
– A class is a category of objects, of which a specific
object is an instance.
Classes
• Data and operations on that data are
encapsulated to form a class.
• The data within a class are called attributes
• All the values of the attributes (data) for an
instance (object) comprise the state of the
object.
• The operations within a class are called
methods.
Examples
• There are some examples in the chapter.
• Let’s do something different, to provide
another example.
• Imagine a class of objects that are DVDs
– What are the attributes?
– What methods (operations) would be relevant?
Work with one or two others and devise a set of
DVD objects. Show sample attributes and methods.
Beginning with Python
• Python interpreter
– If installed, just type python at the prompt
• Enter python instruction and get results
– Also, create a file of type .py with python code
• Type python <filename.py>
• Whole program run
• The advantage of a file of python code is that you do not have to
keep entering the same instructions over and over again.
However, the code is still interpreted – reconverted to machine
language each time it is run.
• Python compiler available, but we will not bother now.
Hello world!
• Traditional first program in a new language prints
the message “Hello, world!”
• This establishes that you can invoke the
interpreter and get a program to run.
• It is also a measure of the complexity of the
language at some level. How hard can it be to
make a program print “Hello, world!”?
– You might be surprised!
• Python program:
– print “Hello, world!”
– That’s it! Now, on to bigger and better things.
Class: list
•
•
•
•
We will have many occasions to use a list.
list() creates an empty list
movies = list() makes an empty list with the name (identifier) movies
What can we do to a list?
–
–
–
–
–
–
–
–
–
append(x) – add an item, x, to the end of the list
extend(L) – Extend the list by appending all the items of list L
Insert(i,x) – insert item x at position i of the list
remove(x) – remove the first item in the list with value = x (error if none
exist)
pop(i) – return item at location i (and remove it from the list) If no index (i)
is provided, remove and return the last item of the list.
index(x) – return the index value for the first occurrence of x
count(x) – return the number of occurrences of x in the list
sort() – sort the list, in place
reverse() – reverse the order of the elements in the list
List behaviors
• See Figure 2.2 page 42 for further list
behaviors
– Mutators change an existing list
– Accessors return information about a list
– Generators create a new list
Special list from range
• We use a lot of lists.
• The instruction range creates a list of numbers
with specified attributes
• range(start,stop,inc)
– Creates a lists of numbers starting with start, up to the
last value less than stop (not including stop),
incrementing by inc
– range(3,20,2) = [3, 5, 7, 9, 11, 13, 15, 17, 19]
– If only one number given, the list will go from 0 to one
less than the number, incrementing by one
– If two numbers are given, they are assumed to be
start and stop, and the increment is 1.
Getting Documentation
• Note that you can get documentation about
python from several places
– Within the python interpreter: help(<topic>)
• Ex. help(list.sort)
– From the Python main website
• www.python.org
– Many online tutorials and reference sites
List attributes
• What attributes does a list have?
– len – length of the list; number of entries
– sizeof – size of the list in bytes
– count – number of occurrences of a particular
value in the list
• A list item has
– index value (position in the list)
• The position counting starts with 0
– value
Basic I/O
• Programs are really limited if you cannot get
information into and out of them.
– Basic input:
• raw_input(<text string to display>)
• Ex: raw_input(“Enter your name: “)
• Real use:
– name=raw_input(“Enter your name: “)
– Basic output:
• print <list of items to print>
• Ex: print “The name you entered is “, name
Practice problems
• Work on Practice problems 2.1, 2.3, 2.4 from
the text page 82