PAL Sessions: COMP1100 focus: 3pm daily, GEOG 202 COMP1130 focus: 1pm Thursday, GEOG 202
|
|
- Beverly Maxwell
- 6 years ago
- Views:
Transcription
1 PAL Sessions: COMP1100 focus: 3pm daily, GEOG 202 COMP1130 focus: 1pm Thursday, GEOG 202
2 Assessments reminder Assignment 1: out this week, stage 1 due on 31 March (census date), stage 2 due after the teaching break (10%, redeemable on final exam) Assignment 2: out week 6, due end of week 8 (12%) Assignment 3: out week 8, due end of week 12 (15%) Mid-semester lab exam on Monday 26 March (10%, redeemable on final exam) Final exam during exam period (50%)
3 Problem solving in Haskell Chapter 4 of Thompson
4 Review exercises 1. Write a function multiply that takes two integers x and y, and produces x multiplied by y 2. Write a function double that takes an integer x, and produces x doubled 3. Write a function triple that takes an integer x, and produces x tripled
5 Homework: solution next lecture Write a function taxrate that takes a Double salary figure, and produces a Double tax rate, according to the following table: Salary Tax Rate at least % at least and less than % at least and less than % less than %
6 Homework: solution next lecture Write a function taxpayable that takes a Double salary figure, and produces a Double tax amount payable, where the tax amount is calculated as a percentage of salary, using the previous table.
7 Designing a program 1. What is needed? 2. Can you say anything about types? 3. What do you already know? 4. Can you use another function as a model? 5. Can you reuse a function? 6. Can you break the problem into simpler parts? 7. What if you had some existing functions?
8 What is needed? Suppose you are asked to return the middle of three numbers: middlenumber middlenumber ? middlenumber none? No right answer!
9 Can you say anything about types? middlenumber :: Integer -> Integer -> Integer -> Integer May need to define types for ourselves to match the problem!
10 What do you already know? Recall: max :: Integer -> Integer -> Integer max x y x >= y = x otherwise = y
11 Can you use another function as a model? Consider finding maximum of three numbers: maxthree :: Integer -> Integer -> Integer -> Integer maxthree x y z x >= y && x >= z = x y >= z = y otherwise = z
12 Can you reuse a function? maxthree x y z = max (max x y) z or equivalently maxthree x y z = (x `max` y) `max` z
13 Can you break the problem into simpler parts? Divide and Conquer: Solve small pieces of the problem and compose into an overall solution. Bottom Up: Solve the simpler problem and build on up. Top Down: Assume you have the functions you need!
14 What if you had some existing functions? middlenumber :: Integer -> Integer -> Integer -> Integer Model on maxthree: middlenumber x y z condition for x to be solution = x condition for x to be solution = y Suppose we have a function between to check the conditions!
15 Top down design middlenumber x y z between y x z = x between x y z = y otherwise = z
16 Solving a problem in steps: local definitions fourpics :: Picture -> Picture fourpics pic = left `beside` right where left = right =
17 Solving a problem in steps: local definitions fourpics :: Picture -> Picture fourpics pic = left `beside` right where left = pic `above` invertcolour pic right =
18 Solving a problem in steps: local definitions Define right from scratch: fourpics :: Picture -> Picture fourpics pic = left `beside` right where left = pic `above` invertcolour pic right = invertcolour (flipv pic) `above` flipv pic
19 Solving a problem in steps: local definitions Then add another local definition as a helper: fourpics :: Picture -> Picture fourpics pic = left `beside` right where left = pic `above` invertcolour pic right = invertcolour flipped `above` flipped flipped = flipv pic
20 Solving a problem in steps: local definitions Or use the definition of left in defining right: fourpics :: Picture -> Picture fourpics pic = left `beside` right where left = pic `above` invertcolour pic right = invertcolour (flipv left)
21 Solving a problem in steps: local definitions Or define a local function: fourpics :: Picture -> Picture fourpics pic = left `beside` right where stack p = p `above` invertcolour p left = stack pic right = stack (invertcolour (flipv pic))
22 Calculating with local definitions sumsquares :: Integer -> Integer -> Integer sumsquares n m = sqn + sqm where sqn = n*n sqm = m*m
23 Calculating with local definitions sumsquares 4 3 = sqn + sqm where sqn = 4 * 4 = 16 sqm = 3 * 3 9 = = 25
24 Scopes: can use definitions that occur later isodd, iseven :: Int -> Bool isodd n n <= 0 = False otherwise = iseven (n-1) iseven n n < 0 = False n == 0 = True otherwise = isodd (n-1)
25 Scopes: where clauses limit scope maxsq x y
26 Scopes maxsq x y
27 Types for the problem domain
28
29 Defining new types: enumerated types
30 Defining new types: enumerated types data Move = Rock Paper Scissors deriving (Show,Eq)
31 Defining new types: enumerated types data Move = Rock Paper Scissors deriving (Show,Eq) beat :: Move -> Move beat Rock = Paper beat Paper = Scissors beat Scissors = Rock lose :: Move -> Move lose Rock = Scissors lose Paper = Rock lose _ = Paper
32 Recursion
33 Recursion: factorials n fact n fact n fact (n-1) * n = 1*1 = 1 2 1*2 = 2 fact (n-1) * n = 1*2 = 2 3 1*2*3 = 6 fact (n-1) * n = 2*3 = 6 4 1*2*3*4 = 24 fact (n-1) * n = 6*4 = 24
34 Recursion and calculation fact :: Integer -> Integer fact n n==0 = 1 n>0 = fact (n-1) * n
35 Recursion and calculation fact 4 fact 3 * 4 (fact 2 * 3) * 4 ((fact 1 * 2) * 3) * 4 (((fact 0 * 1) * 2) * 3) * 4 (((1 * 1) * 2) * 3) * 4 ((1 * 2) * 3) * 4 (2 * 3) * 4 6 * 4 24
36 Recursion: undefined values fact :: Integer -> Integer fact n n==0 = 1 n>0 = fact (n-1) * n otherwise = 0
37 Recursion: error values fact :: Integer -> Integer fact n n==0 = 1 n>0 = fact (n-1) * n otherwise = error "fact only defined on natural numbers"
38 A template for primitive recursion fun n n==0 = n>0 = fun (n-1)
39 Powers of two power2 :: Integer -> Integer power2 n==0 = n>0 = power2 (n-1)
40 Powers of two power2 :: Integer -> Integer power2 n==0 = 1 n>0 = 2*power2 (n-1)
41 Sum of factorials sumfacts n = fact 0 + fact fact (n-1) + fact n sumfacts :: Integer -> Integer sumfacts n n==0 = 1 n>0 = sumfacts (n-1) + fact n
42 Sum of arbitrary function sumfun :: (Integer -> Integer) -> Integer -> Integer sumfun f n n==0 = f 0 n>0 = sumfun f (n-1) + f n
43 Sum of arbitrary function sumfun fact 3 sumfun fact 2 + fact 3 sumfun fact 1 + fact 2 + fact 3 sumfun fact 0 + fact 1 + fact 2 + fact 3 10 sumfacts n = sumfun fact n
44 General recursion: Fibonacci numbers fib :: Integer -> Integer fib n n==0 = 0 n==1 = 1 n>1 = fib (n-2) + fib (n-1) Clear but very inefficient!
45 General recursion: integer division remainder, divide :: Integer -> Integer -> Integer remainder = 7 divide = 3 remainder = 7 divide = 2 remainder = 7 divide = 1 remainder 7 10 = 7 divide 7 10 = 0
46 General recursion: integer division remainder, divide :: Integer -> Integer -> Integer remainder m n m<n = m otherwise = remainder (m-n) n divide m n m<n = 0 otherwise = 1 + divide (m-n) n
47 General recursion: doesn t always terminate! remainder 7 0 remainder (7-0) 0 remainder 7 0 divide 4 (-4) 1 + divide (4-(-4)) (-4) 1 + divide 8 (-4)
48
49 Black box testing Devise test data according to specification: partition data into testing groups, equivalent for all values, and choose one representative from each group be careful about special cases: boundary values of groups
50 Black box testing: maxthree All three values different All three values the same Two items equal, the third different: two values equal to the maximum, one other one value equal to the maximum, two others > runtesttt testsmax
51 Black box testing: mysterymax mysterymax :: Integer -> Integer -> Integer -> Integer mysterymax x y z x > y && x > z = x y > x && y > z = y otherwise = z > mysterymax
52 Black box testing: mysterymax Needed to consider all possible different orderings: all three values different; six different orderings all three values the same; one ordering two items equal, the third different; in each consider three orderings
53 White box testing Use form of program to help choose data: supply data for each guard; test boundary conditions for equality case with >= or > for recursive functions test the zero case, the one case, and the general case
54 QuickCheck with Int and Integer fact :: Int -> Int fact n n>1 = n * fact (n-1) otherwise = 1 prop_fact n = fact n > 0 > quickcheck prop_fact
55 Data types, tuples, and lists Chapter 5
56 To compare two floats (x and y) for equality, use: A. x == y B. x /= y C. y == x D. abs (x - y) < E. (abs x) - (abs y) >
57 Tuples A fixed number of values of (possibly different) fixed types combined into a single value. e.g., associating prices to shopping items ("Salt: 1kg", 139) ("Chips", 25) type ShopItem = (String, Int) -- giving the type a name ("Salt: 1kg", 139) :: ShopItem
58 Lists An arbitrary number of values of the same type combined into a single value. e.g., a basket of shopping items [("Salt: 1kg", 139), ("Chips", 25), ("Gin: 1l", 1099)] :: [ (String, Int) ] type Basket = [ ShopItem ] -- giving the type a name The empty list is [] and type String = [Char]
59 Tuple type (t 1, t 2,, t n ) Describes tuples of values (v 1, v 2,, v n ) where v 1 :: t 1, v 2 :: t 2,, v n :: t n Generalizes pairs, triples, quadruples, quintuples, sextuples, etc.
60 Examples minandmax :: Integer -> Integer -> (Integer,Integer) minandmax x y x >= y = (y,x) otherwise = (x,y)
61 Pattern matching: functions over tuples addpair :: (Integer,Integer) -> Integer addpair (x,y) = x+y addpair (5,8)
62 Patterns can contain nested patterns addpair :: (Integer,Integer) -> Integer addpair (0,y) = y addpair (x,y) = x+y shift :: ((Int,Int),Int) -> (Int,(Int,Int)) shift ((x,y),z) -> (x,(y,z)) name :: ShopItem -> String price :: ShopItem -> Int name (n,p) = n price (n,p) = p
63 Builtin selectors on pairs (but more difficult to read) fst (x,y) = x snd (x,y) = y addpair :: (Integer,Integer) -> Integer addpair p = fst p + snd p
64 Remember Fibonacci numbers? fib :: Integer -> Integer fib n n==0 = 0 n==1 = 1 n>1 = fib (n-2) + fib (n-1) Clear but very inefficient!
65 A more efficient solution for Fibonacci 0, 1, 1, 2, 3, 5,, u, v, (u+v), Next is sum of previous two, so let s compute it that way. We want a definition of a function that computes (u,v) = (fib n, fib (n+1)). fibstep :: (Integer,Integer) -> (Integer,Integer) fibstep (u,v) = (v,u+v) Now, we have fibpair :: Integer -> (Integer,Integer) fibpair n n==0 = (0,1) otherwise = fibstep (fibpair (n-1)) and fastfib :: Integer -> Integer fastfib = fst. fibpair
Composite Datatypes Lists and Tuples
Composite Datatypes Lists and Tuples CS190 Functional Programming Techniques Dr Hans Georg Schaathun University of Surrey Autumn 2008 Week 4 Dr Hans Georg Schaathun Composite Datatypes Lists and Tuples
More informationHaskell Types COMP360
Haskell Types COMP360 No computer has ever been designed that is ever aware of what it's doing; but most of the time, we aren't either. Marvin Minsky Haskell Programming Assignment A Haskell programming
More informationPROGRAMMING IN HASKELL. Chapter 5 - List Comprehensions
PROGRAMMING IN HASKELL Chapter 5 - List Comprehensions 0 Set Comprehensions In mathematics, the comprehension notation can be used to construct new sets from old sets. {x 2 x {1...5}} The set {1,4,9,16,25}
More informationThis session. Recursion. Planning the development. Software development. COM1022 Functional Programming and Reasoning
This session Recursion COM1022 Functional Programming and Reasoning Dr. Hans Georg Schaathun and Prof. Steve Schneider University of Surrey After this session, you should understand the principle of recursion
More informationIn this lab, you will learn more about selection statements. You will get familiar to
Objective: In this lab, you will learn more about selection statements. You will get familiar to nested if and switch statements. Nested if Statements: When you use if or if...else statement, you can write
More informationCS131 Typed Lambda Calculus Worksheet Due Thursday, April 19th
CS131 Typed Lambda Calculus Worksheet Due Thursday, April 19th Name: CAS ID (e.g., abc01234@pomona.edu): I encourage you to collaborate. collaborations below. Please record your Each question is worth
More informationLecture Programming in C++ PART 1. By Assistant Professor Dr. Ali Kattan
Lecture 08-1 Programming in C++ PART 1 By Assistant Professor Dr. Ali Kattan 1 The Conditional Operator The conditional operator is similar to the if..else statement but has a shorter format. This is useful
More informationToday s Plan. Programming Languages. Example : Factorial. Recursion. CSE 130 : Spring Lecture 6: Higher-Order Functions
CSE 130 : Spring 2011 Programming Languages Lecture 6: Higher-Order Ranjit Jhala UC San Diego Today s Plan A little more practice with recursion Base Pattern -> Base Expression Induction Pattern -> Induction
More informationFunctional Programming in Haskell Part I : Basics
Functional Programming in Haskell Part I : Basics Madhavan Mukund Chennai Mathematical Institute 92 G N Chetty Rd, Chennai 600 017, India madhavan@cmi.ac.in http://www.cmi.ac.in/ madhavan Madras Christian
More informationPROGRAMMING IN HASKELL. CS Chapter 6 - Recursive Functions
PROGRAMMING IN HASKELL CS-205 - Chapter 6 - Recursive Functions 0 Introduction As we have seen, many functions can naturally be defined in terms of other functions. factorial :: Int Int factorial n product
More informationHaskell 101. (Version 1 (July 18, 2012)) Juan Pedro Villa Isaza
Haskell 101 (Version 1 (July 18, 2012)) Juan Pedro Villa Isaza Haskell 101: Contents Introduction Tutorial Homework Bibliography Haskell 101: Contents Introduction Tutorial Homework Bibliography Haskell
More informationProgramming Languages. Tail Recursion. CSE 130: Winter Lecture 8: NOT TR. last thing function does is a recursive call
CSE 130: Winter 2010 News Programming Languages Lecture 8: Higher-Order Od Functions Ranjit Jhala UC San Diego Today s Plan Finish Static Scoping Tail Recursion last thing function does is a recursive
More informationCOMP-202: Foundations of Programming. Lecture 13: Recursion Sandeep Manjanna, Summer 2015
COMP-202: Foundations of Programming Lecture 13: Recursion Sandeep Manjanna, Summer 2015 Announcements Final exams : 26 th of June (2pm to 5pm) @ MAASS 112 Assignment 4 is posted and Due on 29 th of June
More informationHaskell through HUGS THE BASICS
Haskell through HUGS THE BASICS FP for DB Basic HUGS 1 Algorithmic Imperative Languages variables assignment if condition then action1 else action2 loop block while condition do action repeat action until
More informationCSc 520. Principles of Programming Languages 11: Haskell Basics
CSc 520 Principles of Programming Languages 11: Haskell Basics Christian Collberg Department of Computer Science University of Arizona collberg@cs.arizona.edu Copyright c 2005 Christian Collberg April
More informationPlease write your name and username here legibly: C212/A592 6W2 Summer 2017 Early Evaluation Exam: Fundamental Programming Structures in Java
Please write your name and username here legibly: C212/A592 6W2 Summer 2017 Early Evaluation Exam: Fundamental Programming Structures in Java Use BigDecimal (a class defined in package java.math) to write
More informationCSc 372 Comparative Programming Languages
CSc 372 Comparative Programming Languages 8 : Haskell Function Examples Christian Collberg collberg+372@gmail.com Department of Computer Science University of Arizona Copyright c 2005 Christian Collberg
More informationProgramming Language Concepts: Lecture 14
Programming Language Concepts: Lecture 14 Madhavan Mukund Chennai Mathematical Institute madhavan@cmi.ac.in http://www.cmi.ac.in/~madhavan/courses/pl2009 PLC 2009, Lecture 14, 11 March 2009 Function programming
More informationFunctional Programming. Overview. Topics. Definition n-th Fibonacci Number. Graph
Topics Functional Programming Christian Sternagel Harald Zankl Evgeny Zuenko Department of Computer Science University of Innsbruck WS 2017/2018 abstract data types, algebraic data types, binary search
More informationCS 320: Concepts of Programming Languages
CS 320: Concepts of Programming Languages Wayne Snyder Computer Science Department Boston University Lecture 04: Basic Haskell Continued o Polymorphic Types o Type Inference with Polymorphism o Standard
More informationINTRODUCTION TO HASKELL
INTRODUCTION TO HASKELL PRINCIPLES OF PROGRAMMING LANGUAGES Norbert Zeh Winter 2018 Dalhousie University 1/81 HASKELL: A PURELY FUNCTIONAL PROGRAMMING LANGUAGE Functions are first-class values: Can be
More informationCOMP322 - Introduction to C++ Lecture 01 - Introduction
COMP322 - Introduction to C++ Lecture 01 - Introduction Robert D. Vincent School of Computer Science 6 January 2010 What this course is Crash course in C++ Only 14 lectures Single-credit course What this
More informationTopic 7: Algebraic Data Types
Topic 7: Algebraic Data Types 1 Recommended Exercises and Readings From Haskell: The craft of functional programming (3 rd Ed.) Exercises: 5.5, 5.7, 5.8, 5.10, 5.11, 5.12, 5.14 14.4, 14.5, 14.6 14.9, 14.11,
More informationHaskell An Introduction
Haskell An Introduction What is Haskell? General purpose Purely functional No function can have side-effects IO is done using special types Lazy Strongly typed Polymorphic types Concise and elegant A First
More informationStreams and Evalutation Strategies
Data and Program Structure Streams and Evalutation Strategies Lecture V Ahmed Rezine Linköpings Universitet TDDA69, VT 2014 Lecture 2: Class descriptions - message passing ( define ( make-account balance
More informationCSc 372 Comparative Programming Languages. 4 : Haskell Basics
CSc 372 Comparative Programming Languages 4 : Haskell Basics Christian Collberg Department of Computer Science University of Arizona collberg@gmail.com Copyright c 2011 Christian Collberg August 23, 2011
More informationPROGRAMMING IN HASKELL. Chapter 2 - First Steps
PROGRAMMING IN HASKELL Chapter 2 - First Steps 0 The Hugs System Hugs is an implementation of Haskell 98, and is the most widely used Haskell system; The interactive nature of Hugs makes it well suited
More informationCSc 372. Comparative Programming Languages. 4 : Haskell Basics. Department of Computer Science University of Arizona
1/40 CSc 372 Comparative Programming Languages 4 : Haskell Basics Department of Computer Science University of Arizona collberg@gmail.com Copyright c 2013 Christian Collberg 2/40 The Hugs Interpreter The
More informationПриложение към Лекция 4: Примерна програмна система за манипулиране на картинки
Приложение към Лекция 4: Примерна програмна система за манипулиране на картинки Манипулиране на картинки (Pictures: A Case Study) Purpose We will go through a larger example of designing a part of a program:
More informationPractical Haskell. An introduction to functional programming. July 21, Practical Haskell. Juan Pedro Villa-Isaza. Introduction.
Practical Practical An introduction to functional programming July 21, 2011 Contents Practical Practical is fun, and that s what it s all about! Even if seems strange to you at first, don t give up. Learning
More informationFunctional Programming for Logicians - Lecture 1
Functional Programming for Logicians - Lecture 1 Functions, Lists, Types Malvin Gattinger 4 June 2018 module L1 where Introduction Who is who Course website: https://malv.in/2018/funcproglog/ Malvin Gattinger
More informationECE 2574: Data Structures and Algorithms - Recursion Part I. C. L. Wyatt
ECE 2574: Data Structures and Algorithms - Recursion Part I C. L. Wyatt Today we will introduce the notion of recursion, look at some examples, and see how to implement them in code. Introduction to recursion
More informationBIRLA INSTITUTE OF TECHNOLOGY AND SCIENCE, Pilani Pilani Campus Instruction Division. SECOND SEMESTER Course Handout Part II
SECOND SEMESTER 2016-2017 Course Handout Part II In addition to part-i (General Handout for all courses appended to the time table) this portion gives further specific details regarding the course. Course
More informationProgramming Language Concepts, cs2104 Lecture 04 ( )
Programming Language Concepts, cs2104 Lecture 04 (2003-08-29) Seif Haridi Department of Computer Science, NUS haridi@comp.nus.edu.sg 2003-09-05 S. Haridi, CS2104, L04 (slides: C. Schulte, S. Haridi) 1
More informationCSc 372. Comparative Programming Languages. 8 : Haskell Function Examples. Department of Computer Science University of Arizona
1/43 CSc 372 Comparative Programming Languages 8 : Haskell Function Examples Department of Computer Science University of Arizona collberg@gmail.com Copyright c 2013 Christian Collberg Functions over Lists
More informationIntroduction to Functional Programming. Slides by Koen Claessen and Emil Axelsson
Introduction to Functional Programming Slides by Koen Claessen and Emil Axelsson Goal of the Course Start from the basics Learn to write small-to-medium sized programs in Haskell Introduce basic concepts
More informationAnnouncements. Recursion and why study it. Recursive programming. Recursion basic idea
Announcements Recursion and why study it Tutoring schedule updated Do you find the sessions helpful? Midterm exam 1: Tuesday, April 11, in class Scope: will cover up to recursion Closed book but one sheet,
More informationCS 135 Lab Assignments Week 12
CS 135 Lab Assignments Week 12 Professor: Matt B. Pedersen This handout is the assignment that you must finish for the lab portion of the course in week 12. You must finish the assignments yourself; if
More informationAn introduction to functional programming. July 23, 2010
An introduction to functional programming July 23, 2010 About Outline About About What is functional programming? What is? Why functional programming? Why? is novel. is powerful. is fun. About A brief
More information6.01, Spring Semester, 2008 Assignment 3, Issued: Tuesday, February 19 1
6.01, Spring Semester, 2008 Assignment 3, Issued: Tuesday, February 19 1 MASSACHVSETTS INSTITVTE OF TECHNOLOGY Department of Electrical Engineering and Computer Science 6.01 Introduction to EECS I Spring
More informationThere are three questions on this exam. You have 2 hours to complete it. Please indent your program so that it is easy for the grader to read.
There are three questions on this exam. You have 2 hours to complete it. Please indent your program so that it is easy for the grader to read. 1. Write a function named largestadjacentsum that iterates
More informationCMSC 330, Fall 2013, Practice Problems 3
CMSC 330, Fall 2013, Practice Problems 3 1. OCaml and Functional Programming a. Define functional programming b. Define imperative programming c. Define higher-order functions d. Describe the relationship
More informationHaske k ll An introduction to Functional functional programming using Haskell Purely Lazy Example: QuickSort in Java Example: QuickSort in Haskell
Haskell An introduction to functional programming using Haskell Anders Møller amoeller@cs.au.dk The most popular purely functional, lazy programming language Functional programming language : a program
More informationAPCS-AB: Java. Recursion in Java December 12, week14 1
APCS-AB: Java Recursion in Java December 12, 2005 week14 1 Check point Double Linked List - extra project grade Must turn in today MBCS - Chapter 1 Installation Exercises Analysis Questions week14 2 Scheme
More informationProgramming Language Concepts, cs2104 Lecture 01 ( )
Programming Language Concepts, cs2104 Lecture 01 (2003-08-15) Seif Haridi Department of Computer Science, NUS haridi@comp.nus.edu.sg 2002-08-15 S. Haridi, CS2104, L01 (slides: C. Schulte, S. Haridi) 1
More informationReviewing all Topics this term
Today in CS161 Prepare for the Final Reviewing all Topics this term Variables If Statements Loops (do while, while, for) Functions (pass by value, pass by reference) Arrays (specifically arrays of characters)
More informationLecture 6 CS2110 Spring 2013 RECURSION
Lecture 6 CS2110 Spring 2013 RECURSION Recursion 2 Arises in three forms in computer science Recursion as a mathematical tool for defining a function in terms of its own value in a simpler case Recursion
More informationPython lab session 1
Python lab session 1 Dr Ben Dudson, Department of Physics, University of York 28th January 2011 Python labs Before we can start using Python, first make sure: ˆ You can log into a computer using your username
More information61A LECTURE 1 FUNCTIONS, VALUES. Steven Tang and Eric Tzeng June 24, 2013
61A LECTURE 1 FUNCTIONS, VALUES Steven Tang and Eric Tzeng June 24, 2013 Welcome to CS61A! The Course Staff - Lecturers Steven Tang Graduated L&S CS from Cal Back for a PhD in Education Eric Tzeng Graduated
More informationDuring the first 2 weeks of class, all students in the course will take an in-lab programming exam. This is the Exam in Programming Proficiency.
Description of CPSC 301: This is a 2-unit credit/no credit course. It is a course taught entirely in lab, and has two required 2-hour 50-minute lab sessions per week. It will review, reinforce, and expand
More informationTwo Approaches to Algorithms An Example (1) Iteration (2) Recursion
2. Recursion Algorithm Two Approaches to Algorithms (1) Iteration It exploits while-loop, for-loop, repeat-until etc. Classical, conventional, and general approach (2) Recursion Self-function call It exploits
More informationCSCE 314 TAMU Fall CSCE 314: Programming Languages Dr. Flemming Andersen. Haskell Functions
1 CSCE 314: Programming Languages Dr. Flemming Andersen Haskell Functions 2 Outline Defining Functions List Comprehensions Recursion 3 Conditional Expressions As in most programming languages, functions
More informationAn introduction introduction to functional functional programming programming using usin Haskell
An introduction to functional programming using Haskell Anders Møller amoeller@cs.au.dkau Haskell The most popular p purely functional, lazy programming g language Functional programming language : a program
More informationQ1 Q2 Q3 Q4 Q5 Total 1 * 7 1 * 5 20 * * Final marks Marks First Question
Page 1 of 6 Template no.: A Course Name: Computer Programming1 Course ID: Exam Duration: 2 Hours Exam Time: Exam Date: Final Exam 1'st Semester Student no. in the list: Exam pages: Student's Name: Student
More informationWorking with recursion. From definition to template. Readings: HtDP, sections 11, 12, 13 (Intermezzo 2).
Working with recursion Readings: HtDP, sections 11, 12, 13 (Intermezzo 2). We can extend the idea of a self-referential definition to defining the natural numbers, which leads to the use of recursion in
More informationCOSE212: Programming Languages. Lecture 3 Functional Programming in OCaml
COSE212: Programming Languages Lecture 3 Functional Programming in OCaml Hakjoo Oh 2017 Fall Hakjoo Oh COSE212 2017 Fall, Lecture 3 September 18, 2017 1 / 44 Why learn ML? Learning ML is a good way of
More informationWorking with recursion
Working with recursion Readings: HtDP, sections 11, 12, 13 (Intermezzo 2). We can extend the idea of a self-referential definition to defining the natural numbers, which leads to the use of recursion in
More informationAlgorithm. An algorithm is a computational process for solving a problem. computational: a computer must be able to perform the steps of the process
Algorithm An algorithm is a computational process for solving a problem. computational: a computer must be able to perform the steps of the process This concept was formalized by Alan Turing and Alonzo
More informationProgramming Languages and Techniques (CIS120)
Programming Languages and Techniques () Lecture 9 January 31, 2018 Lists and Higher-order functions Lecture notes: Chapter 9 What is the type of this expresssion? [ (fun (x:int) -> x + 1); (fun (x:int)
More informationSearch,Sort,Recursion
Search,Sort,Recursion Searching, Sorting and Recursion Searching Linear Search Inserting into an Array Deleting from an Array Selection Sort Bubble Sort Binary Search Recursive Binary Search Searching
More information(Provisional) Lecture 08: List recursion and recursive diagrams 10:00 AM, Sep 22, 2017
Integrated Introduction to Computer Science Hughes (Provisional) Lecture 08: List recursion and recursive diagrams 10:00 AM, Sep 22, 2017 Contents 1 Announcements 1 2 Evaluation Correction 1 3 Lists 2
More informationFunctional Programming I *** Functional Programming and Interactive Theorem Proving. Ulrich Berger Michaelmas Term 2006
Functional Programming I *** Functional Programming and Interactive Theorem Proving Ulrich Berger Michaelmas Term 2006 2 *** Room 306 (Faraday Tower) Phone 513380 Fax 295708 u.berger@swansea.ac.uk http://www-compsci.swan.ac.uk/
More information61A LECTURE 7 DATA ABSTRACTION. Steven Tang and Eric Tzeng July 3, 2013
61A LECTURE 7 DATA ABSTRACTION Steven Tang and Eric Tzeng July 3, 2013 Announcements Trends project released later today. Due in ~2 weeks Extra midterm office hours Sunday, from noon to 6pm in 310 Soda
More informationCS 303E Fall 2011 Exam 2 Solutions and Criteria November 2, Good Luck!
CS 303E Fall 2011 Exam 2 Solutions and Criteria November 2, 2011 Name: EID: Section Number: Friday discussion time (circle one): 9-10 10-11 11-12 12-1 2-3 Friday discussion TA(circle one): Wei Ashley Answer
More information1. The Square limit language
1 MASSACHUSETTS INSTITUTE OF TECHNOLOGY Department of Electrical Engineering and Computer Science 6.090 Building Programming Experience Fall Semester, 1996 97 Problem Set 4 The Square limit language Issued:
More informationCS450 - Structure of Higher Level Languages
Spring 2018 Streams February 24, 2018 Introduction Streams are abstract sequences. They are potentially infinite we will see that their most interesting and powerful uses come in handling infinite sequences.
More informationCSCI-1200 Data Structures Fall 2017 Lecture 7 Order Notation & Basic Recursion
CSCI-1200 Data Structures Fall 2017 Lecture 7 Order Notation & Basic Recursion Announcements: Test 1 Information Test 1 will be held Monday, Sept 25th, 2017 from 6-7:50pm Students will be randomly assigned
More informationRecursion: Recursion: repeated curses
Recursion: Programming can be viewed as the process of breaking a whole into parts, properly. This can be done in many ways. Recursion, is a special process of programming, where A whole is broken into
More informationData Structures And Algorithms
Data Structures And Algorithms Recursion Eng. Anis Nazer First Semester 2016-2017 Recursion Recursion: to define something in terms of itself Example: factorial n!={ 1 n=0 n (n 1)! n>0 Recursion Example:
More information02157 Functional Programming. Michael R. Ha. Disjoint Unions and Higher-order list functions. Michael R. Hansen
Disjoint Unions and Higher-order list functions nsen 1 DTU Compute, Technical University of Denmark Disjoint Unions and Higher-order list functions MRH 27/09/2018 Overview Recap Disjoint union (or Tagged
More informationUniversity of Illinois at Urbana-Champaign Department of Computer Science. First Examination
University of Illinois at Urbana-Champaign Department of Computer Science First Examination CS 225 Data Structures and Software Principles Spring 2007 7p-9p, Thursday, March 1 Name: NetID: Lab Section
More informationDiscussion 2C Notes (Week 5, February 4) TA: Brian Choi Section Webpage:
Discussion 2C Notes (Week 5, February 4) TA: Brian Choi (schoi@cs.ucla.edu) Section Webpage: http://www.cs.ucla.edu/~schoi/cs32 Recursion A recursion is a function-writing technique where the function
More informationCMSC 330: Organization of Programming Languages. Lets, Tuples, Records
CMSC 330: Organization of Programming Languages Lets, Tuples, Records CMSC330 Spring 2018 1 Let Expressions Enable binding variables in other expressions These are different from the let definitions we
More informationSummer 2017 Discussion 10: July 25, Introduction. 2 Primitives and Define
CS 6A Scheme Summer 207 Discussion 0: July 25, 207 Introduction In the next part of the course, we will be working with the Scheme programming language. In addition to learning how to write Scheme programs,
More informationLecture 13. Call Stacks & Debugging
Lecture 13 Call Stacks & Debugging Announcements for This Lecture Prelim 1 TONIGHT 7:30-9pm Abel Price (Upson B17) Rabbit Teo (Upson 111) Ting Zytariuk (Upson 109) Graded late tonight Will have grade Fri
More informationData Structures and Algorithms 2018
Question 1 (12 marks) Data Structures and Algorithms 2018 Assignment 4 25% of Continuous Assessment Mark Deadline : 5pm Monday 12 th March, via Canvas Sort the array [5, 3, 4, 6, 8, 4, 1, 9, 7, 1, 2] using
More informationCS 320: Concepts of Programming Languages
CS 320: Concepts of Programming Languages Wayne Snyder Computer Science Department Boston University Lecture 08: Type Classes o o Review: What is a type class? Basic Type Classes: Eq, Ord, Enum, Integral,
More informationHomework 3: Recursion Due: 11:59 PM, Sep 25, 2018
CS17 Integrated Introduction to Computer Science Klein Homework 3: Recursion Due: 11:59 PM, Sep 25, 2018 Contents 1 Factorial 3 2 Fibonacci 4 3 Odds Only 5 4 Increment All 6 5 Frequency 6 6 Sublist 7 6.1
More informationHaskell Types COMP360
Haskell Types COMP360 Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. Stan Kelly-Bootle British author, singer-songwriter and computer
More informationUNIT 5B Binary Search
205/09/30 UNIT 5B Binary Search Course Announcements Written exam next week (Wed. Oct 7 ) Practice exam available on the Resources page Exam reviews: Sunday afternoon; watch Piazza for times and places
More informationAn introduction to Scheme
An introduction to Scheme Introduction A powerful programming language is more than just a means for instructing a computer to perform tasks. The language also serves as a framework within which we organize
More information} Evaluate the following expressions: 1. int x = 5 / 2 + 2; 2. int x = / 2; 3. int x = 5 / ; 4. double x = 5 / 2.
Class #10: Understanding Primitives and Assignments Software Design I (CS 120): M. Allen, 19 Sep. 18 Java Arithmetic } Evaluate the following expressions: 1. int x = 5 / 2 + 2; 2. int x = 2 + 5 / 2; 3.
More informationIntroduction to Programming, Aug-Dec 2008
Introduction to Programming, Aug-Dec 2008 Lecture 1, Monday 4 Aug 2008 Administrative matters Resource material Textbooks and other resource material for the course: The Craft of Functional Programming
More informationIntroduction, Functions
Informatics 1 Functional Programming Lectures 1 and 2 Introduction, Functions Don Sannella University of Edinburgh Welcome to Informatics 1, Functional Programming! Informatics 1 course organiser: Paul
More informationSELECTION. (Chapter 2)
SELECTION (Chapter 2) Selection Very often you will want your programs to make choices among different groups of instructions For example, a program processing requests for airline tickets could have the
More informationCMSC 330, Fall 2013, Practice Problem 3 Solutions
CMSC 330, Fall 2013, Practice Problem 3 Solutions 1. OCaml and Functional Programming a. Define functional programming Programs are expression evaluations b. Define imperative programming Programs change
More informationCMPSCI 250: Introduction to Computation. Lecture #14: Induction and Recursion (Still More Induction) David Mix Barrington 14 March 2013
CMPSCI 250: Introduction to Computation Lecture #14: Induction and Recursion (Still More Induction) David Mix Barrington 14 March 2013 Induction and Recursion Three Rules for Recursive Algorithms Proving
More informationProducts and Records
Products and Records Michael P. Fourman February 2, 2010 1 Simple structured types Tuples Given a value v 1 of type t 1 and a value v 2 of type t 2, we can form a pair, (v 1, v 2 ), containing these values.
More informationRECURSION. Many Slides from Ken Birman, Cornell University
RECURSION Many Slides from Ken Birman, Cornell University Iteration Computers are well-suited for executing the same task repeatedly Programs and algorithms use iteration to perform repetitive jobs Programming
More informationSCHEME 8. 1 Introduction. 2 Primitives COMPUTER SCIENCE 61A. March 23, 2017
SCHEME 8 COMPUTER SCIENCE 61A March 2, 2017 1 Introduction In the next part of the course, we will be working with the Scheme programming language. In addition to learning how to write Scheme programs,
More informationCS 1110: Introduction to Computing Using Python Loop Invariants
CS 1110: Introduction to Computing Using Python Lecture 21 Loop Invariants [Andersen, Gries, Lee, Marschner, Van Loan, White] Announcements Prelim 2 conflicts due by midnight tonight Lab 11 is out Due
More informationCIS 194: Homework 4. Due Wednesday, February 18, What is a Number?
CIS 194: Homework 4 Due Wednesday, February 18, 2015 What is a Number? This may sound like a deep, philosophical question, but the Haskell type system gives us a simple way to answer it. A number is any
More informationUNIVERSITY OF EDINBURGH COLLEGE OF SCIENCE AND ENGINEERING SCHOOL OF INFORMATICS INFR08013 INFORMATICS 1 - FUNCTIONAL PROGRAMMING
UNIVERSITY OF EDINBURGH COLLEGE OF SCIENCE AND ENGINEERING SCHOOL OF INFORMATICS INFR08013 INFORMATICS 1 - FUNCTIONAL PROGRAMMING Monday 15 th December 2014 14:30 to 16:30 INSTRUCTIONS TO CANDIDATES 1.
More informationCSc 372. Comparative Programming Languages. 15 : Haskell List Comprehension. Department of Computer Science University of Arizona
1/20 CSc 372 Comparative Programming Languages 15 : Haskell List Comprehension Department of Computer Science University of Arizona collberg@gmail.com Copyright c 2013 Christian Collberg 2/20 List Comprehensions
More informationInformatics 1 Functional Programming Lectures 13 and 14 Monday 11 and Tuesday 12 November Type Classes. Don Sannella University of Edinburgh
Informatics 1 Functional Programming Lectures 13 and 14 Monday 11 and Tuesday 12 November 2013 Type Classes Don Sannella University of Edinburgh Mock exam Slots and rooms have now been assigned Mon 18
More informationFunctional Programming Languages (FPL)
Functional Programming Languages (FPL) 1. Definitions... 2 2. Applications... 2 3. Examples... 3 4. FPL Characteristics:... 3 5. Lambda calculus (LC)... 4 6. Functions in FPLs... 7 7. Modern functional
More informationASYMPTOTIC COMPLEXITY
Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better. - Edsger Dijkstra ASYMPTOTIC COMPLEXITY Lecture
More informationPart I: Written Problems
CSci 4223 Homework 1 DUE: Friday, February 1, 11:59 pm Instructions. Your task is to answer three written problems, and to write eleven SML functions related to calendar dates, as well as test cases for
More informationHaskell 98 in short! CPSC 449 Principles of Programming Languages
Haskell 98 in short! n Syntax and type inferencing similar to ML! n Strongly typed! n Allows for pattern matching in definitions! n Uses lazy evaluation" F definition of infinite lists possible! n Has
More informationCS115 - Module 3 - Booleans, Conditionals, and Symbols
Fall 2017 Reminder: if you have not already, ensure you: Read How to Design Programs, sections 4-5 Booleans (Bool) , and = are new functions, each of which produces a boolean value (Bool). (< 4 6)
More information