Compsci 101, APTs and Sequences and Selection Owen Astrachan Kristin Stephens-Martinez January 25, 2018 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Compsci 101, Spring 2018, Sequences+Selection D is for … Debugging A key skill in making your programs run Data (Science) Creating information from 0's and 1's Dictionary Ultimate Python Data Structure 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Compsci 101, Spring 2018, Sequences+Selection PFTD and toward PFTW On Tuesday we saw: Functions in Python Decomposition, parameters, calling Flow of Control How does a program execute, how do function calls work? Program Development and Execution How do you run a program, test a program, debug a program Remind students what we did last week, review functions, function calls. Differentiate. We’ll discuss more of that today 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Compsci 101, Spring 2018, Sequences+Selection Today we’ll see … Quick review of functions Foundation of writing complex programs in any language, grow a program, don't build it Understanding and using sequences Indexing and Slicing Selective execution Guarding statements depending on conditions Functions are great. We need more tools. We need sequences, strings and lists and we need selective execution 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Compsci 101, Spring 2018, Sequences+Selection Organization Matters https://www.youtube.com/watch?v=1ve57l3c19g This is an all time favorite of mine, may not be something you want to do? Apparently Susan still uses it too I think when Robert de Niro looks at Cybil Shepard in the clip it's clear that he's infatuated with her. It's a long time ago. We are still infatuated with teaching and coding and we hope they will be. We also want to be organizized with building programs. 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Compsci 101, Spring 2018, Sequences+Selection WOTO Redux http://bit.ly/101spring18-jan23-2 Sneak Preview: lists and tuples Last time, do it and review the concepts 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Compsci 101, Spring 2018, Sequences+Selection Functions Summarized Function call and Function definition related Call must provide correct arguments Names don’t matter, types are important: arguments match parameters Functions help design, implement, organize Without functions no APIs, no big programs Opening a file would be 100’s of lines, instead it’s f = open(“hello.txt”) Differentiate arguments and parameters 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Lynn Conway See Wikipedia and lynnconway.com Joined Xerox Parc in 1979 Revolutionized VLSI design with Carver Mead Joined U. Michigan 1985 Professor and Dean, retired '98 NAE '89, IEEE Pioneer '09 Helped invent dynamic scheduling early '60s IBM Transgender, fired in '68
Compsci 101, Spring 2018, Sequences+Selection Problem Interlude We’re going to solve an APT together. Help with APT-0 due today and APT-1 due a week from today 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
APT Pancake: http://bit.ly/pancakes101 How do you solve this (or any) problem? Run through examples, construct a method for solving – translate to algorithm for Python If you can’t do this with paper/pencil? Tough! Some APTs are hard problems to solve Translating to code easy, it’s the problem Some APTs have easy-to-see algorithms Translating to code is hard Read the problem. Look at an example and discuss why some are correct. 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Solving (APT) Problems Identify simple cases that are quickly solved What are these in Pancake problem? Don’t solve for N, solve for 5, then generalize When there are two parameters? Fix one, vary the other one Helps identify cases Basic problem solving ideas. 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Compsci 101, Spring 2018, Sequences+Selection WOTO: Pancakes http://bit.ly/101spring18-jan25-pancakes Correctness counts, score > 1/3 == 100% After discussion test student understanding 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Three pancakes in a two-cake pan Number of cakes in the system First 5 minutes Number of cakes in the system Second 5 minutes Walk through cases after going over examples. A' means A cooked on one side. A'' means cooked on both sides 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Three pancakes in a two-cake pan Number of cakes in the system Third 5 minutes How many minutes to cook all three pancakes? 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Methodically by hand, small values Pan has capacity 8, vary #pancakes Can you cook 11 in 15 minutes? Why? Can you cook 13 in 15 minutes? Why? cakes 5 6 7 8 9 10 11 12 13 14 15 16 17 18 time ? 1 2 3 4 5 6 7 8 10 11 9 12 For 12, shown, we can cook in 15 minutes. Take 5-8 out and cook 1-4 all the way. Then finish them up. Can't do 13 though. Explain 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Methodically by hand, small values Pan has capacity 8, vary #pancakes, cook 12? cakes 5 6 7 8 9 10 11 12 13 14 15 16 17 18 time 1 2 3 4 5 6 7 8 1 2 Filled in more from last slide, can we do 2? 3 11 5 6 7 8 4 10 9 12 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Methodically by hand, small values Pan has capacity 8, vary #pancakes, 17 cakes? cakes 5 6 7 8 9 10 11 12 13 14 15 16 17 18 time 20 1 2 3 4 5 6 7 8 1 2 We can do 13-16 in 20 minutes, what about 17? 3 11 5 6 7 8 4 10 9 12 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Methodically by hand, small values Pan has capacity 8, Generalize to algorithm? cakes 5 6 7 8 9 10 11 12 13 14 15 16 17 18 time 20 25 1 2 3 4 5 6 7 8 1 2 Can we generalize? 3 11 5 6 7 8 4 10 9 12 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Compsci 101, Spring 2018, Sequences+Selection Pancake Algorithm If you have pan of size 17 and 34 pancakes If you have pan of size 17 and 43 pancakes PAN fits 100 pancakes, but you have 452 PAN fits N pancakes, but you have P if P <= N then time needed is … X = P // N what does this mean for time? Y = P % N what does this mean for time? Summarize, review // and % with examples like N = 8 (PAN just did) and # pancakes = 12 and 13 (just did) 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
From Algorithm to Python We need one more tool: selection Execute different code depending on … What is a vowel? When is a year a leap-year? Is there a minimal age for US President? If condition is true then do something Condition: true or false Something: any Python code Motivate selection, example coming 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Three versions of is_vowel def is_vowel(ch): if ch =='e': return True if ch == 'a': if ch == 'i': if ch == 'o': if ch == 'u': return False def is_vowel(ch): c = "aeiou".count(ch) if c > 0: return True else: return False def is_vowel(ch): return "aeiou".count(ch) > 0 Simple if statement, return. That’s all we need for APTs. Emphasize boolean part of if statement 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Finishing the APT Pancake Problem Use the algorithm developed AFTER verifying with pencil and paper aka by hand Test first in our Eclipse (VM or Local) Create main program block Call minutesNeeded with several examples Use APT testing system, submit, reflect Can we have more than one return statement? Develop from scratch with help from class. Get all green 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
How to teach pancake flipping http://www.youtube.com/watch?v=W_gxLKSsSIE Is this computer science? http://bit.ly/zykOrh For longer, more complex robotic tasks http://www.youtube.com/watch?v=4usoE981e7I Do robots matter? Do they dream? Self-driving cars? Machine learning? Who developed a first upper bound on pancake sorting? Bill Gates 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
What problems can we solve? We can create arithmetic expressions +, -, *, /, %, **, // and more Import math and math.sqrt(..), math.sin(..) We can create and combine strings Using + or * for example We can write and call functions That can use arithmetic expressions and strings 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Compsci 101, Spring 2018, Sequences+Selection Selection Summarized We can use selection: if statement if boolean condition: block What can change? Boolean and block What is a boolean condition? True/False See type(3 < 5) Relational operators: <, <=, >, >=, ==, != Boolean operators: and, or, not Won’t do this in detail, but a good summary. Show type(3 < 5) in pydev console 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Additional Tools for Building We need sequences to access and create data Documents rather than words Spread sheets rather than single data/formula Operations on these sequences Access all elements: loops Access elements selectively: if statements Motivate sequences. Collections of elements. Analogy as shown. We need operations on sequences. We'll show a few today, more next week 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Compsci 101, Spring 2018, Sequences+Selection Python Sequences Types String and List share characteristics Both are sequences, have a length Both support indexing and slicing Conversion functions help connect them x="hello world" y=["hello”, "world"] What is len(x)? String is immutable, list is mutable Two important examples. Preview with mutable, immutable, don't dwell 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Indexing Python Sequences x="hello world" y=["hello", "world"] Indexing provides access to individual elements Compare x[0]and y[0] Start with 0, what is last valid positive index? Compare x[-1] and y[-1] What is negative index of second to last element? Index –n is the same as index len(seq) - n 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Slicing Python Sequences x="hello world" y=["my", "big", "beautiful", "world"] Slicing provides sub-sequence (string or list) Compare x[0:3]and y[0:3] What is length of subsequence? seq[2:4] Compare x[4:-1] and y[2:-1] Is last index part of subsequence? We can omit value, e.g., x[2:] or x[:4], good shortcut! Show in pydev console 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Compsci 101, Spring 2018, Sequences+Selection One more APT Let’s have Brunch with the Digerati https://www2.cs.duke.edu/csed/pythonapt/portmanteau.html Read the problem statement carefully Why can’t we create netizen in function? Combination of “internet” and “citizen” How do we solve with slicing? 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Anatomy of Python String String is a sequence of characters These are strings of length 1 Functions can be applied to strings: len Operators can be applied: [n] and [m:n] Methods/functions applied to strings "HELLO".lower() "the duke way".split(" ") Review these, split needed for one APT 1/25/2018 Compsci 101, Spring 2018, Sequences+Selection
Bug and Debug software 'bug' Start small Judicious 'print' Easier to cope Judicious 'print' Debugger too Verify the approach being taken, test small, test frequently, add to working code What does “working code” mean?