Recursive Data Types, null, and Linked Lists

Size: px
Start display at page:

Download "Recursive Data Types, null, and Linked Lists"

Transcription

1 Recursive Data Types,, and Linked Lists Lecture 16 "hello" "world"

2 Data Buddies Survey Undergraduate Survey Graduate Survey What is it? Anonymous survey provided by CRA open now through Oct. 31st Why is it important? Your feedback gives department realtime on curriculum, pedagogy, student support and cultural climate from student POV What s in it for you? Completion of survey means raffle entry and chance to win Amazon gift card (dept to raffle more than $1K in gift cards) ***Check your for more details***

3 Announcements Women and Minorities in CS Info Session & Discussion Monday 10/23 at 5pm in SN011 PS3 Due Tonight Wednesday (tomorrow) Office Hours Close at 5pm for Fall Break No review session

4 Warm-up on References

5 Compound Data Type Properties So far we've focused on classes with value-type properties, such as: string number boolean Properties can also be reference types, like: arrays objects class Person { name: string; pets: Dog[]; class Dog { name: string; breed: string;

6 Recursive Data Types Properties can refer to other objects of the same type Notice the class left. It has a property named and its value must be... another. class { : string; : ; This allows us to form a Linked List or a "chain" of objects. "hello" "world"

7 Linked List A classic, simple structure in Computer Science Formed by chaining together a sequence of objects The first node is referred to as the head We will work with it today for pedagogical purposes in exploring What is? More advanced uses of references Recursive types "hello" "world"

8 Where does a Linked List end? In the class to the right, if a refers to a, and the refers to another, how does it end? In a linked list, the very last 's value will refer to which means nothing or "there is no " class { : string; : ; To permit the to be a value, TypeScript requires us to give it a special type ( slide) "world"

9 Possibly References (1/3) Because the property may refer to another OR, the type of is specified as: Notice this looks like the boolean OR operator but is only a single vertical bar. class { : string; : ; Now our linked list's last can be assigned a reference.

10 Possibly References (2/3) TypeScript helps us avoid errors when we declare the property's type to be Notice in the example left, we are prevented from accessing the property of the because the node is possibly. Other languages (like Java) do not provide this protection which gives way to " pointer" errors.

11 Handling possibly References (3/3) Whenever you access a reference whose type is "<class> ", you must test to ensure the value is not in order to access it. let a: = new (); if (a.!== ) { print(a..); The above code compiles because TypeScript is smart enough to know that inside of this if-then statement a. cannot be.

12 Follow-Along: Constructing a Linked List let a: = new (); a. = "Linked"; a. = ; let b: = new (); b. = "Lists"; b. = a; let c: = new (); c. = "!!!"; c. = b; c b a if (c.!== && c..!== ) { print(c.); print(c..); print(c...); "!!!" "Lists" "Linked"

13 Forming a Human Linked List Live demo with UTAs as s The first will be the "tail" and its is Subsequent s will place one hand on the 's shoulder What is your length? Jane John Sally

14 Finding the length of a Human Linked List What is your length? Jane John Sally

15 Finding the length of a Human Linked List What is your length? What is your length? Jane John Sally

16 Finding the length of a Human Linked List What is your length? What is your length? What is your length? Jane John Sally

17 Finding the length of a Human Linked List What is your length? What is your length? 1 Jane John Sally

18 Finding the length of a Human Linked List What is your length? 2 Jane John Sally

19 Finding the length of a Human Linked List 3 Jane John Sally

20 Hands-on: Implement the Length Function 1. Open lec16's list-functions.ts and 01-list-playground-app.ts 2. If the node's property is a reference, return 1 3. Otherwise, return 1 + the result of calling length with the node 4. Check-in when your length function is properly implemented 5. Done? Try adding an additional to the list in the playground's makelist function

21 export function length(head: ): number { if (head. === ) { return 1; else { return 1 + length(head.);

22 Finding the length imperatively with a loop How might we address this without recursion? We can walk the list -by- until the node is and count up by 1 each time. function lengthloop(node: ): number { let count: number = 1; let current: = node; while (current.!== ) { current = current.; count++; return count; This is an example of when a single reference-type variable is reassigned to many different objects

23 Finding the length imperatively count 1 node function lengthloop(node: ): number { let count: number = 1; let current: = node; while (current.!== ) { current = current.; count++; return count; Jane John Sally We enter the function with node referring to the first node in our list. The count variable is initialized to 1.

24 Finding the length imperatively count 1 node current function lengthloop(node: ): number { let count: number = 1; let current: = node; while (current.!== ) { current = current.; count++; return count; Jane John Sally The current variable is setup and assigned a reference to the same object as the node parameter refers to.

25 Finding the length imperatively count 1 node current function lengthloop(node: ): number { let count: number = 1; let current: = node; while (current.!== ) { current = current.; count++; return count; Jane John Sally The current node's reference is not, so we'll enter the while loop.

26 Finding the length imperatively count 1 node current function lengthloop(node: ): number { let count: number = 1; let current: = node; while (current.!== ) { current = current.; count++; return count; Jane John Sally The current variable is reassigned to be its (the 2 nd node in this case).

27 Finding the length imperatively count 2 node current function lengthloop(node: ): number { let count: number = 1; let current: = node; while (current.!== ) { current = current.; count++; return count; Jane John Sally The count variable is incremented because we have walked to another node.

28 Finding the length imperatively count 2 node current function lengthloop(node: ): number { let count: number = 1; let current: = node; while (current.!== ) { current = current.; count++; return count; Jane John Sally The while condition is tested again. Is the current 's property? No, so we enter the loop.

29 Finding the length imperatively count 2 node current function lengthloop(node: ): number { let count: number = 1; let current: = node; while (current.!== ) { current = current.; count++; return count; Jane John Sally Current is reassigned to be a reference to its.

30 Finding the length imperatively count 3 node current function lengthloop(node: ): number { let count: number = 1; let current: = node; while (current.!== ) { current = current.; count++; return count; Jane John Sally The count variable is incremented by 1.

31 Finding the length imperatively count 3 node current function lengthloop(node: ): number { let count: number = 1; let current: = node; while (current.!== ) { current = current.; count++; return count; Jane John Sally We test again. Is the current 's property? Yes, so we do not loop again.

32 Finding the length imperatively count 3 node current function lengthloop(node: ): number { let count: number = 1; let current: = node; while (current.!== ) { current = current.; count++; return count; Jane John Sally Finally, count is returned to the caller of lengthloop.

33 Generating a string Representation of the List Let's write a function with the following requirements. When we call with a tail node (its property is ), it should return the node's concatenated with "-> ". For example: tostring( Sally ) returns "Sally -> " When we call with a non-tail node, it should ultimately return a string with every node's separated by -> arrows and end with. tostring( John Sally ) returns "John -> Sally -> "

34 Hands-on: Generating a string Representation 1. In 01-list-playground's main, try: print(tostring(list)); 2. In the tostring function of list-functions.ts 3. If the node's property is, use concatenation to return: "<node's value> -> " 4. Otherwise, use concatenation and recursion to return: "<node's value> -> <tostring of the node>" 5. Check-in on PollEverywhere when complete

35 export function tostring(node: ): string { if (node. === ) { return node. + " -> "; else { return node. + " -> " + tostring(node.);

36 Accessing the nth Index With an array we can return the 0-indexed nth element using: a[0], a[1], and so on Let's implement a get function with the same semantics and the following signature: get(node:, i: number): string For example: get(list, 0) returns "Jane" get(list, 2) returns "Sally" get(list, 40) returns Jane John Sally

37 Accessing the nth Index: There are 2 base cases 1. Is i === 0? 1. Yes: we've found the i th! 2. No, i > 0? Is the node? 1. Yes: there is no i th! No, the node is not. So let's try calling get again on the node and subtract 1 from i.

38 Follow-along: Implementing the get function export function get(node:, i: number): string { if (i === 0) { return node.; else if (node. === ) { return ; else { return get(node., i - 1);

39 Challenge Functions Copying a List Appending to a List Reversing a List Want a challenge? Try implementing the remaining functions in list-functions.ts

40 Challenge function solutions

41 copy export function copy(node: ): { if (node. === ) { return node; else { return link(node., copy(node.));

42 append export function append(: string, node: ): void { if (node. === ) { let tail: = new (); tail. = ; node. = tail; else { append(, node.);

43 reverse export function reverse(node: ): { if (node. === ) { return node; else { let reversed: = reverse(node.); node.. = node; node. = ; return reversed;

Object-Oriented Programming. Lecture 17

Object-Oriented Programming. Lecture 17 Object-Oriented Programming Lecture 17 Data Buddies Survey Undergraduate Survey http://bit.ly/csundergraduate Graduate Survey http://bit.ly/csgraduate What is it? Anonymous survey provided by CRA open

More information

FUNctions. Lecture 03 Spring 2018

FUNctions. Lecture 03 Spring 2018 FUNctions Lecture 03 Spring 2018 Announcements PS0 Due Tomorrow at 11:59pm WS1 Released soon, due next Friday 2/2 at 11:59pm Not quite understand a topic in lecture this week? Come to Tutoring Tomorrow

More information

Arrays and while Loops. Lecture 15 - COMP110 - Spring 2018

Arrays and while Loops. Lecture 15 - COMP110 - Spring 2018 Arrays and while Loops Lecture 15 - COMP110 - Spring 2018 Announcements PS04 - March Sadness - Due Sunday 3/25 at 11:59pm Review Session - Tomorrow at 5pm in SN014 Tutoring Friday from 12pm - 4pm in SN115

More information

boolean & if-then-else

boolean & if-then-else boolean & if-then-else Lecture 03 Step 1: Open VSCode and its Integrated Terminal Step 2: npm run pull Step 3: npm run start Step 4: Open another tab to pollev.com/comp110 Assignments Out Problem Set 0

More information

Fixing the "Black Screen of Death"

Fixing the Black Screen of Death Arrays Lecture 6 Fixing the "Black Screen of Death" When you see a screen that looks like the black screen to the right: The error may be in a file other than the one you are working on. The file with

More information

Classes, Types, and Objects

Classes, Types, and Objects Classes, Types, and Objects Lecture 6 npm run pull npm run start pollev.com/comp110 Announcements PS1 Due Friday Full EC deadline is TODAY 11:59pm Partial EC on Thurs Due Friday at 11:59pm Review Session

More information

Introduction to Lists and Recursion

Introduction to Lists and Recursion Introduction to Lists and Recursion Lecture 05 - Spring 2018 - COMP110 Navigate to localhost:3000/close - Then: npm run pull, npm start "All about that base (case)" ~Meghan Trainor All About That Bass

More information

Mouse / Keyboard Events & Anonymous Functions. Lecture 19

Mouse / Keyboard Events & Anonymous Functions. Lecture 19 Mouse / Keyboard Events & Anonymous Functions Lecture 19 Announcements Hack110 - Friday, November 17th starting at 7pm ending at 7am! Encouraged if you're loving programming, doing well in 110, and considering

More information

Data Classes & Objects and CSV Processing. Lecture 8 - Spring COMP110

Data Classes & Objects and CSV Processing. Lecture 8 - Spring COMP110 Data Classes & Objects and CSV Processing Lecture 8 - Spring 2018 - COMP110 Announcements WS02 Due Friday at 11:59pm Review Session Tomorrow (Wednesday) at 5pm in SN014 Uncertain with topics from the last

More information

Practice with if-then-else. COMP101 Lecture 7 Spring 2018

Practice with if-then-else. COMP101 Lecture 7 Spring 2018 Practice with if-then-else COMP101 Lecture 7 Spring 2018 Announcements PS01 - Due Friday at 11:59pm 3 parts, each in increasing difficulty. You will submit individually for each. Tutoring - Tomorrow from

More information

Sorting, Searching and Array's Built-in Methods. Lecture 16 COMP110 Spring 2018

Sorting, Searching and Array's Built-in Methods. Lecture 16 COMP110 Spring 2018 Sorting, Searching and Array's Built-in Methods Lecture 16 COMP110 Spring 2018 Warm-up 1: What are the elements of a? let a: number[] = [ 2 ]; // Notice initial element 2 let i: number = 0; while (i

More information

Data Types and the main Function

Data Types and the main Function COMP101 - UNC Data Types and the main Function Lecture 03 Announcements PS0 Card for Someone Special Released TODAY, due next Wednesday 9/5 Office Hours If your software has issues today, come to office

More information

VSCode: Open Project -> View Terminal -> npm run pull -> npm start. while Loops. Lecture 09. Don t Stop Til You Get Enough

VSCode: Open Project -> View Terminal -> npm run pull -> npm start. while Loops. Lecture 09. Don t Stop Til You Get Enough VSCode: Open Project -> View Terminal -> npm run pull -> npm start while Loops Lecture 09 Don t Stop Til You Get Enough Announcements New PS posted! Split into two parts Due Sunday at midnight Quiz this

More information

Chapter 4 Defining Classes I

Chapter 4 Defining Classes I Chapter 4 Defining Classes I This chapter introduces the idea that students can create their own classes and therefore their own objects. Introduced is the idea of methods and instance variables as the

More information

Outline. Announcements. Homework 2. Boolean expressions 10/12/2007. Announcements Homework 2 questions. Boolean expression

Outline. Announcements. Homework 2. Boolean expressions 10/12/2007. Announcements Homework 2 questions. Boolean expression Outline ECS 10 10/8 Announcements Homework 2 questions Boolean expressions If/else statements State variables and avoiding sys.exit( ) Example: Coin flipping (if time permits) Announcements Professor Amenta

More information

Object-Oriented Programming

Object-Oriented Programming Object-Oriented Programming Methods and Constructors Lecture 18 - Fall 2018 BEFORE npm run pull -- RUN: npm i --save introcs Announcements Build Your Own Bracket PS5 Due Weds 11/28 at 11:59pm Apply to

More information

CS61B Lecture #2. Public Service Announcements:

CS61B Lecture #2. Public Service Announcements: CS61B Lecture #2 Please make sure you have obtained an account, run register, and finished the survey today. In the future (next week), the password required for surveys and such will be your account password

More information

(1) Students will be able to explain basic architecture and components of digital computers and networks, and basic programming language features.

(1) Students will be able to explain basic architecture and components of digital computers and networks, and basic programming language features. Content/Discipline Java Manhattan Center for Science and Math High School Mathematics Department Curriculum Marking Period 1 Topic and Essential Question JSS (1) What are computers? (2) What is hardware

More information

VSCode: Open Project -> View Terminal -> npm run pull -> npm start. Lecture 16

VSCode: Open Project -> View Terminal -> npm run pull -> npm start. Lecture 16 VSCode: Open Project -> View Terminal -> npm run pull -> npm start for Loops Lecture 16 Don t Stop Believin I would feel excited and hype because this song is a classic 101 student Announcements Quiz 2

More information

Mobile App:IT. Methods & Classes

Mobile App:IT. Methods & Classes Mobile App:IT Methods & Classes WHAT IS A METHOD? - A method is a set of code which is referred to by name and can be called (invoked) at any point in a program simply by utilizing the method's name. -

More information

boolean Expressions Relational and Equality Operators and if-then-else Conditional Control Statement

boolean Expressions Relational and Equality Operators and if-then-else Conditional Control Statement boolean Expressions Relational and Equality Operators and if-then-else Conditional Control Statement Go to poll.unc.edu Sign-in via this website then go to pollev.com/compunc VSCode: Open Project -> View

More information

CS61C Machine Structures. Lecture 3 Introduction to the C Programming Language. 1/23/2006 John Wawrzynek. www-inst.eecs.berkeley.

CS61C Machine Structures. Lecture 3 Introduction to the C Programming Language. 1/23/2006 John Wawrzynek. www-inst.eecs.berkeley. CS61C Machine Structures Lecture 3 Introduction to the C Programming Language 1/23/2006 John Wawrzynek (www.cs.berkeley.edu/~johnw) www-inst.eecs.berkeley.edu/~cs61c/ CS 61C L03 Introduction to C (1) Administrivia

More information

npm run pull npm start

npm run pull npm start 1. Open Visual Studio Code 2. At the top click on View->Integrated Terminal (if not already open) 3. In the terminal, first run: npm run pull 4. After this finishes run: npm start For Loops Lecture 14

More information

Function Literals and Type Inference. Lecture 14 Spring 2018 COMP110

Function Literals and Type Inference. Lecture 14 Spring 2018 COMP110 Function Literals and Type Inference Lecture 14 Spring 2018 COMP110 0. What is the printed output when main runs? export let main = async () => { let xs = listify("great","day","to","be","a","tar!","heel!","daggum");

More information

logical operators and else-if statements

logical operators and else-if statements logical operators and else-if statements Lecture 5 Step 0: TODAY open http://localhost:3000/close -- if this errors that's OK / expected Step 1: Open VSCode and its Integrated Terminal Step 2: npm run

More information

An Brief Introduction to a web browser's Document Object Model (DOM) Lecture 24

An Brief Introduction to a web browser's Document Object Model (DOM) Lecture 24 An Brief Introduction to a web browser's Document Object Model (DOM) Lecture 24 Midterm 1 Scores Review Sessions Go Over Midterm 1 Didn't feel like the midterm went well? Had questions? Come review the

More information

2D Array Practice. Lecture 26

2D Array Practice. Lecture 26 2D Array Practice Lecture 26 Announcements Worksheet 6 and Problem Set 6 Posted to COMP110.com Final Deliverables of the Semester! PS6 - Compstagram Demo Regular Review Session Schedule General - Wednesday

More information

npm run pull npm start

npm run pull npm start 1. Open Visual Studio Code 2. At the top click on View->Integrated Terminal (if not already open) 3. In the terminal, first run: npm run pull 4. After this finishes run: npm start Loops Lecture 09 Don

More information

News and information! Review: Java Programs! Feedback after Lecture 2! Dead-lines for the first two lab assignment have been posted.!

News and information! Review: Java Programs! Feedback after Lecture 2! Dead-lines for the first two lab assignment have been posted.! True object-oriented programming: Dynamic Objects Reference Variables D0010E Object-Oriented Programming and Design Lecture 3 Static Object-Oriented Programming UML" knows-about Eckel: 30-31, 41-46, 107-111,

More information

Functions as Parameters & Functional Interfaces. Lecture 12 COMP110 Spring 2018

Functions as Parameters & Functional Interfaces. Lecture 12 COMP110 Spring 2018 Functions as Parameters & Functional Interfaces Lecture 12 COMP110 Spring 2018 Announcements Next problem set will post soon and be due before Spring Break. More practice with recursive functions. Next

More information

CS61B Lecture #6: Arrays

CS61B Lecture #6: Arrays CS61B Lecture #6: Arrays Readings for Monday : Chapters 2, 4 of Head First Java (5 also useful, but its really review). Upcoming readings : Chapters 7, 8 of Head First Java. Public Service Announcement.

More information

Sorting and Searching. Lecture 14

Sorting and Searching. Lecture 14 Sorting and Searching Lecture 14 Announcements WS4 - Due Today PS3 - Due next Tuesday. This one increases in difficulty as you move through it. Start now! Warm-up #1: What are the elements of array numbers

More information

CSC 111 Introduction to Computer Science (Section C)

CSC 111 Introduction to Computer Science (Section C) CSC 111 Introduction to Computer Science (Section C) Course Description: (4h) Lecture and laboratory. Rigorous introduction to the process of algorithmic problem solving and programming in a modern programming

More information

CprE 288 Introduction to Embedded Systems Exam 1 Review. 1

CprE 288 Introduction to Embedded Systems Exam 1 Review.  1 CprE 288 Introduction to Embedded Systems Exam 1 Review http://class.ece.iastate.edu/cpre288 1 Overview of Today s Lecture Announcements Exam 1 Review http://class.ece.iastate.edu/cpre288 2 Announcements

More information

06 - Building Lists Recursively. Spring 2018 COMP110

06 - Building Lists Recursively. Spring 2018 COMP110 06 - Building Lists Recursively Spring 2018 COMP110 Announcements Review Session: Tomorrow Night at 5pm in SN014 Tutoring: Friday from 12-4pm in SN115 PS01 On Point Functions Due Sunday at 11:59pm Midterm

More information

CompSci 101 Introduction to Computer Science

CompSci 101 Introduction to Computer Science CompSci 101 Introduction to Computer Science April 21, 2016 Prof. Rodger ACM Meeting Duke ACM is the student chapter of the professional organization for Computer Scientists Election and matching up with

More information

Review! * follows a pointer to its value! & gets the address of a variable! Pearce, Summer 2010 UCB! ! int x = 1000; Pearce, Summer 2010 UCB!

Review! * follows a pointer to its value! & gets the address of a variable! Pearce, Summer 2010 UCB! ! int x = 1000; Pearce, Summer 2010 UCB! CS61C L03 Introduction to C (pt 2) (1)! inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 3 Introduction to C (pt 2) 2010-06-23!!!Instructor Paul Pearce! The typical! development cycle!

More information

CS171:Introduction to Computer Science II

CS171:Introduction to Computer Science II CS171:Introduction to Computer Science II Department of Mathematics and Computer Science Li Xiong 9/7/2012 1 Announcement Introductory/Eclipse Lab, Friday, Sep 7, 2-3pm (today) Hw1 to be assigned Monday,

More information

CS61C : Machine Structures

CS61C : Machine Structures inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 3 Introduction to C (pt 2) 2010-06-23! C help session: Tonight 7:00-9:00pm @ 306 Soda!!!Instructor Paul Pearce! The typical! development

More information

lecture24: Disjoint Sets

lecture24: Disjoint Sets lecture24: Largely based on slides by Cinda Heeren CS 225 UIUC 22nd July, 2013 Announcements mp6 due tonight mp7 out soon! mt3 tomorrow night (7/23) Optional review instead of lab tomorrow Code Challenge

More information

CSC207 Quiz 1 Solutions Monday 6 February 2017, 12:15 PM. 1. (A) (B) (C) (D) (E) 7. Nothing, does not run true false

CSC207 Quiz 1 Solutions Monday 6 February 2017, 12:15 PM. 1. (A) (B) (C) (D) (E) 7. Nothing, does not run true false CSC207 Quiz 1 Solutions Monday 6 February 2017, 12:15 PM Student Number: Circle the lecture section in which you are enrolled L0101 (WF12) L0201 (WF1) L5101 (W6) Please indicate your answers in the table

More information

G Programming Languages - Fall 2012

G Programming Languages - Fall 2012 G22.2110-003 Programming Languages - Fall 2012 Lecture 4 Thomas Wies New York University Review Last week Control Structures Selection Loops Adding Invariants Outline Subprograms Calling Sequences Parameter

More information

CS 61B Data Structures and Programming Methodology. June David Sun

CS 61B Data Structures and Programming Methodology. June David Sun CS 61B Data Structures and Programming Methodology June 25 2008 David Sun Announcements Visit 387 Soda to arrange for after hours access to Soda Hall. Computer Science Undergraduate Association event:

More information

CS 4110 Programming Languages & Logics

CS 4110 Programming Languages & Logics CS 4110 Programming Languages & Logics Lecture 38 Typed Assembly Language 30 November 2012 Schedule 2 Monday Typed Assembly Language Wednesday Polymorphism Stack Types Today Compilation Course Review Certi

More information

OOP Subtyping. Lecture 20

OOP Subtyping. Lecture 20 OOP Subtyping Lecture 20 Announcements WS05 - Posted yesterday, due Wednesday 11/8 at 11:59pm Explores recursion and object-oriented programming fundamentals Warm-up: What is printed? interface Transform

More information

Pull Lecture Materials and Open PollEv. Poll Everywhere: pollev.com/comp110. Lecture 12. else-if and while loops. Once in a while

Pull Lecture Materials and Open PollEv. Poll Everywhere: pollev.com/comp110. Lecture 12. else-if and while loops. Once in a while Pull Lecture Materials and Open PollEv Poll Everywhere: pollev.com/comp110 Lecture 12 else-if and while loops Once in a while Fall 2016 if-then-else Statements General form of an if-then-else statement:

More information

Object Oriented Programming and Design in Java. Session 2 Instructor: Bert Huang

Object Oriented Programming and Design in Java. Session 2 Instructor: Bert Huang Object Oriented Programming and Design in Java Session 2 Instructor: Bert Huang Announcements TA: Yipeng Huang, yh2315, Mon 4-6 OH on MICE clarification Next Monday's class canceled for Distinguished Lecture:

More information

CS 4110 Programming Languages & Logics. Lecture 35 Typed Assembly Language

CS 4110 Programming Languages & Logics. Lecture 35 Typed Assembly Language CS 4110 Programming Languages & Logics Lecture 35 Typed Assembly Language 1 December 2014 Announcements 2 Foster Office Hours today 4-5pm Optional Homework 10 out Final practice problems out this week

More information

Class Information ANNOUCEMENTS

Class Information ANNOUCEMENTS Class Information ANNOUCEMENTS Third homework due TODAY at 11:59pm. Extension? First project has been posted, due Monday October 23, 11:59pm. Midterm exam: Friday, October 27, in class. Don t forget to

More information

First Haskell Exercises

First Haskell Exercises First Haskell Exercises CS110 November 23, 2016 Although it is possible to install Haskell on your computer, we want to get started quickly, so we will be using an online Haskell programming system (also

More information

CS 106B, Lecture 1 Introduction to C++

CS 106B, Lecture 1 Introduction to C++ CS 106B, Lecture 1 Introduction to C++ reading: Programming Abstractions in C++, Chapters 1 & 2 This document is copyright (C) Stanford Computer Science and Ashley Marty Stepp, Taylor, licensed under Creative

More information

Lexical Considerations

Lexical Considerations Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Fall 2005 Handout 6 Decaf Language Wednesday, September 7 The project for the course is to write a

More information

Announcements. Java Review. More Announcements. Today. Assembly Language. Machine Language

Announcements. Java Review. More Announcements. Today. Assembly Language. Machine Language Announcements Java Review Java Bootcamp Another session tonight 7-9 in B7 Upson tutorial & solutions also available online Assignment 1 has been posted and is due Monday, July 2, 11:59pm Lecture 2 CS211

More information

CS 314 Principles of Programming Languages. Lecture 9

CS 314 Principles of Programming Languages. Lecture 9 CS 314 Principles of Programming Languages Lecture 9 Zheng Zhang Department of Computer Science Rutgers University Wednesday 5 th October, 2016 Zheng Zhang 1 CS@Rutgers University Class Information Homework

More information

Control Statements. if for while

Control Statements. if for while Control Structures Control Statements if for while Control Statements if for while This This is is called called the the initialization initialization statement statement and and is is performed performed

More information

Computer Science E-119 Fall Problem Set 3. Due before lecture on Wednesday, October 31

Computer Science E-119 Fall Problem Set 3. Due before lecture on Wednesday, October 31 Due before lecture on Wednesday, October 31 Getting Started To get the files that you will need for this problem set, log into nice.harvard.edu and enter the following command: gethw 3 This will create

More information

To figure this out we need a more precise understanding of how ML works

To figure this out we need a more precise understanding of how ML works Announcements: What are the following numbers: 74/2/70/17 (2:30,2:30,3:35,7:30) PS2 due Thursday 9/20 11:59PM Guest lecture on Tuesday 9/25 o No RDZ office hours next Friday, I am on travel A brief comment

More information

Lec 3. Compilers, Debugging, Hello World, and Variables

Lec 3. Compilers, Debugging, Hello World, and Variables Lec 3 Compilers, Debugging, Hello World, and Variables Announcements First book reading due tonight at midnight Complete 80% of all activities to get 100% HW1 due Saturday at midnight Lab hours posted

More information

Object-Oriented Design Lecture 3 CSU 370 Fall 2007 (Pucella) Friday, Sep 14, 2007

Object-Oriented Design Lecture 3 CSU 370 Fall 2007 (Pucella) Friday, Sep 14, 2007 Object-Oriented Design Lecture 3 CSU 370 Fall 2007 (Pucella) Friday, Sep 14, 2007 Java We will be programming in Java in this course. Partly because it is a reasonable language, and partly because you

More information

Compiler Construction (Compilerbau)

Compiler Construction (Compilerbau) Compiler Construction (Compilerbau) Dr. Torsten Grust Dept. of Computer and Information Science University of Konstanz Winter 2003/03 c 2002/03 T.Grust Compiler Construction 0 Introduction to this Course

More information

Administration. Classes. Objects Part II. Agenda. Review: Object References. Object Aliases. CS 99 Summer 2000 Michael Clarkson Lecture 7

Administration. Classes. Objects Part II. Agenda. Review: Object References. Object Aliases. CS 99 Summer 2000 Michael Clarkson Lecture 7 Administration Classes CS 99 Summer 2000 Michael Clarkson Lecture 7 Lab 7 due tomorrow Question: Lab 6.equals( SquareRoot )? Lab 8 posted today Prelim 2 in six days! Covers two weeks of material: lectures

More information

Lecture 7. Instructor: Craig Duckett OUTPUT

Lecture 7. Instructor: Craig Duckett OUTPUT Lecture 7 Instructor: Craig Duckett OUTPUT Lecture 7 Announcements ASSIGNMENT 2 is due LECTURE 8 NEXT LECTURE uploaded to StudentTracker by midnight Assignment 2!!! Assignment Dates (By Due Date) Assignment

More information

npm run pull npm start

npm run pull npm start 1. Open Visual Studio Code 2. At the top click on View->Integrated Terminal (if not already open) 3. In the terminal, first run: npm run pull 4. After this finishes run: npm start Strings Lecture 05 No

More information

Public-Service Announcements

Public-Service Announcements Public-Service Announcements The Computer Science Undergraduate Association(CSUA) welcomes all students interested in computer science to join them at their Welcome BBQ on Saturday, 8/27 from 12-4pm at

More information

Lecture 5: Implementing Lists, Version 1

Lecture 5: Implementing Lists, Version 1 CS18 Integrated Introduction to Computer Science Fisler, Nelson Lecture 5: Implementing Lists, Version 1 Contents 1 Implementing Lists 1 2 Methods 2 2.1 isempty...........................................

More information

lecture09: Linked Lists

lecture09: Linked Lists lecture09: Largely based on slides by Cinda Heeren CS 225 UIUC 24th June, 2013 Announcements mp2 due tonight mt1 tomorrow night! mt1 review instead of lab tomorrow morning mp3 released tonight, mp3.1 extra

More information

Principle of Complier Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore

Principle of Complier Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore Principle of Complier Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore Lecture - 20 Intermediate code generation Part-4 Run-time environments

More information

COMPUTER SCIENCE IN THE NEWS (TWO YEARS AGO) CS61A Lecture 16 Mutable Data Structures TODAY REVIEW: OOP CLASS DESIGN 7/24/2012

COMPUTER SCIENCE IN THE NEWS (TWO YEARS AGO) CS61A Lecture 16 Mutable Data Structures TODAY REVIEW: OOP CLASS DESIGN 7/24/2012 COMPUTER SCIENCE IN THE NEWS (TWO YEARS AGO) CS61A Lecture 16 Mutable Data Structures Jom Magrotker UC Berkeley EECS July 16, 2012 http://articles.nydailynews.com/2010 04 27/news/27062899_1_marks death

More information

Unit 10: Data Structures CS 101, Fall 2018

Unit 10: Data Structures CS 101, Fall 2018 Unit 10: Data Structures CS 101, Fall 2018 Learning Objectives After completing this unit, you should be able to: Define and give everyday examples of arrays, stacks, queues, and trees. Explain what a

More information

You must pass the final exam to pass the course.

You must pass the final exam to pass the course. Computer Science Technology Department Houston Community College System Department Website: http://csci.hccs.cc.tx.us CRN: 46876 978-1-4239-0146-4 1-4239-0146-0 Semester: Fall 2010 Campus and Room: Stafford

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

61A 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 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 information

Repetition Structures

Repetition Structures Repetition Structures Chapter 5 Fall 2016, CSUS Introduction to Repetition Structures Chapter 5.1 1 Introduction to Repetition Structures A repetition structure causes a statement or set of statements

More information

Lexical Considerations

Lexical Considerations Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2010 Handout Decaf Language Tuesday, Feb 2 The project for the course is to write a compiler

More information

Index COPYRIGHTED MATERIAL

Index COPYRIGHTED MATERIAL Index COPYRIGHTED MATERIAL Note to the Reader: Throughout this index boldfaced page numbers indicate primary discussions of a topic. Italicized page numbers indicate illustrations. A abstract classes

More information

COSE212: Programming Languages. Lecture 4 Recursive and Higher-Order Programming

COSE212: Programming Languages. Lecture 4 Recursive and Higher-Order Programming COSE212: Programming Languages Lecture 4 Recursive and Higher-Order Programming Hakjoo Oh 2016 Fall Hakjoo Oh COSE212 2016 Fall, Lecture 4 September 27, 2016 1 / 21 Recursive and Higher-Order Programming

More information

TA hours and labs start today. First lab is out and due next Wednesday, 1/31. Getting started lab is also out

TA hours and labs start today. First lab is out and due next Wednesday, 1/31. Getting started lab is also out Announcements TA hours and labs start today. First lab is out and due next Wednesday, 1/31. Getting started lab is also out Get you setup for project/lab work. We ll check it with the first lab. Stars

More information

Programming Languages and Techniques (CIS120e)

Programming Languages and Techniques (CIS120e) Programming Languages and Techniques (CIS120e) Lecture 7 Sep 15, 2010 Binary Search Trees (Part II), Generics Announcements Homework 2 is due tonight at 11:59:59pm. Homework 3 will be available on the

More information

Introduction to Programming using C++

Introduction to Programming using C++ Introduction to Programming using C++ Lecture One: Getting Started Carl Gwilliam gwilliam@hep.ph.liv.ac.uk http://hep.ph.liv.ac.uk/~gwilliam/cppcourse Course Prerequisites What you should already know

More information

CS 134 Programming Exercise 7:

CS 134 Programming Exercise 7: CS 134 Programming Exercise 7: Scribbler Objective: To gain more experience using recursion and recursive data structures. This week, you will be implementing a program we call Scribbler. You have seen

More information

Java Primer 1: Types, Classes and Operators

Java Primer 1: Types, Classes and Operators Java Primer 1 3/18/14 Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and M. H. Goldwasser, Wiley, 2014 Java Primer 1: Types,

More information

Lecture 8 Index (B+-Tree and Hash)

Lecture 8 Index (B+-Tree and Hash) CompSci 516 Data Intensive Computing Systems Lecture 8 Index (B+-Tree and Hash) Instructor: Sudeepa Roy Duke CS, Fall 2017 CompSci 516: Database Systems 1 HW1 due tomorrow: Announcements Due on 09/21 (Thurs),

More information

Runtime Support for Algol-Like Languages Comp 412

Runtime Support for Algol-Like Languages Comp 412 COMP 412 FALL 2018 Runtime Support for Algol-Like Languages Comp 412 source code IR Front End Optimizer Back End IR target code Copyright 2018, Keith D. Cooper & Linda Torczon, all rights reserved. Students

More information

Object-oriented programming. and data-structures CS/ENGRD 2110 SUMMER 2018

Object-oriented programming. and data-structures CS/ENGRD 2110 SUMMER 2018 Object-oriented programming 1 and data-structures CS/ENGRD 2110 SUMMER 2018 Lecture 1: Types and Control Flow http://courses.cs.cornell.edu/cs2110/2018su Lecture 1 Outline 2 Languages Overview Imperative

More information

CPSC 211 Introduction to Software Development

CPSC 211 Introduction to Software Development CPSC 211 duction to Software Development Winter 2010-2011 Term 2 Instructor Name: Dr. Kimberly Voll Office: ICCS 241 Email: kvoll@cs.ubc.ca Please put CS211: in the heading of every message,

More information

CS111: PROGRAMMING LANGUAGE II

CS111: PROGRAMMING LANGUAGE II CS111: PROGRAMMING LANGUAGE II Computer Science Department Lecture 1(c): Java Basics (II) Lecture Contents Java basics (part II) Conditions Loops Methods Conditions & Branching Conditional Statements A

More information

CSCI-1200 Data Structures Fall 2012 Lecture 5 Pointers, Arrays, Pointer Arithmetic

CSCI-1200 Data Structures Fall 2012 Lecture 5 Pointers, Arrays, Pointer Arithmetic CSCI-1200 Data Structures Fall 2012 Lecture 5 Pointers, Arrays, Pointer Arithmetic Announcements: Test 1 Information Test 1 will be held Tuesday, September 18th, 2012 from 2-3:50pm in West Hall Auditorium.

More information

Agenda. The main body and cout. Fundamental data types. Declarations and definitions. Control structures

Agenda. The main body and cout. Fundamental data types. Declarations and definitions. Control structures The main body and cout Agenda 1 Fundamental data types Declarations and definitions Control structures References, pass-by-value vs pass-by-references The main body and cout 2 C++ IS AN OO EXTENSION OF

More information

5/23/2015. Core Java Syllabus. VikRam ShaRma

5/23/2015. Core Java Syllabus. VikRam ShaRma 5/23/2015 Core Java Syllabus VikRam ShaRma Basic Concepts of Core Java 1 Introduction to Java 1.1 Need of java i.e. History 1.2 What is java? 1.3 Java Buzzwords 1.4 JDK JRE JVM JIT - Java Compiler 1.5

More information

Iterator and For-Each Loops COMP110 - Lecture 18

Iterator and For-Each Loops COMP110 - Lecture 18 Iterator and For-Each Loops COMP110 - Lecture 18 Announcements PS3 - Paternity Test is out! Game of Thrones: Spoilers vs. No Spoilers Due Sunday at 11:59pm 400 Points - Get started early! Whiteboard Hours

More information

Linked Lists CS 16: Solving Problems with Computers I Lecture #16

Linked Lists CS 16: Solving Problems with Computers I Lecture #16 Linked Lists CS 16: Solving Problems with Computers I Lecture #16 Ziad Matni Dept. of Computer Science, UCSB Material: Everything we ve done Homework, Labs, Lectures, Textbook Tuesday, 12/12 in this classroom

More information

Lecture 3. Lecture

Lecture 3. Lecture True Object-Oriented programming: Dynamic Objects Static Object-Oriented Programming Reference Variables Eckel: 30-31, 41-46, 107-111, 114-115 Riley: 5.1, 5.2 D0010E Object-Oriented Programming and Design

More information

CSCI-1200 Data Structures Fall 2017 Lecture 7 Order Notation & Basic Recursion

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

If you don t, it will return the same thing as == But this may not be what you want... Several different kinds of equality to consider:

If you don t, it will return the same thing as == But this may not be what you want... Several different kinds of equality to consider: CS61B Summer 2006 Instructor: Erin Korber Lecture 5, 3 July Reading for tomorrow: Chs. 7 and 8 1 Comparing Objects Every class has an equals method, whether you write one or not. If you don t, it will

More information

Context-Free Grammars

Context-Free Grammars Context-Free Grammars Describing Languages We've seen two models for the regular languages: Automata accept precisely the strings in the language. Regular expressions describe precisely the strings in

More information

This course supports the assessment for Scripting and Programming Applications. The course covers 4 competencies and represents 4 competency units.

This course supports the assessment for Scripting and Programming Applications. The course covers 4 competencies and represents 4 competency units. This course supports the assessment for Scripting and Programming Applications. The course covers 4 competencies and represents 4 competency units. Introduction Overview Advancements in technology are

More information

Michele Van Dyne Museum 204B CSCI 136: Fundamentals of Computer Science II, Spring

Michele Van Dyne Museum 204B  CSCI 136: Fundamentals of Computer Science II, Spring Michele Van Dyne Museum 204B mvandyne@mtech.edu http://katie.mtech.edu/classes/csci136 CSCI 136: Fundamentals of Computer Science II, Spring 2016 1 Review of Java Basics Data Types Arrays NEW: multidimensional

More information

G Programming Languages Spring 2010 Lecture 4. Robert Grimm, New York University

G Programming Languages Spring 2010 Lecture 4. Robert Grimm, New York University G22.2110-001 Programming Languages Spring 2010 Lecture 4 Robert Grimm, New York University 1 Review Last week Control Structures Selection Loops 2 Outline Subprograms Calling Sequences Parameter Passing

More information

Changing an Object s Properties

Changing an Object s Properties Go ahead and PULL Lecture Materials & Sign-in on PollEv Right Click Lecture > Team > Pull Poll Everywhere: pollev.com/comp110 Lecture 4 Changing an Object s Properties Fall 2016 Announcements Review Session

More information

CS61C Machine Structures. Lecture 4 C Pointers and Arrays. 1/25/2006 John Wawrzynek. www-inst.eecs.berkeley.edu/~cs61c/

CS61C Machine Structures. Lecture 4 C Pointers and Arrays. 1/25/2006 John Wawrzynek. www-inst.eecs.berkeley.edu/~cs61c/ CS61C Machine Structures Lecture 4 C Pointers and Arrays 1/25/2006 John Wawrzynek (www.cs.berkeley.edu/~johnw) www-inst.eecs.berkeley.edu/~cs61c/ CS 61C L04 C Pointers (1) Common C Error There is a difference

More information