Data Structures - Section FG

Similar documents
Data Structures. Lecture 1: Introduction CSC212. Instructor: George Wolberg Department of Computer Science City College of New York

Preconditions and Postconditions. What are Preconditions and Postconditions? Example. Example

Preconditions and Postconditions

Can you think of a situation where this would occur?

C++ CODE DESIGN INTRO TO ABSTRACT DATA TYPES

C++ CODE DESIGN INTRO TO ABSTRACT DATA TYPES

Spring 2003 Instructor: Dr. Shahadat Hossain. Administrative Matters Course Information Introduction to Programming Techniques

2. COURSE DESIGNATION: 3. COURSE DESCRIPTIONS:

Topics Applications Most Common Methods Serial Search Binary Search Search by Hashing (next lecture) Run-Time Analysis Average-time analysis Time anal

COLLEGE OF DUPAGE CIS 2542 Advanced C++ with Data Structure Applications Course Syllabus

KOMAR UNIVERSITY OF SCIENCE AND TECHNOLOGY (KUST)

CS 210 Algorithms and Data Structures College of Information Technology and Engineering Weisberg Division of Engineering and Computer Science

Lecture 18 Heaps and Priority Queues

CSC212 Data Structure - Section FG

CSCE 210/2201 Data Structures and Algorithms. Prof. Amr Goneid

B. Subject-specific skills B1. Problem solving skills: Supply the student with the ability to solve different problems related to the topics

CSCE 210/2201 Data Structures and Algorithms. Prof. Amr Goneid. Fall 2018

CS 241 Data Organization using C

Lectures 4 & 5 Container Classes

Syllabus COSC-051-x - Computer Science I Fall Office Hours: Daily hours will be entered on Course calendar (or by appointment)

CS 132 Exam #1 - Study Suggestions

01 INTRODUCTION TO COURSE

San Jose State University - Department of Computer Science

CS 216 Exam 1 Fall SOLUTION

COMP 2150 CS 2: Object-Oriented Programming and Data Structure Fall 2018 Dr. James Yu

Outline. Computer Science 331. Course Information. Assessment. Contact Information Assessment. Introduction to CPSC 331

San José State University Department of Computer Science CS-144, Advanced C++ Programming, Section 1, Spring 2018

CPSC 2380 Data Structures and Algorithms

Introduction to Programming System Design CSCI 455x (4 Units)

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1,2 and 3, Spring 2017

COLLEGE OF THE DESERT

CSC212 Data Structure - Section FG

CS2013 Course Syllabus Spring 2018 Lecture: Mon/Wed 2:00 P.M. 2:50 P.M. SH C259 Lab: Mon/Wed 2:50 P.M. 4:00 P.M. SH C259

Computer Science Foundation Exam

COMP251: Algorithms and Data Structures. Jérôme Waldispühl School of Computer Science McGill University

Beijing Jiaotong University CS-23: C++ Programming Summer, 2019 Course Syllabus

CENG 707 Data Structures and Algorithms

Computer Science 1321 Course Syllabus

CSCI 136 Data Structures & Advanced Programming. Fall 2018 Instructors Bill Lenhart & Bill Jannen

CoSci 440 SYLLABUS Programming in C++ INSTRUCTOR Mari Rettke cell SECTION : and 13345

CSC 216 Data Structures Dr. Melissa Wiggins MCC 306 (601)

During 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.

l Determine if a number is odd or even l Determine if a number/character is in a range - 1 to 10 (inclusive) - between a and z (inclusive)

Course: Honors AP Computer Science Instructor: Mr. Jason A. Townsend

San José State University Computer Science Department CS49J, Section 3, Programming in Java, Fall 2015

CISC 3130 Data Structures Spring 2018

CASPER COLLEGE COURSE SYLLABUS MSFT 1600 Managing Microsoft Exchange Server 2003 Semester/Year: Fall 2007

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

Review for Test 1 (Chapter 1-5)

1) What is the primary purpose of template functions? 2) Suppose bag is a template class, what is the syntax for declaring a bag b of integers?

COMP322 - Introduction to C++ Lecture 01 - Introduction

Announcements. 1. Forms to return today after class:


3D Graphics Programming Mira Costa High School - Class Syllabus,

Lecture 9 Linked Lists

VE281 Data Structures and Algorithms. Introduction and Asymptotic Algorithm Analysis

Linear Algebra Math 203 section 003 Fall 2018

CSCI-1200 Data Structures Fall 2009 Lecture 25 Concurrency & Asynchronous Computing

CSCE 2014 Final Exam Spring Version A

Course Syllabus for CS3358 (Data Structures and Algorithms) by Lee S. Koh

Programming with Arrays Intro to Pointers CS 16: Solving Problems with Computers I Lecture #11

Course Syllabus of Microprocessor I (Fall 2006)

CMPE/SE 135 Object-Oriented Analysis and Design

CSC212. Data Structure. Lecture 13 Trees and Tree Traversals. Instructor: Prof. George Wolberg Department of Computer Science City College of New York

Updated: 2/14/2017 Page 1 of 6

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #29 Arrays in C

Object-Oriented Programming for Managers

! Determine if a number is odd or even. ! Determine if a number/character is in a range. - 1 to 10 (inclusive) - between a and z (inclusive)

CSE 332 Autumn 2013: Midterm Exam (closed book, closed notes, no calculators)

CSC212. Data Structure. Lecture 4 Container Classes. Instructor: George Wolberg Department of Computer Science City College of New York

Computer Science Foundation Exam

CSE 114, Computer Science 1 Course Information. Spring 2017 Stony Brook University Instructor: Dr. Paul Fodor

BOSTON UNIVERSITY Metropolitan College MET CS342 Data Structures with Java Dr. V.Shtern (Fall 2011) Course Syllabus

ASYMPTOTIC COMPLEXITY

IT-2670: C/C++ PROGRAMMING LANGUAGE

Algorithms and Data Structures Spring 2008

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1, 2, and 3, Spring 2018

COMP 250. Lecture 36 MISC. - beyond COMP final exam comments

Computer Science II Data Structures

Lecture 1. Course Overview Types & Expressions

1. Stack overflow & underflow 2. Implementation: partially filled array & linked list 3. Applications: reverse string, backtracking

NEW YORK CITY COLLEGE OF TECHNOLOGY/CUNY Computer Systems Technology Department

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

CMPE 180A Data Structures and Algorithms in C++

! Mon, May 5, 2:00PM to 4:30PM. ! Closed book, closed notes, clean desk. ! Comprehensive (covers entire course) ! 30% of your final grade

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

CISC 3130 Data Structures Fall 2018

Lecture 7. Log into Linux New documents posted to course webpage

CS 3512, Spring Instructor: Doug Dunham. Textbook: James L. Hein, Discrete Structures, Logic, and Computability, 3rd Ed. Jones and Barlett, 2010

Algorithms and Data Structures (INF1) Lecture 15/15 Hua Lu

CSCI 528: OBJECT ORIENTED PROGRAMMING, Fall 2015

Advanced Algorithms and Data Structures

Curriculum Map Grade(s): Subject: AP Computer Science

CSCI-1200 Data Structures Spring 2014 Lecture 5 Pointers, Arrays, Pointer Arithmetic

Violations of the contract are exceptions, and are usually handled by special language constructs. Design by contract

CHAPTER 2.1 CONTROL STRUCTURES (SELECTION) Dr. Shady Yehia Elmashad

CSC 172 Data Structures and Algorithms. Fall 2017 TuTh 3:25 pm 4:40 pm Aug 30- Dec 22 Hoyt Auditorium

CS 211 Programming I for Engineers

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

The Limits of Sorting Divide-and-Conquer Comparison Sorts II

Transcription:

CSC212 Data Structures - Section FG Lecture 1: Introduction Instructor: Feng HU fhu@gradcenter.cuny.edu Department of Computer Science City College of New York Feng HU, 2016 1

Outline of this lecture Course Objectives and Schedule WHAT (Topics) WHY (Importance) WHERE (Goals) HOW (Information and Schedule) The Phase of Software Development Basic design strategy Pre-conditions and post-conditions Running time analysis Feng HU, 2016 2

Topics (WHAT) Data Structures specification, design, implementation and use of basic data types (arrays, lists, queues, stacks, trees ) OOP and C++ C++ classes, container classes, Big Three Standard Template Library (STL) templates, iterators ADTs in our DS course cut-down version of STL Recursion, Searching and Sorting Algorithms important techniques in many applications Feng HU, 2016 3

Importance (WHY) Data Structures (how to organize data) and Algorithms (how to manipulate data) are the cores of today s computer programming The behavior of Abstract Data Types (ADTs) in our Date Structures course is a cut-down version of Standard Template Library (STL) in C++ Lay a foundation for other aspects of real programming OOP, Recursion, Sorting, Searching Feng HU, 2016 4

Goals (WHERE) understand the data types inside out Implement these data structures as classes in C++ Determine which structures are appropriate in various situations Confidently learn new structures beyond what are presented in this class also learn part of the OOP and software development methodology Feng HU, 2016 5

Course Information (HOW) Objectives Data Structures, with C++ and Software Engineering Textbook and References Texbook: Data Structures and Other Objects Using C++, Fourth Edition by Michael Main and Walter Savitch Reference: C++ How to Program by Dietel & Dietel, 3rd Ed., Prentice Hall 2001 Prerequisites CSc103 C++ (Intro to Computing for CS and CpE) CSc 104 (Discrete Math Structure I) Assignments and Grading 6-7 programming assignments roughly every 2 weeks (30%) 3 in-class writing exams (60%), several in-class quizzes (10%) Computing Facilities PCs: Microsoft Visual C++ ; Unix / Linux : gc++?; MinGW also publicly accessible at Computer Science labs Feng HU, 2016 6

Tentative Schedule (HOW) ( 28 classes = 23 lectures + 3 reviews + 3 exams, 6-7 assignments) Lecture 1. The Phase of Software Development (Ch 1) Lectures 2-3. ADT and C++ Classes (Ch 2) Lecture 4-5. Container Classes (Ch 3) Lectures 6-8. Pointers and Dynamic Arrays (Ch 4) Reviews and the 1st exam (Ch. 1-4, before Columbus Day) Lectures 9-10. Linked Lists (Ch. 5) Lectures 11. 11a. Template and STL (Ch 6) Lecture 12. Stacks (Ch 7) and Queues (Ch 8) Lectures 13-14. Recursion (Ch 9) Reviews and the 2nd exam (Ch. 5-9, before Thanksgiving) Lectures 15-18. Trees (Ch 10, Ch 11) Lectures 19-20. Searching and Hashing (Ch 12) Lectures 21-22. Sorting (Ch 13) Lecture 23. Graphs (Ch 15) Reviews and the 3rd exam (mainly Ch. 10-13, Dec 14 ) Feng HU, 2016 7

Course Web Page You can find all the information at http://ccvcl.org/~fhu/csc212fg-fall2016.html -Come back frequently for the updating of lecture schedule, programming assignments and exam schedule - Reading assignments & programming assignments Feng HU, 2016 8

Outline Course Objectives and Schedule Information Topics Schedule The Phase of Software Development Basic design strategy Pre-conditions and post-conditions Running time analysis Feng HU, 2016 9

Phase of Software Development Basic Design Strategy four steps (Reading: Ch.1 ) Specify the problem - Input/Output (I/O) Design data structures and algorithms (pseudo code) Implement in a language such as C++ Test and debug the program (Reading Ch 1.3) Design Technique Decomposing the problem Two Important Issues (along with design and Implement) Pre-Conditions and Post-Conditions Running Time Analysis Feng HU, 2016 10

Preconditions and Postconditions An important topic: preconditions and postconditions. They are a method of specifying what a function accomplishes. Precondition and Postcondition Presentation copyright 1997, Addison Wesley Longman For use with Data Structures and Other Objects Using C++ by Michael Main and Walter Savitch. Feng HU, 2016 11

Preconditions and Postconditions Frequently a programmer must communicate precisely what a function accomplishes, without any indication of how the function does its work. Can you think of a situation where this would occur? Feng HU, 2016 12

Example You are the head of a programming team and you want one of your programmers to write a function for part of a project. HERE ARE THE REQUIREMENTS FOR A FUNCTION THAT I WANT YOU TO WRITE. I DON'T CARE WHAT METHOD THE FUNCTION USES, AS LONG AS THESE REQUIREMENTS ARE MET. Feng HU, 2016 13

What are Preconditions and Postconditions? One way to specify such requirements is with a pair of statements about the function. The precondition statement indicates what must be true before the function is called. The postcondition statement indicates what will be true when the function finishes its work. Feng HU, 2016 14

Example void write_sqrt( double x) // Precondition: x >= 0. // Postcondition: The square root of x has // been written to the standard output.... Feng HU, 2016 15

Example void write_sqrt( double x) // Precondition: x >= 0. // Postcondition: The square root of x has // been written to the standard output. The precondition and postcondition appear as comments in your program.... They are usually placed after the function s parameter list. } Feng HU, 2016 16

Example void write_sqrt( double x) // Precondition: x >= 0. // Postcondition: The square root of x has // been written to the standard output. In this example, the precondition requires that... x >= 0 be true whenever the function is called. } Feng HU, 2016 17

Example Which of these function calls meet the precondition? write_sqrt( -10 ); write_sqrt( 0 ); write_sqrt( 5.6 ); Feng HU, 2016 18

Example Which of these function calls meet the precondition? write_sqrt( -10 ); write_sqrt( 0 ); write_sqrt( 5.6 ); The second and third calls are fine, since the argument is greater than or equal to zero. Feng HU, 2016 19

Example Which of these function calls meet the precondition? write_sqrt( -10 ); write_sqrt( 0 ); write_sqrt( 5.6 ); But the first call violates the precondition, since the argument is less than zero. Feng HU, 2016 20

Example void write_sqrt( double x) // Precondition: x >= 0. // Postcondition: The square root of x has // been written to the standard output. The postcondition always indicates what work the function has accomplished.... In this case, when the function returns the square root of x has been written. } Feng HU, 2016 21

Another Example bool is_vowel( char letter ) // Precondition: letter is an uppercase or // lowercase letter (in the range 'A'... 'Z' or 'a'... 'z'). // Postcondition: The value returned by the // function is true if letter is a vowel; // otherwise the value returned by the function is // false.... Feng HU, 2016 22

Another Example What values will be returned by these function calls? is_vowel( 'A' ); is_vowel(' Z' ); is_vowel( '?' ); Feng HU, 2016 23

Another Example What values will be returned by these function calls? true is_vowel( 'A' ); is_vowel(' Z' ); is_vowel( '?' ); false Nobody knows, because the precondition has been violated. Feng HU, 2016 24

Consequence of Violation Who are responsible for the crash? write_sqrt(-10.0); is_vowel( '?' ); Bring up Notes!!! Violating the precondition might even crash the computer. Feng HU, 2016 25

Always make sure the precondition is valid... The programmer who calls the function is responsible for ensuring that the precondition is valid when the function is called. AT THIS POINT, MY PROGRAM CALLS YOUR FUNCTION, AND I MAKE SURE THAT THE PRECONDITION IS VALID. Feng HU, 2016 26

... so the postcondition becomes true at the function s end. The programmer who writes the function counts on the precondition being valid, and ensures that the postcondition becomes true at the function s end. THEN MY FUNCTION WILL EXECUTE, AND WHEN IT IS DONE, THE POSTCONDITION WILL BE TRUE. I GUARANTEE IT. Feng HU, 2016 27

A Quiz The beginning of the fall semester at CUNY is in three days, and the website that controls everything at CUNY is wreaking havoc yet again. Juan Monroy s Blog Suppose that you call a function, and you neglect to make sure that the precondition* is valid. Who is responsible if this causes a persist outage of the CUNYFirst? * Primary issue seems to be the number of users accessing the system at the same time creating an overload situation. - Daniel Matos, CCNY Office of the Registrar 1 You 2 The programmer who wrote that CUNYFirst function 3 CUNY Chancellor Feng HU, 2016 28

A Quiz The beginning of the fall semester at CUNY is in three days, and the website that controls everything at CUNY is wreaking havoc yet again. Juan Monroy s Blog Suppose that you call a function, and you neglect to make sure that the precondition* is valid. Who is responsible if this causes a persist outage of the CUNYFirst? * Primary issue seems to be the number of users accessing the system at the same time creating an overload situation. - Daniel Matos, CCNY Office of the Registrar 1 You The programmer who calls a function is responsible for ensuring that the precondition is valid. Feng HU, 2016 29

On the other hand, careful programmers also follow these rules: When you write a function, you should make every effort to detect when a precondition has been violated. If you detect that a precondition has been violated, then print an error message and halt the program. Feng HU, 2016 30

On the other hand, careful programmers also follow these rules: When you write a function, you should make every effort to detect when a precondition has been violated. If you detect that a precondition has been violated, then print an error message and halt the program......rather than causing a chaos. Feng HU, 2016 31

Example void write_sqrt( double x) // Precondition: x >= 0. // Postcondition: The square root of x has // been written to the standard output. { assert(x >= 0);... The assert function (described in Section 1.1) is useful for detecting violations of a precondition. Feng HU, 2016 32

Advantages of Using Pre- and Post-conditions Concisely describes the behavior of a function...... without cluttering up your thinking with details of how the function works. At a later point, you may reimplement the function in a new way...... but programs (which only depend on the precondition/postcondition) will still work with no changes. Feng HU, 2016 33

Break Feng HU, 2016 34

Summary of pre- and post-conditions Precondition The programmer who calls a function ensures that the precondition is valid. The programmer who writes a function can bank on the precondition being true when the function begins execution. Postcondition The programmer who writes a function ensures that the postcondition is true when the function finishes executing. Feng HU, 2016 35

Phase of Software Development Basic Design Strategy four steps (Reading: Ch.1 ) Specify Input/Output (I/O) Design data structures and algorithms Implement in a language such as C++ Test and debug the program (Reading Ch 1.3) Design Technique Decomposing the problem Two Important Issues (along with design and Implement) Pre-Conditions and Post-Conditions Running Time Analysis Feng HU, 2016 36

Running Time Analysis Big O Time Analysis Fast enough? How much longer if input gets larger? Which among several is the fastest? Feng HU, 2016 37

Example : Stair Counting Problem How many steps? 1789 (Birnbaum) 1671 (Joseph Harriss) 1652 (others) 1665 (Official Eiffel Tower Website) Find it out yourself! Eiffel Tower Feng HU, 2016 38

Example : Stair Counting Problem Find it out yourself! Method 1: Walk down and keep a tally Each time a step down, make a mark Method 2 : Walk down, but let Judy keep the tally Down+1, hat, back, Judy make a mark Method 3: Jervis to the rescue II There y a are 共有 2689 2689 marches 2689 steps in dan this 级台阶 cet escalier stairway 千真万确! vraiment! (really!) One mark per digit Eiffel Tower Feng HU, 2016 39

Example : Stair Counting Problem How to measure the time? Just measure the actual time vary from person to person depending on many factors Count certain operations each time walk up/down, 1 operation each time mark a symbol, 1 operation Eiffel Tower Feng HU, 2016 40

Example : Stair Counting Problem Find it out yourself! Method 1: Walk down and keep a tally 2689 (down) + 2689 (up) + 2689 (marks) = 8067 Method 2 : Walk down, let Judy keep tally Down: 3,616,705 = 1+2+ +2689 Up: Marks: Method 3: Jervis to the rescue only 4 marks! 3,616,705 = 1+2+ +2689 2,689 = 1+1+ +1 7,236,099! Feng HU, 2016 Eiffel Tower41

Example : Stair Counting Problem Size of the Input : n Method 1: Walk down and keep a tally 3n Method 2 : Walk down, let Judy keep tally n+2(1+2+ +n) = n+(n+1)n = n 2 +2n Trick: Compute twice the amount and then divided by two Method 3: Jervis to the rescue The number of digits in n = [log 10 n]+1 Feng HU, 2016 Eiffel Tower42

Example : Stair Counting Problem Big-O Notation the order of the algorithm Use the largest term in a formula Ignore the multiplicative constant Method 1: Linear time 3n => O(n) Method 2 : Quadratic time n 2 +2n => O(n 2 ) Method 3: Logarithmic time [log 10 n]+1 => O(log n) Feng HU, 2016 Eiffel Tower43

A Quiz Number of operations n 2 +5n 100n+n 2 (n+7)(n-2) n+100 number of digits in 2n Big-O notation O(n 2 ) O(n 2 ) O(n 2 ) O(n) O(log n) Feng HU, 2016 44

Big-O Notation The order of an algorithm generally is more important than the speed of the processor Input size: n O(log n) O (n) O (n 2 ) # of stairs: n [log 10 n]+1 3n n 2 +2n 10 2 30 120 100 3 300 10,200 1000 4 3000 1,002,000 Feng HU, 2016 45

Time Analysis of C++ Functions Example- Quiz ( 5 minutes) Printout all item in an integer array of size N for (i=0; i< N; i++ ) { val = a[i]; cout << val; } 2 C++ operations or more? Frequent linear pattern A loop that does a fixed amount of operations N times requires O(N) time Feng HU, 2016 46

Time Analysis of C++ Functions Another example Printout char one by one in a string of length N for (i=0; i< strlen(str); i++ ) { c = str[i]; cout << c; } What is a single operation? O(N 2 )! If the function calls do complex things, then count the operation carried out there Put a function call outside the loop if you can! Feng HU, 2016 47

Time Analysis of C++ Functions Another example Printout char one by one in a string of length N What is a single operation? N = strlen(str); for (i=0; i<n; i++ ) { c = str[i]; cout << c; } O(N)! If the function calls do complex things, then count the operation carried out there Put a function call outside the loop if you can! Feng HU, 2016 48

Time Analysis of C++ Functions Worst case, average case and best case search a number x in an integer array a of size N for (i=0; (i< N) && (a[i]!= x); i++ ); if (i < N) cout << Number << x << is at location << i << endl; else cout << Not Found! << endl; Can you provide an exact number of operations? Best case: 1+2+1 Worst case: 1+3N+1 Average case: 1+3N/2+1 Feng HU, 2016 49

Testing and Debugging Test: run a program and observe its behavior input -> expected output? how long? software engineering issues Choosing Test Data : two techniques boundary values fully exercising code (tool: profiler) Debugging find the bug after an error is found rule: never change if you are not sure what s the error tool: debugger Feng HU, 2016 50

Summary Often ask yourselves FOUR questions WHAT, WHY, WHERE & HOW Topics DSs, C++, STL, basic algorithms Data Structure experts Schedule 23 lectures, 6 assignments, 3 exams A lot of credits (>10/100) for attending the class Information website Remember and apply two things (Ch 1) Basic design strategy Pre-conditions and post-conditions Running time analysis Testing and Debugging (reading 1.3) Feng HU, 2016 51

Reminder Lecture 2: ADT and C++ Classes Reading Assignment before the next lecture: Chapter 1 Office Hours: Update: Chapter 2, Sections 2.1-2.3 Mon/Wed 3:00 pm - 4:00 pm (Location: NAC 8/210) check website for details Feng HU, 2016 52

Homework v Send me an email (fhu@gradcenter.cuny.edu) listing your expectations/comments/suggestions of this course, as the first attendance. Feng HU, 2016 53

THE END Feng HU, 2016 54