1 / 23

Introduction

Introduction. CSE 373 Data Structures. Staff. Instructor Steven L. Tanimoto, tanimoto@cs.washington.edu TA’s Ning Chen, ning@cs.washington.edu Scott Schremmer, scotths@cs.washington.edu. Steven L. Tanimoto. Professor of Computer Science and Engineering

rcassel
Download Presentation

Introduction

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. Introduction CSE 373 Data Structures

  2. Staff • Instructor • Steven L. Tanimoto, tanimoto@cs.washington.edu • TA’s • Ning Chen, ning@cs.washington.edu • Scott Schremmer, scotths@cs.washington.edu CSE 373 Au 04- Introduction

  3. Steven L. Tanimoto • Professor of Computer Science and Engineering • Research: Applications of Visual Information Processing and • Artificial Intelligence in Learning and Teaching CSE 373 Au 04- Introduction

  4. Web Page • All info is on the web page for CSE 373 • http://www.cs.washington.edu/373 • also known as • http://www.cs.washington.edu/education/courses/373/04au CSE 373 Au 04- Introduction

  5. Office Hours • Steve Tanimoto – 638 CSE (Allen Center) • Tu 1:30-2:20, F 2:30-3:20 (tentative) • or by appointment • Ning Chen – to be announced • Scott Schremmer – to be announced CSE 373 Au 04- Introduction

  6. CSE 373 E-mail List • If you are registered for the course by October 4, you will be automatically registered. Otherwise, subscribe by going to the class web page. • E-mail list is used for posting announcements by instructor and TAs. CSE 373 Au 04- Introduction

  7. Computer Lab • Math Sciences Computer Center • http://www.ms.washington.edu/ • We’ll be using Java for the programming assignments. • Supports sharing on the web (with applets), • Makes it easy to display data structures graphically. CSE 373 Au 04- Introduction

  8. Textbook • Data Structures and Algorithms in Java, by Goodrich and Tamassia, 3rd edition. • Either buy it at the U. Bookstore for $92 or read it free online after joining the IEEE Computer Society (see our home page). CSE 373 Au 04- Introduction

  9. GradingEstimated Breakdown: • Assignments 25% • Project 20% • Midterms 20% (Oct 25, Nov 19) • Participation 10% • Peer evaluations, selected class activities, virtual section activities. • Final 25% • 8:30-10:20 a.m. Thursday, Dec. 16, 2004 CSE 373 Au 04- Introduction

  10. Class Overview • Introduction to many of the basic data structures used in computer software • Understand the data structures • Analyze the algorithms that use them • Know when to apply them • Practice design and analysis of data structures. • Practice using these data structures by writing programs. • Data structures are the plumbing and wiring of programs. CSE 373 Au 04- Introduction

  11. Goal • You will understand • what the tools are for storing and processing common data types • which tools are appropriate for which need • So that you will be able to • make good design choices as a developer, project manager, or system customer CSE 373 Au 04- Introduction

  12. Course Topics • Introduction to Algorithm Analysis • Lists, Stacks, Queues • Search Algorithms and Trees • Hashing and Heaps • Sorting • Disjoint Sets • Graph Algorithms CSE 373 Au 04- Introduction

  13. Reading • Handout on Math Background for CSE 373 (for Oct. 1) • Chapters 1 of Data Structures and Algorithms in Java, by Goodrich and Tamassia (a review of basic Java material, for Oct 4) • Also read Chapter 2 to refresh your knowledge of CSE 143 material during the week of Oct 4. CSE 373 Au 04- Introduction

  14. Data Structures: What? • Need to organize program data according to problem being solved • Abstract Data Type (ADT) - A data object and a set of operations for manipulating it • List ADT with operations insert and delete • Stack ADT with operations push and pop • Note similarity to Java classes • private data structure and public methods CSE 373 Au 04- Introduction

  15. Data Structures: Why? • Program design depends crucially on how data is structured for use by the program • Implementation of some operations may become easier or harder • Speed of program may dramatically decrease or increase • Memory used may increase or decrease • Debugging may be become easier or harder CSE 373 Au 04- Introduction

  16. Terminology • Abstract Data Type (ADT) • Mathematical description of an object with set of operations on the object. Useful building block. • Algorithm • A high level, language independent, description of a step-by-step process • Data structure • A specific family of algorithms for implementing an abstract data type. • Implementation of data structure • A specific implementation in a specific language CSE 373 Au 04- Introduction

  17. Algorithm Analysis: Why? • Correctness: • Does the algorithm do what is intended. • Performance: • What is the running time of the algorithm. • How much storage does it consume. • Different algorithms may correctly solve a given task • Which should I use? CSE 373 Au 04- Introduction

  18. Iterative Algorithm for Sum • Find the sum of the first num integers stored in an array v. sum(v[ ]: integer array, num: integer): integer{ temp_sum: integer ; temp_sum := 0; for i = 0 to num – 1 do temp_sum := v[i] + temp_sum; return temp_sum; } Note the use of pseudocode CSE 373 Au 04- Introduction

  19. Programming via Recursion • Write a recursive function to find the sum of the first num integers stored in array v. sum (v[ ]: integer array, num: integer): integer { if num = 0 then return 0 else return v[num-1] + sum(v,num-1); } base case recursive case CSE 373 Au 04- Introduction

  20. Pseudocode • In the lectures algorithms will be presented in pseudocode. • This is very common in the computer science literature • Pseudocode is usually easily translated to real code. • This is programming language independent CSE 373 Au 04- Introduction

  21. Proof by Induction • Basis Step: The algorithm is correct for the base case (e.g. n=0) by inspection. • Inductive Hypothesis (n=k): Assume that the algorithm works correctly for the first k cases, for any k. • Inductive Step (n=k+1):Given the hypothesis above, show that the k+1 case will be calculated correctly. CSE 373 Au 04- Introduction

  22. Program Correctness by Induction • Basis Step: sum(v,0) = 0.  • Inductive Hypothesis (n=k): Assume sum(v,k) correctly returns sum of first k elements of v, i.e. v[0]+v[1]+…+v[k-1] • Inductive Step (n=k+1): sum(v,n) returns v[k]+sum(v,k)which is the sum of first k+1 elements of v.  CSE 373 Au 04- Introduction

  23. Algorithms vs Programs • Proving correctness of an algorithm is very important • a well designed algorithm is guaranteed to work correctly and its performance can be estimated • Proving correctness of a program (an implementation) is fraught with weird bugs • Abstract Data Types are a way to bridge the gap between mathematical algorithms and programs CSE 373 Au 04- Introduction

More Related