computing
play

Computing CS 7 : Introduction to Programming and Computer Science - PowerPoint PPT Presentation

Computing CS 7 : Introduction to Programming and Computer Science in the news Python is TIOBE's programming language of the year 2018! www.tiobe.com/tiobe-index The Python programming language has won the title "programming language of


  1. Computing CS 7 : Introduction to Programming and Computer Science in the news Python is TIOBE's programming language of the year 2018! www.tiobe.com/tiobe-index “The Python programming language has won the title "programming language of the year"! Python has received this title because it has gained most ranking points in 2018 if compared to all other languages. The Python language has won 3.62%, followed by Visual Basic .NET and Java. Python has now definitely become part of the big programming languages. For almost 20 years, C, C++ and Java are consistently in the top 3, far ahead of the rest of the pack. Python is joining these 3 languages now. It is the most frequently taught first language at universities nowadays, it is number one in the statistical domain, number one in AI programming, number one in scripting and number one in writing system tests. Besides this, Python is also leading in web programming and scientific computing (just to name some other domains).” In summary, Python is everywhere.

  2. Acknowledgements This material is an adaptation from CS61A material at UC Berkeley. Credits to Professor John DeNero and the entire CS61A staff.

  3. Parts of the Course Lecture : Lecture is on Mon and Tues Lab section : The most important part of this course Staff office hours : The most important part of this course Online textbook : http://composingprograms.com Optional Discussion section : The most important part of this course Weekly lab, homework assignments, three programming projects (hopefully) Lots of optional special events to help you complete all this work Everything is posted to erickhumalo.com/cs7 3

  4. An Introduction to Programming & Computer Science

  5. What is Computer Science? What problems can be solved using computation, Creativity! The study of How to solve those problems, and What techniques lead to effective solutions Systems Artificial Intelligence Decision Making Graphics Robotics Security Machine Learning Training Models Networking ... Classification Programming Languages ... Theory Scientific Computing ... 5

  6. What is This Course About? A course about managing complexity Mastering abstraction Programming paradigms An introduction to programming Full understanding of Python fundamentals Combining multiple ideas in large projects How computers interpret programming languages A challenging course that will demand a lot of you 6

  7. Course Policies

  8. Course Policies Learning • You don’t know that? • You having trouble? Sheesh! (rolls eyes) Here, let me help! • Elitism • Supporting each other Community • “Me first” attitude • “We together” attitude • Making students feel • Making students feel unwelcome welcome. We are a CS7 family! Details... http://erickhumalo.com/cs7/about.html 8

  9. Collaboration Asking questions is highly encouraged • Discuss everything with each other; learn from your fellow students! • Some projects can be completed with a partner • Choose a partner from your discussion section The limits of collaboration • One simple rule: Don’t share your code, except with your project partner • Copying project solutions causes people to fail the course Build good habits now 9

  10. Announcements • “Optional” Discussion this week • Lab this week for setting up your workspace • Visit the course website and browse through 10

  11. Expressions

  12. Types of expressions An expression describes a computation and evaluates to a value 12

  13. Call Expressions in Python All expressions can use function call notation (Demo 1) 13

  14. Anatomy of a Call Expression add ( 2 , 3 ) Operator Operand Operand Operators and operands are also expressions So they evaluate to values Evaluation procedure for call expressions: 1. Evaluate the operator and then the operand subexpressions 2. Apply the function that is the value of the operator to the arguments that are the values of the operands 14

  15. Evaluating Nested Expressions 224 mul(add(4, mul(4, 6)), add(3, 5)) 8 mul 28 add(4, mul(4, 6)) add(3, 5) add 3 5 add 4 24 mul(4, 6) mul 4 6 15

  16. Evaluating Nested Expressions Value of the whole expression Operand subexpression 224 mul(add(4, mul(4, 6)), add(3, 5)) Value of subexpression 1st argument to mul 8 mul 28 add(4, mul(4, 6)) add(3, 5) add 3 5 add 4 24 mul(4, 6) mul 4 6 Expression tree 16

  17. Functions, Values, Objects, Interpreters, and Data (Demo)

  18. Names, Assignment, and User-Defined Functions (Goal: Get you to have a correct understanding of the Notational Machine of Python, the “set of abstractions that define the structure and behavior of a computing device” –Guzdial) (Demo 2) computinged.wordpress.com/2016/03/07/notional-machines-and-misconceptions-in-cs-developing-a-research-agenda-at-dagstuhl/

  19. Types of Expressions Primitive expressions: 2 add 'hello' String Number or Numeral Name Call expressions: max ( 2 , 3 ) Operator Operand Operand An operand can also max(min(pow(3, 5), -4), min(1, -2)) be a call expression 19

  20. Discussion Question 1 What is the value of the final expression in this sequence? >>> f = min >>> f = max >>> g, h = min, max >>> max = g >>> max(f(2, g(h(1, 5), 3)), 4) ??? 20

  21. Environment Diagrams

  22. Environment Diagrams Environment diagrams visualize the interpreter’s process. Import statement Just executed Name Value Next to execute Assignment statement Code (left): Frames (right): Statements and expressions Each name is bound to a value Arrows indicate evaluation order Within a frame, a name cannot be repeated (Demo 3) 22 http://pythontutor.com/composingprograms.html#code=from%20math%20import%20pi%0Atau%20%3D%202%20*%20pi&cumulative=false&curInstr=1&mode=display&origin=composingprograms.js&py=3&rawInputLstJSON=%5 B%5D

  23. Assignment Statements Just executed Next to execute Just executed Execution rule for assignment statements: 1. Evaluate all expressions to the right of = from left to right. 2. Bind all names to the left of = to those resulting values in the current frame. 23 http://pythontutor.com/composingprograms.html#code=a%20%3D%201%0Ab%20%3D%202%0Ab,%20a%20%3D%20a%20%2B%20b,%20b&cumulative=false&curInstr=0&mode=display&origin=composingprograms.js&py=3&rawInputLstJSON=%5B%5D

  24. Discussion Question 1 Solution (Demo 4) 3 func min(...) 3 4 f(2, g(h(1, 5), 3)) 3 3 func max(...) 2 g(h(1, 5), 3) func min(...) 5 3 h(1, 5) func max(...) 1 5 24 http://pythontutor.com/composingprograms.html#code=f%20%3D%20min%0Af%20%3D%20max%0Ag,%20h%20%3D%20min,%20max%0Amax%20%3D%20g%0Amax%28f%282,%20g%28h%281,%205%29,%203%29%29,%204%29&cumulative=false&curInstr=0&mode=display&origin=composingprograms.js&py=3&rawInputLstJSON=%5B%5D

  25. Defining Functions

  26. Defining Functions Assignment is a simple means of abstraction: binds names to values Function definition is a more powerful means of abstraction: binds names to expressions Function signature indicates how many arguments a function takes >>> def <name> ( <formal parameters> ): return <return expression> Function body defines the computation performed when the function is applied Execution procedure for def statements: 1. Create a function with signature <name> ( <formal parameters> ) 2. Set the body of that function to be everything indented after the first line 3. Bind <name> to that function in the current frame 26

  27. Calling User-Defined Functions Procedure for calling/applying user-defined functions (version 1): 1. Add a local frame, forming a new environment 2. Bind the function's formal parameters to its arguments in that frame 3. Execute the body of the function in that new environment (Demo 5) Built-in function Original name of function called User-defined function Local frame Formal parameter bound to argument Return value (not a binding!) 27 http://pythontutor.com/composingprograms.html#code=from%20operator%20import%20mul%0Adef%20square%28x%29%3A%0A%20%20%20%20return%20mul%28x,%20x%29%0Asquare%28-2%29&cumulative=true&curInstr=0&mode=display&origin=composingprograms.js&py=3&rawInputLstJSON=%5B%5D

  28. Calling User-Defined Functions Procedure for calling/applying user-defined functions (version 1): 1. Add a local frame, forming a new environment 2. Bind the function's formal parameters to its arguments in that frame 3. Execute the body of the function in that new environment A function’s signature has all the information needed to create a local frame 28 http://pythontutor.com/composingprograms.html#code=from%20operator%20import%20mul%0Adef%20square%28x%29%3A%0A%20%20%20%20return%20mul%28x,%20x%29%0Asquare%28-2%29&cumulative=true&curInstr=0&mode=display&origin=composingprograms.js&py=3&rawInputLstJSON=%5B%5D

Recommend


More recommend