1 / 44

CSC 8000 in Python

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.

jenski
Download Presentation

CSC 8000 in Python

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSC 8000 in Python Lillian N Cassel Department of Computing Sciences Villanova University

  2. 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

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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?

  9. 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 Keyboard, mouse, touchpad, printer, scanner … Battery, fan, various connections Central Processing Unit 8 - 12 MB Cache Internal Hard Drive Memory 3 – 64 GB Some now have flash drives GB to TB sizes

  10. 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.

  11. 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.

  12. 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.

  13. 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

  14. 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

  15. 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

  16. 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.

  17. 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.

  18. 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.

  19. 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

  20. Abstraction

  21. An abstraction

  22. 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

  23. 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.

  24. UML Class Diagrams • Define the classes – types of objects – in a system, and the relationships among them. Class name Attributes Operations

  25. 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

  26. 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.

  27. GCD: Algorithm Book slide

  28. GCD Algorithm (Euclid) Book slide

  29. Euclid's GCDValues for u, v, and r starting with u = 54 and v = 42. Answer is ? u v r 54 42 12 12 6 42 12 6 0 6 0 Book slide, modified

  30. Try another u v r 85 15 10 10 5 15 10 5 0 5 0

  31. 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.

  32. 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. • Languageshavesemantics • 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!

  33. 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.

  34. 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.

  35. 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.

  36. 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.

  37. 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.

  38. 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

  39. 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

  40. 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.

  41. 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

  42. 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

  43. 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

  44. Practice problems • Work on Practice problems 2.1, 2.3, 2.4 from the text page 82

More Related