Programming Languages and Techniques (CIS120)

Size: px
Start display at page:

Download "Programming Languages and Techniques (CIS120)"

Transcription

1 Programming Languages and Techniques (CIS120) Lecture 18 February 27 th, 2015 Objects

2 I couldn't figure out the last problem :( Difficult, qlookup is hard I had some trouble on this one.. Never knew planets can be so frustrawng... HW 04 feedback I couldn't understand it for a while, so I got so stressed out over it and I'm glad late days exist. WHY DO YOU DO THIS TO US?? This was much much harder than the earlier homeworks. Took me a long Wme to read through everything and to know which of the earlier funcwons I could/ need to use swll have no idea what s wrong with my code. It was hard but sawsfying SO SATISFYING! Great hw Wow... whew While frustrawng at Wmes, it really improved my Ocaml skills and taught me a lot about debugging. (close_enough my_code soluwon) = hopefully true :) omg. god bless the TAs' pawence 2

3 Announcements Midterm 1 reminder SoluWons available on the web site. You may view your exam by going to Levine 308 You may obtain a photocopy by requeswng one Thursday and then picking it up Friday Re- grade requests Due before next midterm, March 25 th Submit form to Levine 308 3

4 What number is printed by this program? type counter_state = { mutable count:int } let = { count = 0 } let incr () : int = ;; let _ = incr() in print_int (incr ()) other CIS120 Answer: 2 How did you answer this queswon? 1. SubsWtuWon model 2. Abstract Stack Machine 3. I just knew the answer 4. I didn t know, so I guessed

5 Objects in Java public class Counter { private int count; public Counter () { count = 0; } class name instance variable constructor class declarawon } public int incr () { count = count + 1; return count; } public int decr () { count = count - 1; return count; } methods public class Main { object creawon and use public static void main (String[] args) { constructor invocawon Counter c = new Counter(); System.out.println( c.inc() ); } } method call

6 What is an Object? Object = Instance variables (fields) + Methods Field = Mutable record Methods = (Immutable) record of first- class funcwons that update the fields Objects encapsulate state when the methods are the only way to mutate the fields. Objects are first- class. Can we get similar behavior in OCaml? 6

7 An incr funcwon How is this code like a Java object? How is it different? type counter_state = { mutable count:int } let = { count = 0 } (* each call to incr will produce the next integer *) let incr () : int = Drawbacks: No abstrac2on: There is only one counter in the world. If we want another, we need another counter_state value and another incr funcwon. No encapsula2on: Any other code can modify count, too. 7

8 Using Hidden State Make a funcwon that creates a counter state and an incr funcwon each Wme a counter is needed. (* More useful: a counter generator: *) let () : unit -> int = (* this is private to the returned function *) let = { count = 0 } in (* make one counter *) let incr1 : unit -> int = () (* make another counter *) let incr2 : unit -> int = () 8

9 What number is printed by this program? let () : unit -> int = let = { count = 0 } in let incr1 = () (* make one counter *) let incr2 = () (* and another *) let _ = incr1 () in print_int (incr2 ()) other CIS120 Answer: 1

10 let () : unit -> int = Running let incr1 : unit -> int = () 10

11 let : unit -> unit -> int = Running let incr1 : unit -> int = () 11

12 let : unit -> unit -> int = Running let incr1 : unit -> int = () 12

13 Running let : unit -> unit -> int = let incr1 : unit -> int = () 13

14 Running let : unit -> unit -> int =. let incr1 : unit -> int = () 14

15 Running let incr1 : unit -> int = () 15

16 Running let incr1 : unit -> int = () 16

17 Running let incr1 : unit -> int = ( ()) 17

18 Running let incr1 : unit -> int = ( ()) 18

19 Running let incr1 : unit -> int = ( ) 19

20 Running let incr1 : unit -> int = ( ) 20

21 Running let = in let incr1 : unit -> int = ( ) count 0 21

22 Running let = in let incr1 : unit -> int = ( ) count 0 22

23 Running let incr1 : unit -> int = ( ) count 0 23

24 Running let incr1 : unit -> int = ( ) count 0 24

25 Local FuncWons let incr1 : unit -> int = ( ) count 0 NOTE: We need one refinement of the ASM model to handle local funcwons. Why? The funcwon menwons, which is on the stack (but about to be popped off) so we save a copy of the needed stack bindings with the funcwon itself. (This is somewmes called a closure ) 25

26 Local FuncWons let incr1 : unit -> int = ( ) count 0 POP! 26

27 Local FuncWons let incr1 : unit -> int = ( ) count 0 27

28 Local FuncWons let incr1 : unit -> int = ( ) count 0 28

29 Local FuncWons incr1 count 0 DONE! Note how the count record is accessible only via the incr1 funcwon. This is the sense in which the state is local to incr1. 29

30 incr1 () Now let s run incr1 () incr1 count 0 30

31 incr1 () Now let s run incr1 () incr1 count 0 31

32 Now let s run incr1 () ( ()) incr1 count 0 32

33 Now let s run incr1 () ( ()) incr1 count 0 33

34 Now let s run incr1 () ( ) incr1 count 0 NOTE: Since the funcwon had some saved stack bindings, we add them to the stack at the same Wme that we put the code in the workspace. 34

35 Now let s run incr1 () ( ) incr1 count 0 35

36 Now let s run incr1 ().count <- + 1; ( ) incr1 count 0 36

37 Now let s run incr1 ().count <- + 1; ( ) incr1 count 0 37

38 Now let s run incr1 ().count <-.count + 1; ( ) incr1 count 0 38

39 Now let s run incr1 ().count <-.count + 1; ( ) incr1 count 0 39

40 Now let s run incr1 ().count < ; ( ) incr1 count 0 40

41 Now let s run incr1 ().count < ; ( ) incr1 count 0 41

42 Now let s run incr1 ().count <- 1; ( ) incr1 count 0 42

43 Now let s run incr1 ().count <- 1; ( ) incr1 count 0 43

44 Now let s run incr1 () (); ( ) incr1 count 1 44

45 Now let s run incr1 () (); ( ) incr1 count 1 45

46 Now let s run incr1 () ( ) incr1 count 1 46

47 Now let s run incr1 () ( ) incr1 count 1 47

48 Now let s run incr1 ().count ( ) incr1 count 1 48

49 Now let s run incr1 ().count ( ) incr1 count 1 49

50 Now let s run incr1 () 1 incr1 ( ) count 1 50

51 Now let s run incr1 () 1 incr1 ( ) count 1 POP! 51

52 Now let s run incr1 () 1 incr1 count 1 DONE! 52

53 Now Let s run again let incr2 : unit -> int = () incr1 count 1 53

54 Wme passes

55 Aner creawng incr2 incr1 incr2 count 1 NOTE: the two different incr funcwons have separate local states because a new count record was created in each call to. count 0 55

56 One step further shows us how to create different instance of local state so that we can have several different counters. What if we want to bundle together several operawons that share the same local state? e.g. incr and decr operawons that work on the same counter 56

57 A Counter Object (* The type of counter objects *) type counter = { get : unit -> int; incr : unit -> unit; decr : unit -> unit; reset : unit -> unit; } (* Create a counter object with hidden state: *) let mk_counter () : counter = { get = ( ) ; incr = ( <- + 1) ; decr = ( <- - 1) ; reset = ( <- 0) ; } 57

58 let c1 = mk_counter () Stack mk_counter c1 Heap { } get incr decr reset <- + 1 count 1 <- 1 <- 0 58

59 Using Counter Objects (* a helper function to create a nice string for printing *) let _string (s:string) (i:int) = s ^ ". = " ^ (string_of_int i) ^ "\n" let c1 = mk_counter () let c2 = mk_counter () ;; print_string (_string "c1" (c1.get ())) ;; c1.incr () ;; c1.incr () ;; print_string (_string "c1" (c1.get ())) ;; c1.decr () ;; print_string (_string "c1" (c1.get ())) ;; c2.incr () ;; print_string (_string "c2" (c2.get ())) ;; c2.decr () ;; print_string (_string "c2" (c2.get ())) 59

60 GUI Design puong objects to work

61 Where we re going HW 6: Build a GUI library and client applicawon from scratch in OCaml Goals: Apply everything we ve seen so far to do some preqy serious programming PracWce with first- class func2ons and hidden state Illustrate the event- driven programming model Give you a feel for how GUI libraries (like Java s Swing) work Bridge to object- oriented programming

62 Where we re going HW 6: Build a GUI library and client applicawon from scratch in OCaml M T W R F Goals: HW 5 out TODAY Apply everything we ve seen so far to do some preqy serious Objects programming GUI HW 5 due HW 6 out GUI Illustrate the event- driven programming model PracWce with first- class func2ons and hidden state Spring Break! Give you a feel for how GUI libraries (like Java s Swing) work Bridge to object- oriented programming OCaml vs. Java Java Java Java HW 6 due Java Aner Spring Break: transiwon Midterm to Java 2 HW 7 out Advice: Finish Task 4 (at least) before break!

63 Building a GUI and GUI ApplicaWons

64 Have you ever used a GUI library (such as Java s Swing) to construct a user interface? 1. Yes 2. No

65 Step #1: Understand the Problem We don t want to build just one graphical applicawon: we want to make sure that our code is reusable. What are the concepts involved in GUI libraries and how do they relate to each other? How can we separate the various concerns on the project?

66 Designing a GUI library OCaml s Graphics library provides very simple primiwves for: CreaWng a window Drawing various shapes: points, lines, text, rectangles, circles, etc. Geong the mouse posiwon, whether the mouse buqon is pressed, what key is pressed, etc. See: hqp://caml.inria.fr/pub/docs/manual- ocaml/libref/graphics.html How do we go from that to a funcwoning, reusable GUI library? 66

67 Step 2, Interfaces: Project Architecture Project Architecture* *Note: Subsequent program snippets are color- coded according to this diagram. ApplicaWon Paint GUI Library Eventloop Widget Gctx NaWve graphics library OCaml s Graphics Module (graphics.cma) Goal of the GUI library: provide a consistent layer of abstracwon between the applicawon (Paint) and the Graphics module. 67

68 Step 2, Interfaces: Project Architecture* *Note: Subsequent program snippets are color- coded according to this diagram. ApplicaWon Paint GUI Library Eventloop Widget Gctx NaWve graphics library OCaml s Graphics Module (graphics.cma) Goal of the GUI library: provide a consistent layer of abstracwon between the applicawon (Paint) and the Graphics module. 68

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 17 Feb 28 th, 2014 Objects and GUI Design Where we re going HW 6: Build a GUI library and client applicaton from scratch in OCaml Available soon Due

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 22 March 14 th, 2016 Object Oriented Programming in Java Java Bootcamp tonight Announcements Monday, March 14 from 6-8pm in Levine 101 (Wu & Chen)

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 25 March 18, 2013 Subtyping and Dynamic Dispatch Announcements HW07 due tonight at midnight Weirich OH cancelled today Help your TAs make the most

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 24 March 18, 2016 The Java ASM What is the value of ans at the end of this program? Counter[] a = { new Counter(), new Counter() ; Counter[] b = {

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 3 August 31 st, 2015 Lists and Recursion Announcements Homework 1: OCaml Finger Exercises Due: Tuesday 9/8 at midnight Clickers: aoendance grades start

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 26 March 23, 2016 Inheritance and Dynamic Dispatch Chapter 24 Inheritance Example public class { private int x; public () { x = 0; } public void incby(int

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 19 February 26, 2016 GUI Library Design Chapter 18 Are you here today? 1. Yes Announcements HW05: GUI programming is available Due: THURSDAY March

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 24 March 24, 2014 Java ASM Interfaces and Subtyping Announcements HW 07 due tomorrow at midnight Exam 2, in class, a week from Friday (April 4th) The

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 22 March 14, 2018 Static Methods, Java Arrays Chapters 20 & 21 Announcements HW6: Java Programming (Pennstagram) Due: Tuesday the 20 th at 11:59pm

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques () Lecture 20 February 28, 2018 Transition to Java Announcements HW05: GUI programming Due: THURSDAY!! at 11:59:59pm Lots of TA office hours today Thursday See Piazza

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 21 October 21 st, 2015 Transi@on to Java Announcements HW5: GUI & Paint Due Tomorrow, October 22 nd at 11:59pm HW6: Java Programming (Pennstagram)

More information

CIS 120 Midterm II November 16, 2012 SOLUTIONS

CIS 120 Midterm II November 16, 2012 SOLUTIONS CIS 120 Midterm II November 16, 2012 SOLUTIONS 1 1. Java vs. OCaml (22 points) a. In OCaml, the proper way to check whether two string values s and t are structurally equal is: s == t s = t s.equals(t)

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 23 March 16, 2018 Arrays, Java ASM What is the value of ans at the end of this program? int[] a = {1, 2, 3, 4; int[] b = a; b[0] = 0; int ans = a[0];

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 26 March 26, 2015 Inheritance and Dynamic Dispatch Chapter 24 public interface Displaceable { public int getx(); public int gety(); public void move

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques () Lecture 13 February 12, 2018 Mutable State & Abstract Stack Machine Chapters 14 &15 Homework 4 Announcements due on February 20. Out this morning Midterm results

More information

CIS 120 Midterm II November 16, Name (printed): Pennkey (login id):

CIS 120 Midterm II November 16, Name (printed): Pennkey (login id): CIS 120 Midterm II November 16, 2012 Name (printed): Pennkey (login id): My signature below certifies that I have complied with the University of Pennsylvania s Code of Academic Integrity in completing

More information

PRINCIPLES OF SOFTWARE BIM209DESIGN AND DEVELOPMENT 00. WELCOME TO OBJECTVILLE. Speaking the Language of OO

PRINCIPLES OF SOFTWARE BIM209DESIGN AND DEVELOPMENT 00. WELCOME TO OBJECTVILLE. Speaking the Language of OO PRINCIPLES OF SOFTWARE BIM209DESIGN AND DEVELOPMENT 00. WELCOME TO OBJECTVILLE Speaking the Language of OO COURSE INFO Instructor : Alper Bilge TA : Gökhan Çıplak-Ahmet Alkılınç Time : Tuesdays 2-5pm Location

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 21 March 12, 2018 Java: Objects, Interfaces, Static Members Chapters 19 & 20 Announcements Java Bootcamp Tonight!! Towne 100, 6-8 pm HW06: Pennstagram

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 26 November 3, 2017 The Java ASM, Java Generics Chapter 24 Announcements HW7: Chat Server Available on Codio / InstrucNons on the web site Due Tuesday,

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 25 November 1, 2017 Inheritance and Dynamic Dispatch (Chapter 24) Announcements HW7: Chat Client Available Soon Due: Tuesday, November 14 th at 11:59pm

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 36 April 23, 2014 Overriding and Equality HW 10 has a HARD deadline Announcements You must submit by midnight, April 30 th Demo your project to your

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 24 October 29, 2018 Arrays, Java ASM Chapter 21 and 22 Announcements HW6: Java Programming (Pennstagram) Due TOMORROW at 11:59pm Reminder: please complete

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 21 March 17, 2014 Connec@ng OCaml to Java Announcements No Weirich OH today - > Wed 1-3PM instead Read Chapters 19-22 of the lecture notes HW07 available

More information

CIS 120 Midterm II November 8, Name (printed): Pennkey (login id):

CIS 120 Midterm II November 8, Name (printed): Pennkey (login id): CIS 120 Midterm II November 8, 2013 Name (printed): Pennkey (login id): My signature below certifies that I have complied with the University of Pennsylvania s Code of Academic Integrity in completing

More information

CIS 120 Midterm II November 8, 2013 SOLUTIONS

CIS 120 Midterm II November 8, 2013 SOLUTIONS CIS 120 Midterm II November 8, 2013 SOLUTIONS 1 1. Facts about OCaml and Java (15 points) For each part, circle true or false. a. T F The.equals method in Java is roughly similar to OCaml s = operator.

More information

Name: Pennkey: CIS 120 Midterm II November 18, 2011

Name: Pennkey: CIS 120 Midterm II November 18, 2011 Name: Pennkey: CIS 120 Midterm II November 18, 2011 1 /20 2 /20 3 /20 4 /20 5 /20 Total /100 Do not begin the exam until you are told to do so. You have 50 minutes to complete the exam. There are 100 total

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 35 November 30 th 2015 Design PaBerns Model / View / Controller Chapter 31 Game project grading Game Design Proposal Milestone Due: (12 points) Tuesday

More information

CS/ENGRD 2110 Object- Oriented Programming and Data Structures Fall 2012 Prof. Doug James

CS/ENGRD 2110 Object- Oriented Programming and Data Structures Fall 2012 Prof. Doug James CS/ENGRD 2110 Object- Oriented Programming and Data Structures Fall 2012 Prof. Doug James Lecture 1: Overview hip://courses.cs.cornell.edu/cs2110 1 Course Staff Instructor Doug James (djames@cs.cornell.edu)

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 28 March 25, 2013 ExcepDons Announcements HW 08 due tonight at midnight Weirich OH: 1:30 3PM today Midterm 2 is this Friday Towne 100 last names A

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 31 April 3, 2013 Overriding, Equality, and Casts Announcements HW 09 due Tuesday at midnight More informajon about exam 2 available on Friday Unfinished

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 21 March 2 nd, 2016 GUI: notifiers Transition to Java What is the type of xs? let r = {contents = 3} let xs = [(fun () -> r.contents

More information

CIS 120 Midterm II November 7, Name (printed): Pennkey (login id):

CIS 120 Midterm II November 7, Name (printed): Pennkey (login id): CIS 120 Midterm II November 7, 2014 Name (printed): Pennkey (login id): My signature below certifies that I have complied with the University of Pennsylvania s Code of Academic Integrity in completing

More information

Note: This is a miniassignment and the grading is automated. If you do not submit it correctly, you will receive at most half credit.

Note: This is a miniassignment and the grading is automated. If you do not submit it correctly, you will receive at most half credit. Com S 227 Spring 2018 Miniassignment 1 40 points Due Date: Thursday, March 8, 11:59 pm (midnight) Late deadline (25% penalty): Friday, March 9, 11:59 pm General information This assignment is to be done

More information

CS 455 Midterm Exam 1 Fall 2016 [Bono] Thursday, Sept. 29, 2016

CS 455 Midterm Exam 1 Fall 2016 [Bono] Thursday, Sept. 29, 2016 Name: USC NetID (e.g., ttrojan): CS 455 Midterm Exam 1 Fall 2016 [Bono] Thursday, Sept. 29, 2016 There are 5 problems on the exam, with 56 points total available. There are 10 pages to the exam (5 pages

More information

CS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2012 Thorsten Joachims

CS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2012 Thorsten Joachims CS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2012 Thorsten Joachims Lecture 1: Overview http://courses.cs.cornell.edu/cs2110 1 Course Staff Instructor Thorsten Joachims (tj@cs.cornell.edu)

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques () Lecture 12 February 7, 2018 Partiality, Sequencing, Records Chapters 12, 13 Midterm 1 This Friday in class Review session Tonight, 6 7:30 PM DRLB A1 Announcements

More information

CIS 120 Midterm II March 29, 2013 SOLUTIONS

CIS 120 Midterm II March 29, 2013 SOLUTIONS CIS 120 Midterm II March 29, 2013 SOLUTIONS 1 1. Java True/False (20 points) Circle T or F. a. T F In the Java ASM, object values are stored in the heap. b. T F In the Java ASM, method definitions are

More information

CSE413: Programming Languages and Implementation Racket structs Implementing languages with interpreters Implementing closures

CSE413: Programming Languages and Implementation Racket structs Implementing languages with interpreters Implementing closures CSE413: Programming Languages and Implementation Racket structs Implementing languages with interpreters Implementing closures Dan Grossman Fall 2014 Hi! I m not Hal J I love this stuff and have taught

More information

Lecture 1: CSE 373. Data Structures and Algorithms

Lecture 1: CSE 373. Data Structures and Algorithms Lecture 1: CSE 373 Data Structures and Algorithms Thanks to Kasey Champion, Ben Jones, Adam Blank, Michael Lee, Evan McCarty, Whitaker Brand, Stuart Reges, Zora Fung, Justin Hsia, and many others for sample

More information

CSE115 / CSE503 Introduction to Computer Science I. Dr. Carl Alphonce 343 Davis Hall Office hours:

CSE115 / CSE503 Introduction to Computer Science I. Dr. Carl Alphonce 343 Davis Hall Office hours: CSE115 / CSE503 Introduction to Computer Science I Dr. Carl Alphonce 343 Davis Hall alphonce@buffalo.edu Office hours: Thursday 12:00 PM 2:00 PM Friday 8:30 AM 10:30 AM OR request appointment via e-mail

More information

CS61BL. Lecture 1: Welcome to CS61BL! Intro to Java and OOP Testing Error-handling

CS61BL. Lecture 1: Welcome to CS61BL! Intro to Java and OOP Testing Error-handling CS61BL Lecture 1: Welcome to CS61BL! Intro to Java and OOP Testing Error-handling About me Name: Edwin Liao Email: edliao@berkeley.edu Office hours: Thursday 3pm - 5pm Friday 11am - 1pm 611 Soda Or by

More information

CS1004: Intro to CS in Java, Spring 2005

CS1004: Intro to CS in Java, Spring 2005 CS1004: Intro to CS in Java, Spring 2005 Lecture #13: Java OO cont d. Janak J Parekh janak@cs.columbia.edu Administrivia Homework due next week Problem #2 revisited Constructors, revisited Remember: a

More information

Name: Pennkey (eg, sweirich): CIS 120 Final Exam May 8, 2012

Name: Pennkey (eg, sweirich): CIS 120 Final Exam May 8, 2012 Name: Pennkey (eg, sweirich): CIS 120 Final Exam May 8, 2012 My signature below certifies that I have complied with the University of Pennsylvania s Code of Academic Integrity in completing this examination.

More information

Implementing Hash and AVL

Implementing Hash and AVL Implementing Hash and AVL Data Structures and Algorithms CSE 373 SP 18 - KASEY CHAMPION 1 Warm Up CSE 373 SP 18 - KASEY CHAMPION 2 Announcements 1. Go look at your HW 1 scores, seems a lot are missing

More information

CSE 143: Computer Programming II Summer 2017 HW5: Anagrams (due Thursday, August 3, :30pm)

CSE 143: Computer Programming II Summer 2017 HW5: Anagrams (due Thursday, August 3, :30pm) CSE 143: Computer Programming II Summer 2017 HW5: Anagrams (due Thursday, August 3, 2017 11:30pm) This assignment focuses on recursive backtracking. Turn in the following files using the link on the course

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 27 March 28, 2018 Java Generics Collections and Equality Chapters 25 & 26 Announcements HW7: Chat Server Available on Codio / Instructions on the web

More information

CSE 373 Spring 2010: Midterm #1 (closed book, closed notes, NO calculators allowed)

CSE 373 Spring 2010: Midterm #1 (closed book, closed notes, NO calculators allowed) Name: Email address: CSE 373 Spring 2010: Midterm #1 (closed book, closed notes, NO calculators allowed) Instructions: Read the directions for each question carefully before answering. We may give partial

More information

hw6, BFS, debugging CSE 331 Section 5 10/25/12 Slides by Kellen Donohue

hw6, BFS, debugging CSE 331 Section 5 10/25/12 Slides by Kellen Donohue hw6, BFS, debugging CSE 331 Section 5 10/25/12 Slides by Kellen Donohue Agenda hw4 being graded hw5 may be graded first, for feedback to be used on hw6 hw6 due next week Today hw6 BFS Debugging hashcode()

More information

Programming Languages and Techniques (CIS120e)

Programming Languages and Techniques (CIS120e) Programming Languages and Techniques (CIS120e) Lecture 25 Nov. 8, 2010 ExcepEons and the Java Abstract Stack Machine Announcements Homework 8 (SpellChecker) is due Nov 15th. Midterm 2 is this Friday, November

More information

Objects. Prof. Clarkson Fall ob-ject: to feel distaste for something Webster's Dictionary. Today s music: Kung Fu Fighting by CeeLo Green

Objects. Prof. Clarkson Fall ob-ject: to feel distaste for something Webster's Dictionary. Today s music: Kung Fu Fighting by CeeLo Green Objects ob-ject: to feel distaste for something Webster's Dictionary Prof. Clarkson Fall 2016 Today s music: Kung Fu Fighting by CeeLo Green Review Currently in 3110: Advanced topics Futures Monads Proofs

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 33 April 16, 2014 Swing I: Drawing and Event Handling Set set = new TreeSet (); Map map = new TreeMap

More information

CSE : Python Programming

CSE : Python Programming CSE 399-004: Python Programming Lecture 08: Graphical User Interfaces with wxpython March 12, 2005 http://www.seas.upenn.edu/~cse39904/ Plan for today and next time Today: wxpython (part 1) Aside: Arguments

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 28 March 30, 2016 Collections and Equality Chapter 26 Announcements Dr. Steve Zdancewic is guest lecturing today He teaches CIS 120 in the Fall Midterm

More information

Exceptions in Java

Exceptions in Java Exceptions in Java 3-10-2005 Opening Discussion Do you have any questions about the quiz? What did we talk about last class? Do you have any code to show? Do you have any questions about the assignment?

More information

Lab 4: Imperative & Debugging 12:00 PM, Feb 14, 2018

Lab 4: Imperative & Debugging 12:00 PM, Feb 14, 2018 CS18 Integrated Introduction to Computer Science Fisler, Nelson Lab 4: Imperative & Debugging 12:00 PM, Feb 14, 2018 Contents 1 Imperative Programming 1 1.1 Sky High Grades......................................

More information

Lecture 13. Call Stacks & Debugging

Lecture 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 information

CIS 120 Final Exam May 7, Name (printed): Pennkey (login id):

CIS 120 Final Exam May 7, Name (printed): Pennkey (login id): CIS 120 Final Exam May 7, 2014 Name (printed): Pennkey (login id): My signature below certifies that I have complied with the University of Pennsylvania s Code of Academic Integrity in completing this

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 32 April 9, 2018 Swing I: Drawing and Event Handling Chapter 29 HW8: Spellchecker Available on the web site Due: Tuesday! Announcements Parsing, working

More information

Outline. Logistics. Logistics. Principles of Software (CSCI 2600) Spring Logistics csci2600/

Outline. Logistics. Logistics. Principles of Software (CSCI 2600) Spring Logistics  csci2600/ Outline Principles of Software (CSCI 600) Spring 018 http://www.cs.rpi.edu/academics/courses/spring18/csci600/ Konstantin Kuzmin, kuzmik@cs.rpi.edu Office hours: Monday and Thursday 4:00 pm - 5:30 pm Mailing

More information

CIS 120 Midterm II March 31, 2017 SOLUTIONS

CIS 120 Midterm II March 31, 2017 SOLUTIONS CIS 120 Midterm II March 31, 2017 SOLUTIONS 1 1. OCaml and Java (14 points) Check one box for each part. a. The following OCaml function will terminate by exhausting stack space if called as loop 10: let

More information

Project Report Number Plate Recognition

Project Report Number Plate Recognition Project Report Number Plate Recognition Ribemont Francois Supervisor: Nigel Whyte April 17, 2012 Contents 1 Introduction............................... 2 2 Description of Submitted Project...................

More information

University of Massachusetts Amherst, Electrical and Computer Engineering

University of Massachusetts Amherst, Electrical and Computer Engineering University of Massachusetts Amherst, Electrical and Computer Engineering ECE 122 Midterm Exam 1 Makeup Answer key March 2, 2018 Instructions: Closed book, Calculators allowed; Duration:120 minutes; Write

More information

Announcements. 1. Forms to return today after class:

Announcements. 1. Forms to return today after class: Announcements Handouts (3) to pick up 1. Forms to return today after class: Pretest (take during class later) Laptop information form (fill out during class later) Academic honesty form (must sign) 2.

More information

APCS Semester #1 Final Exam Practice Problems

APCS Semester #1 Final Exam Practice Problems Name: Date: Per: AP Computer Science, Mr. Ferraro APCS Semester #1 Final Exam Practice Problems The problems here are to get you thinking about topics we ve visited thus far in preparation for the semester

More information

Lecture 9. Memory and Call Stacks

Lecture 9. Memory and Call Stacks Lecture 9 Memory and Call Stacks Announcements for Today Assignment 1 Reading We have started grading! Should have your grade tomorrow morning Resubmit until correct If you were close Will get feedback

More information

Announcements. Lab 03 inbase late submissions Midterm #1 Friday. Project 2 is posted. Covers everything through basics of OOP

Announcements. Lab 03 inbase late submissions Midterm #1 Friday. Project 2 is posted. Covers everything through basics of OOP Announcements Lab 03 inbase late submissions Midterm #1 Friday Covers everything through basics of OOP Project 2 is posted Due next Wednesday All about nested loops good exam practice Coding style is part

More information

CSE 143: Computer Programming II Winter 2019 HW6: AnagramSolver (due Thursday, Feb 28, :30pm)

CSE 143: Computer Programming II Winter 2019 HW6: AnagramSolver (due Thursday, Feb 28, :30pm) CSE 143: Computer Programming II Winter 2019 HW6: AnagramSolver (due Thursday, Feb 28, 2019 11:30pm) This assignment focuses on recursive backtracking. Turn in the following files using the link on the

More information

Programming Languages and Techniques (CIS120e)

Programming Languages and Techniques (CIS120e) Programming Languages and Techniques (CIS120e) Lecture 10 Sep 29, 2010 Abstract Stack Machine & First- Class FuncGons Announcements Homework 3 is due tonight at 11:59:59pm. Homework 4 will be available

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 10 February 2, 2018 Abstract types: Sets Chapter 10 Announcements Homework 3 due Tuesday at 11:59:59pm Midterm 1 Friday, February 9, in class Covers

More information

Warmup January 9th, What is the value of the following C expression? 8*9 % 10/ 2

Warmup January 9th, What is the value of the following C expression? 8*9 % 10/ 2 Warmup January 9th, 2018 What is the value of the following C expression? 8*9 % 10/ 2 Warmup January 11th, 2018 What is the value of the following C expression? ( -42 3!= 3) && ( -3 < -2 < -1) Warmup January

More information

Claremont McKenna College Computer Science

Claremont McKenna College Computer Science Claremont McKenna College Computer Science CS 51 Handout 4: Problem Set 4 February 10, 2011 This problem set is due 11:50pm on Wednesday, February 16. As usual, you may hand in yours until I make my solutions

More information

ENVIRONMENT MODEL: FUNCTIONS, DATA 18

ENVIRONMENT MODEL: FUNCTIONS, DATA 18 ENVIRONMENT MODEL: FUNCTIONS, DATA 18 COMPUTER SCIENCE 61A Jon Kotker and Tom Magrino July 18, 2012 1 Motivation Yesterday, we introduced the environment model of computation as an alternative to the earlier

More information

Mutable Data Types. Prof. Clarkson Fall A New Despair Mutability Strikes Back Return of Imperative Programming

Mutable Data Types. Prof. Clarkson Fall A New Despair Mutability Strikes Back Return of Imperative Programming Mutable Data Types A New Despair Mutability Strikes Back Return of Imperative Programming Prof. Clarkson Fall 2017 Today s music: The Imperial March from the soundtrack to Star Wars, Episode V: The Empire

More information

Administration. Exceptions. Leftovers. Agenda. When Things Go Wrong. Handling Errors. CS 99 Summer 2000 Michael Clarkson Lecture 11

Administration. Exceptions. Leftovers. Agenda. When Things Go Wrong. Handling Errors. CS 99 Summer 2000 Michael Clarkson Lecture 11 Administration Exceptions CS 99 Summer 2000 Michael Clarkson Lecture 11 Lab 10 due tomorrow No lab tomorrow Work on final projects Remaining office hours Rick: today 2-3 Michael: Thursday 10-noon, Monday

More information

Midterm Exam 2 CS 455, Spring 2011

Midterm Exam 2 CS 455, Spring 2011 Name: USC loginid (e.g., ttrojan): Midterm Exam 2 CS 455, Spring 2011 March 31, 2011 There are 6 problems on the exam, with 50 points total available. There are 7 pages to the exam, including this one;

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 34 April 11, 2016 Swing II: Inner Classes and Layout Announcements (Review) Final exam: May 2, 3-5PM If you have two finals at the same time, you can

More information

CS61C : Machine Structures

CS61C : Machine Structures inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 4 C Pointers 2004-09-08 Lecturer PSOE Dan Garcia www.cs.berkeley.edu/~ddgarcia Cal flies over Air Force We re ranked 13 th in the US and

More information

CSE 113 A. Announcements - Lab

CSE 113 A. Announcements - Lab CSE 113 A February 21-25, 2011 Announcements - Lab Lab 1, 2, 3, 4; Practice Assignment 1, 2, 3, 4 grades are available in Web-CAT look under Results -> Past Results and if looking for Lab 1, make sure

More information

Announcements/Follow-ups

Announcements/Follow-ups Announcements/Follow-ups Midterm #2 Friday Everything up to and including today Review section tomorrow Study set # 6 online answers posted later today P5 due next Tuesday A good way to study Style omit

More information

Lecture 7. Memory in Python

Lecture 7. Memory in Python Lecture 7 Memory in Python Announcements For This Lecture Readings Reread Chapter 3 No reading for Thursday Lab Work on Assignment Credit when submit A Nothing else to do Assignment Moved to Fri, Sep.

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 21 March 6 th, 2015 Transi@on to Java CIS 120 Overview Declara@ve (Func@onal) programming persistent data structures recursion is main control structure

More information

About this exam review

About this exam review Final Exam Review About this exam review I ve prepared an outline of the material covered in class May not be totally complete! Exam may ask about things that were covered in class but not in this review

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 11 February 5, 2018 Review: Abstract types Finite Maps Homework 3 due tomorrow at 11:59:59pm Announcements (Homework 4 is due Tuesday, 2/20, and won

More information

CSE373 Fall 2013, Second Midterm Examination November 15, 2013

CSE373 Fall 2013, Second Midterm Examination November 15, 2013 CSE373 Fall 2013, Second Midterm Examination November 15, 2013 Please do not turn the page until the bell rings. Rules: The exam is closed-book, closed-note, closed calculator, closed electronics. Please

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 36 April 18, 2012 Swing IV: Mouse and Keyboard Input Announcements Lab this week is review (BRING QUESTIONS) Game Project is out, due Tuesday April

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques () Lecture 11 Feb 12, 2014 OpBons and Unit Announcements Homework 4 available on the web today due Tuesday, Feb 17 th n- body physics simulabon start early; see Piazza

More information

ob-ject: to feel distaste for something Webster's Dictionary

ob-ject: to feel distaste for something Webster's Dictionary Objects ob-ject: to feel distaste for something Webster's Dictionary Prof. Clarkson Fall 2017 Today s music: Kung Fu Fighting by CeeLo Green Review Currently in 3110: Advanced topics Futures Monads Today:

More information

Midterms Save the Dates!

Midterms Save the Dates! University of British Columbia CPSC 111, Intro to Computation Alan J. Hu if Statements Designing Classes Abstraction and Encapsulation Readings This Week s Reading: Review Ch 1-4 (that were previously

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 37 April 22, 2016 Encapsulation & Hashing How is the Game Project going so far? 1. not started 2. got an idea 3. submitted design proposal 4. started

More information

Inf1-OP. Inf1-OP Exam Review. Timothy Hospedales, adapting earlier version by Perdita Stevens and Ewan Klein. March 20, School of Informatics

Inf1-OP. Inf1-OP Exam Review. Timothy Hospedales, adapting earlier version by Perdita Stevens and Ewan Klein. March 20, School of Informatics Inf1-OP Inf1-OP Exam Review Timothy Hospedales, adapting earlier version by Perdita Stevens and Ewan Klein School of Informatics March 20, 2017 Overview Overview of examinable material: Lectures Week 1

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 20 Feb 29, 2012 Transi@on to Java II DON T PANIC Smoothing the transi@on Eclipse set- up instruc@ons in lab today/tomorrow First Java homework assignment

More information

Announcements. Representation Invariants and Abstraction Functions. Announcements. Outline

Announcements. Representation Invariants and Abstraction Functions. Announcements. Outline Announcements Representation Invariants and Abstraction Functions Exam 1 on Monday Feb. 26 th Closed book/phone/laptop, 2 cheat pages allowed Reasoning about code, Specifications, ADTs I will post Review

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 34 April 13, 2017 Model / View / Controller Chapter 31 How is the Game Project going so far? 1. not started 2. got an idea 3. submitted design proposal

More information

Note: This is a miniassignment and the grading is automated. If you do not submit it correctly, you will receive at most half credit.

Note: This is a miniassignment and the grading is automated. If you do not submit it correctly, you will receive at most half credit. Com S 227 Fall 2018 Miniassignment 1 40 points Due Date: Friday, October 12, 11:59 pm (midnight) Late deadline (25% penalty): Monday, October 15, 11:59 pm General information This assignment is to be done

More information

CSE 331 Software Design and Implementation. Lecture 19 GUI Events

CSE 331 Software Design and Implementation. Lecture 19 GUI Events CSE 331 Software Design and Implementation Lecture 19 GUI Events Leah Perlmutter / Summer 2018 Announcements Announcements Quiz 7 due Thursday 8/9 Homework 8 due Thursday 8/9 HW8 has a regression testing

More information

Encapsulation. Administrative Stuff. September 12, Writing Classes. Quick review of last lecture. Classes. Classes and Objects

Encapsulation. Administrative Stuff. September 12, Writing Classes. Quick review of last lecture. Classes. Classes and Objects Administrative Stuff September 12, 2007 HW3 is due on Friday No new HW will be out this week Next Tuesday we will have Midterm 1: Sep 18 @ 6:30 7:45pm. Location: Curtiss Hall 127 (classroom) On Monday

More information

Computer Science II Data Structures

Computer Science II Data Structures Computer Science II Data Structures Instructor Sukumar Ghosh 201P Maclean Hall Office hours: 10:30 AM 12:00 PM Mondays and Fridays Course Webpage homepage.cs.uiowa.edu/~ghosh/2116.html Course Syllabus

More information

CSE 303 Concepts and Tools for Software Development. Magdalena Balazinska Winter 2010 Lecture 27 Final Exam Revision

CSE 303 Concepts and Tools for Software Development. Magdalena Balazinska Winter 2010 Lecture 27 Final Exam Revision CSE 303 Concepts and Tools for Software Development Magdalena Balazinska Winter 2010 Lecture 27 Final Exam Revision Today Final review session! The final is not yet written, but you know roughly what it

More information

+ Inheritance. Sometimes we need to create new more specialized types that are similar to types we have already created.

+ Inheritance. Sometimes we need to create new more specialized types that are similar to types we have already created. + Inheritance + Inheritance Classes that we design in Java can be used to model some concept in our program. For example: Pokemon a = new Pokemon(); Pokemon b = new Pokemon() Sometimes we need to create

More information

Java Class Design. Eugeny Berkunsky, Computer Science dept., National University of Shipbuilding

Java Class Design. Eugeny Berkunsky, Computer Science dept., National University of Shipbuilding Java Class Design Eugeny Berkunsky, Computer Science dept., National University of Shipbuilding eugeny.berkunsky@gmail.com http://www.berkut.mk.ua Objectives Implement encapsulation Implement inheritance

More information