Introduction to Data Structures Lecture 1 Introduction 15

  • Slides: 24
Download presentation
Introduction to Data Structures Lecture 1: Introduction 15 -121: Introduction to Data Structures Lecture

Introduction to Data Structures Lecture 1: Introduction 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 1

Course Web Sites • http: //www. andrew. cmu. edu/~mm 6/15 -121 • Blackboard too

Course Web Sites • http: //www. andrew. cmu. edu/~mm 6/15 -121 • Blackboard too 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 2

Structure of the Course • Lectures / class participation • Projects (programming) • Recitations

Structure of the Course • Lectures / class participation • Projects (programming) • Recitations (lab work, quizzes, and project discussions) • Midterm examination • Final examination 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 3

Readings • Readings from the required text are assigned for each lecture -read them

Readings • Readings from the required text are assigned for each lecture -read them in advance • The book contains self-test exercises in each section • Work these exercises (especially if you are new to the material) 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 4

Grading • Homework (5 or 6) • Recitation • Midterm Exam • Final Exam

Grading • Homework (5 or 6) • Recitation • Midterm Exam • Final Exam 15 -121: Introduction to Data Structures 50% 10% 20% Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 5

Waitlist maintenance • Please see me as soon as possible if you are on

Waitlist maintenance • Please see me as soon as possible if you are on the waitlist. • It is essential that you have programming experience prior to taking this class. 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 6

Definitions • A data structure is an organized collection of data with specific aggregate

Definitions • A data structure is an organized collection of data with specific aggregate properties • An algorithm is a sequence of program instructions designed to compute a particular result 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 7

Five Steps per Datatype • Understand it Abstractly • Write a Specification • Write

Five Steps per Datatype • Understand it Abstractly • Write a Specification • Write Applications • Select an existing, or Design and Implement our own • Analyze the Implementation in terms of performance 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 8

Abstract vs. Concrete • An abstract data type (ADT) specifies behavior, but not implementation

Abstract vs. Concrete • An abstract data type (ADT) specifies behavior, but not implementation • An implementation uses a particular low-level datatype to implement the desired behavior 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 9

Quick Example • A stack is an abstract data type (ADT). • We push

Quick Example • A stack is an abstract data type (ADT). • We push and pop from the top. • Consider three implementations: (1) Every push causes all elements in an array to shift down 1 before the insertion at s[0]. (2) We add at stack. Top and then add one to stack. Top. (3) A linked list use where the top is always at the list’s front end. • Each implementation can be written correctly. • Implementation (1) runs in Θ(n). • Implementations (2) and (3) run in Θ(1). 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 10

Step 1: Understanding • Grasp the datatype at the level of concepts and pictures

Step 1: Understanding • Grasp the datatype at the level of concepts and pictures e. g. , visualize a stack and the operations of pushing / popping • Understand simple applications • Simulate by hand e. g. , use a stack to reverse the order of letters in a word 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 11

Step 2: Specification • Write a specification for a Java class that could implement

Step 2: Specification • Write a specification for a Java class that could implement the datatype (Javadoc generates HTML) • Headings for constructor, public methods, public features • Includes precondition / postcondition for each method • Independent of implementation! 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 12

Step 3: Application • Based on the specification, write small applications to illustrate the

Step 3: Application • Based on the specification, write small applications to illustrate the use of the datatype • “Test the specification” prior to implementation • Code not yet compiled / run 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 13

Step 4: Implementation • Select appropriate data structure • Implement as private class vars

Step 4: Implementation • Select appropriate data structure • Implement as private class vars • Write rules relating instance variables to abstract specification: the invariant of the ADT • Each method knows the invariant is true when it starts • Each method upholds the invariant 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 14

Step 5: Analysis • Correctness • Flexibility • When possible, compare different implementations of

Step 5: Analysis • Correctness • Flexibility • When possible, compare different implementations of the same ADT • Time Analysis – number of operations – big-O notation, e. g. , 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 15

Phases of Software Development • Specification of the Task • Design of a Solution

Phases of Software Development • Specification of the Task • Design of a Solution • Implementation of the Solution • Running Time Analysis • Testing and Debugging • Maintenance and Evolution • Obsolescence 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 16

Java • • Conceived in 1991 at Sun Has Similarities to C++ Is simpler

Java • • Conceived in 1991 at Sun Has Similarities to C++ Is simpler than C++ Object-Oriented Programming (OOP) – information hiding – component re-use – programs (methods) and data are grouped together into classes – Unless assigned, we will not be using the collection classes 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 17

What You Should Pick up Soon • A Java development environment (Netbeans, Eclispse, command

What You Should Pick up Soon • A Java development environment (Netbeans, Eclispse, command line java, javac, javadoc) • How to write, compile, and run short Java programs • Java primitive types (number types, char, boolean) and arrays • Complete this week’s lab as soon as possible 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 18

Specifying a Java Method • Specification: what a method does not how it does

Specifying a Java Method • Specification: what a method does not how it does it • A form of information hiding called procedural abstraction • Method signature public static double celsius. To. Fahrenheit(double c) • Method call double fahrenheit = celsius. To. Fahrenheit(celsius); 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 19

Elements of Specification • Short Introduction • Parameter Description • Returns – Specify the

Elements of Specification • Short Introduction • Parameter Description • Returns – Specify the meaning of return value • Throws list – error conditions (exceptions) “thrown” by this method • Precondition and Postcondition 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 20

Preconditions • A precondition is a statement giving the condition that should be true

Preconditions • A precondition is a statement giving the condition that should be true when the method is called • The method is not guaranteed to perform as it should unless the precondition is true. • If violated, ignore (like c) or throw an exception (like Java). 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 21

Postconditions • A postcondition is a statement describing what will be true when a

Postconditions • A postcondition is a statement describing what will be true when a method call completes • If the method is correct and precondition was met, then the method will complete, and the postcondition will be true when it does • Use Java assert statement for postcondition checks during debugging. Not during deployment. 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 22

Example Specification • celsius. To. Fahrenheit public static double celsius. To. Fahrenheit(double c) –

Example Specification • celsius. To. Fahrenheit public static double celsius. To. Fahrenheit(double c) – convert a temperature from Celsius degrees to Fahrenheit degrees – Parameters: c - a temperature in Celsius degrees – Precondition: c>= -273. 16 – Returns: temperature c in Fahrenheit – Throws: Illegal. Argument Exception 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 23

More on Pre/Postconditions • Slides from Main’s Lectures 15 -121: Introduction to Data Structures

More on Pre/Postconditions • Slides from Main’s Lectures 15 -121: Introduction to Data Structures Lecture 1: Introduction Copyright © 1999, Carnegie Mellon. All Rights Reserved. 24