1 / 23

Data Structures and Algorithms for Information Processing

Data Structures and Algorithms for Information Processing. Lecture 1: Introduction. Course Web Site. http://www.andrew.cmu.edu/~mm6. Structure of the Course. Lectures / class participation Homeworks (programming) Midterm examination Final examination. Readings.

basia-cash
Télécharger la présentation

Data Structures and Algorithms for Information Processing

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Data Structures and Algorithms for Information Processing Lecture 1: Introduction Lecture 1: Introduction

  2. Course Web Site • http://www.andrew.cmu.edu/~mm6 Lecture 1: Introduction

  3. Structure of the Course • Lectures / class participation • Homeworks (programming) • Midterm examination • Final examination Lecture 1: Introduction

  4. 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) Lecture 1: Introduction

  5. Grading • Homework (5-6) 50% • Midterm Exam 25% • Final Exam 25% Lecture 1: Introduction

  6. 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 Lecture 1: Introduction

  7. 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 Lecture 1: Introduction

  8. 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 Lecture 1: Introduction

  9. 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 stackTop and then add one to stackTop. (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). Lecture 1: Introduction

  10. Step 1: Understanding • Grasp the datatype at the level of concepts and picturese.g., visualize a stack and the operations of pushing / popping • Understand simple applications • Simulate by hande.g., use a stack to reverse the order of letters in a word Lecture 1: Introduction

  11. Step 2: Specification • Write a specification for a Java class that could implement the datatype (see javadoc Appendix H) • Headings for constructor, public methods, public features • Includes precondition / postcondition for each method • Independent of implementation! Lecture 1: Introduction

  12. 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 Lecture 1: Introduction

  13. 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 Lecture 1: Introduction

  14. Step 5: Analysis • Correctness • Flexibility • When possible, compare different implementations of the same ADT • Time Analysis • number of operations • big-O notation, e.g., Lecture 1: Introduction

  15. 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 Lecture 1: Introduction

  16. 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 • we will not be using the collection classes Lecture 1: Introduction

  17. What You Should Know Already • How to use a Java development environment (java, javac, javadoc) • How to write, compile, and run short Java programs • Java primitive types (number types, char, boolean) and arrays • Easy to pick up with prior programming experience Lecture 1: Introduction

  18. Specifying a Java Method • Specification: what a method does not how it does it • A form of information hiding called procedural abstraction • Method signaturepublic static double celsiusToFahrenheit(double c) • Method calldouble fahrenheit = celsiusToFahrenheit(celsius); Lecture 1: Introduction

  19. 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 Lecture 1: Introduction

  20. 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). Lecture 1: Introduction

  21. 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 post-condition checks during debugging. Not during deployment. Lecture 1: Introduction

  22. Example Specification • celsiusToFahrenheitpublic static double celsiusToFahrenheit(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: IllegalArgument Exception Lecture 1: Introduction

  23. More on Pre/Postconditions • Slides from Main’s Lectures Lecture 1: Introduction

More Related