COP 3503C: Data Structures and Algorithm Analysis Analysis
Instructor Info•Name: Dr. Haiyan Nancy Hu•Research: Bioinformatics
•Create algorithms, computational and statistical techniques, and theory •For management and analysis of biological data.
•Contact:•Contact: •Email: [email protected]•Office: ENG3-412Office: ENG3 412•Phone: 407-882-0134•Office hours: MWF:9:30AM-10:30AM or by
7 January 2009 COP3503C spring09- Introduction 2appointment
TA infoTA infoRosa EncisoEmail: [email protected] Hours and Location: To be announced
Greg TenerEmail: [email protected] Hours and Location: To be announced
7 January 2009 COP3503C spring09- Introduction 3
General InfoGeneral Info
• All info is on webcourses@UCFAll info is on webcourses@UCF• Teaching style:
I t ti t hi l ti i ti i– Interactive teaching, class participation is highly encouragedCollaborative learning encourage learning– Collaborative learning, encourage learning from your peer
7 January 2009 COP3503C spring09- Introduction 5
Meeting TimeMeeting Time
• Lecture: MWF 10:30PM - 11:20PM ENG2 0102• Lab:
Th 10 00AM 10 50AM HEC 0302• Th 10:00AM – 10:50AM HEC 0302• Th 11:00AM – 11:50AM HEC 0302• Fr 8:30AM - 9:20AM ENGR 0383• Fr 8:30AM - 9:20AM ENGR 0383 • Fr 9:30AM - 10:20AM HEC 0302
7 January 2009 COP3503C spring09- Introduction 6
TextbookTextbook
• Data Structures and Algorithm Analysis inData Structures and Algorithm Analysis in Java by Mark Allen Weiss (ISBN: 0-321-37013-9)37013 9)
7 January 2009 COP3503C spring09- Introduction 7
LabLab
• TA lecture• Quizzes• Small exercises
Participation is counted toward finalgradegrade.
7 January 2009 COP3503C spring09- Introduction 8
Assignments• Use Java for the programming assignments.
– Supports sharing on the web (with applets),– Makes it easy to display data structures graphically.y p y g p y
• Submitted over webourses.http://webcourses.ucf.edu
• Four assignments including individual or groupprojects So please form groups as soon asprojects. So please form groups as soon aspossible (each group 5/6 people). Eachassignment will be introduced in class and then
t d th l bposted on the class web page.• Requirements for group project
– Major distribution and member exchange policyMajor distribution and member exchange policy– Work assignment policy: working as a team, each one
should contribute enough for any credit– Report problems when encountering mismatch
7 January 2009 COP3503C spring09- Introduction 9
– Report problems when encountering mismatch
GradingAssignments 40%
Two Midterms 20% (each 10%)
Final exam 20%
Lecture & Lab Participation 10%Lecture & Lab Participation 10%
Quizzes 10%Quizzes 10%
7 January 2009 COP3503C spring09- Introduction 10
Deadlines and Late PolicyDeadlines and Late Policy
• Due date/timeDue date/time– Will be specified as the assignments posted.
Late Policy• Late PolicyIf you missed the due date/time, you have an additional 24 hours to submit with a 10% late-penalty reduction. After 24 hours, no submission is accepted.
• No make-up midterms or assignments7 January 2009 COP3503C spring09- Introduction 11
Academic Misconducthttp://www goldenrule sdes ucf edu/2ehttp://www.goldenrule.sdes.ucf.edu/2e_
Rules.html• Unauthorized assistance: communication to another through g
written, visual, electronic, or oral means. The presentation of material which has not been studied or learned, but rather was obtained solely through someone else’s efforts and used as part of an examination course assignment orused as part of an examination, course assignment or project. The unauthorized possession or use of examination or course related material may also constitute cheating.
• Plagiarism: whereby another’s work is used or appropriated without any indication of the source, thereby attempting to convey the impression that such work is the student’s ownconvey the impression that such work is the student s own.
• Any student who knowingly helps another violate academic behavior standards is also in violation of the standards
7 January 2009 COP3503C spring09- Introduction 12
behavior standards is also in violation of the standards.
• What you have learned in the prerequisiteWhat you have learned in the prerequisite class?
• What you expect to learn in this class?
7 January 2009 COP3503C spring09- Introduction 13
Class OverviewClass Overview• Introduce a variety of basic data structures
and algorithms used in computer software.• Learn how to implement them.p• Practice design and analysis of these data
structuresstructures.• Learn when to apply them and practice
using these data structures by problemusing these data structures by problem solving.
7 January 2009 COP3503C spring09- Introduction 14
ObjectiveObjective• You will understand
– what the tools are for storing and processing common data types
– which tools are appropriate for which needwhich tools are appropriate for which need• So that you can
– make good design choices as a developer, project manager or system customermanager, or system customer
• You will be able to– Justify your design decisions via formal reasoning– Communicate ideas about programs clearly and
precisely
7 January 2009 COP3503C spring09- Introduction 15
Picking the best D S f h j bData Structure for the job
• The data structure you pick needs to support the operations you needpp p y
• Ideally it supports the operations you will use most often in an efficient manneruse most often in an efficient manner
• Examples of operations:A List with operations i t and d l t– A List with operations insert and delete
– A Stack with operations push and pop
7 January 2009 COP3503C spring09- Introduction 16
Course Topics: class calendarCourse Topics: class calendar
• Introduction to Algorithm AnalysisIntroduction to Algorithm Analysis• Search Algorithms and Trees• Hashing and HeapsHashing and Heaps• Sorting• Disjoint Sets• Disjoint Sets• Graph Algorithms• Algorithm design techniques• Algorithm design techniques
– Greedy, Divide and Conquer, Dynamic Programming…
7 January 2009 COP3503C spring09- Introduction 17
Programming…
TerminologyTerminology• Abstract Data Type (ADT)• Algorithm• Algorithm• Data structure• Implementation of data structure• Implementation of data structure
7 January 2009 COP3503C spring09- Introduction 18
TerminologyTerminology• Abstract Data Type (ADT)
Mathematical description of an object with set of– 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• Data structure
– A specific family of algorithms for implementing an abstract data type.
• Implementation of data structure– A specific implementation in a specific language
7 January 2009 COP3503C spring09- Introduction 19
In simple wordsIn simple words…Abstract Data Types (ADT)› Objects + operations Use your intuition!j p› E.g., a stack that allows push and pop
Data StructuresData Structures› A step-by-step description of how an ADT is realized in pseudo code
E g sing an arra or a list Proof by Induction &› E.g., using an array or a list
ProgramsA t l i l t ti f ADT b d
Proof by Induction & Asymptotic Analysis
› An actual implementation of an ADT based on particular data structures› E.g., java.util.Stack Test the program with
l d t !7 January 2009 COP3503C spring09- Introduction 20
g j real data!
Why So Many Data Structures?Ideal data structure:Ideal data structure:
“fast”, “elegant”, memory efficientGenerates tensions:Generates tensions:
– time vs. space– performance vs elegance– performance vs. elegance– generality vs. simplicity– one operation’s performance vs another’sone operation s performance vs. another s
The study of data structures is the study of
7 January 2009 COP3503C spring09- Introduction 21
tradeoffs. That’s why we have so many of them!
First Example: Queue ADTFirst Example: Queue ADT
• FIFO: First In First Out• Queue operations
createdestroy F E D C Benqueue dequeueG Aenqueuedequeue
F E D C BG A
is_empty
7 January 2009 COP3503C spring09- Introduction 22
Circular Array Queue DataCircular Array Queue Data Structure
Qb c d e f
Q0 size - 1
front back
enqueue(Object x) {Q[back] = x ;b k (b k 1) % i
front back
How test for empty list?
How to find K-thback = (back + 1) % size}
dequeue() {
How to find K th element in the queue?
What is complexity of x = Q[front] ;front = (front + 1) % size;return x ;
p ythese operations?
Limitations of this
7 January 2009 COP3503C spring09- Introduction 23
return x ;}
structure?
Linked List Queue Data Structureb c d e f
front back
void enqueue(Object x) {if (is_empty())
front = back = new Node(x)
Object dequeue() {assert(!is_empty)return_data = front->data
elseback->next = new Node(x)back = back->next
temp = frontfront = front->nextdelete temp
}bool is_empty() {
return front == null
return return_data}
7 January 2009 COP3503C spring09- Introduction 24
}
Circular Array vs Linked ListCircular Array vs. Linked List
• Too much space • Can grow as neededToo much space• Kth element accessed
“easily”
Can grow as needed• Can keep growing• No back loopingy
• Not as complex• Could make array
No back looping around to front
• Linked list code moreCould make array more robust
Linked list code more complex
7 January 2009 COP3503C spring09- Introduction 25
Second Example: Stack ADTSecond Example: Stack ADT• LIFO: Last In First Out• Stack operations
– create– destroy– push
pop
A
B
E D C B A
– pop– top– is_empty
BCDE
_ p yEF F
7 January 2009 COP3503C spring09- Introduction 26
Stacks in PracticeStacks in Practice
• Function call stackFunction call stack• Removing recursion
B l i b l ( th )• Balancing symbols (parentheses)• Evaluating Reverse Polish Notation
7 January 2009 COP3503C spring09- Introduction 27
Algorithm Analysis: Why?Algorithm Analysis: Why?• Correctness:
– Does the algorithm do what is intended.– How well does the algorithm complete its goal
• Performance:– What is the running time of the algorithm.
How much storage does it consume– How much storage does it consume.• Different algorithms may correctly solve a given
task– Which should I use?
7 January 2009 COP3503C spring09- Introduction 29
Algorithm for sumAlgorithm for sum
• Find the sum of the first n integers storedFind the sum of the first n integers stored in an array v.
7 January 2009 COP3503C spring09- Introduction 30
Iterative algorithm for sumIterative algorithm for sum
• Find the sum of the first n integersFind the sum of the first n integers stored in an array v.
sum(integer array v, integer n) returns i tintegerlet sum = 0for i = 1...nsum = sum + ith number
return sum
• Note the use of pseudocode
7 January 2009 COP3503C spring09- Introduction 31
Recursive algorithm for sumRecursive algorithm for sum
• Write a recursive function to find the sumWrite a recursive function to find the sum of the first n integers stored in array v.
sum(integer array v, integer n) returns integerif n = 0 thenif n 0 thensum = 0
elsesum = nth number + sum of first n-1
numbersreturn sum
7 January 2009 COP3503C spring09- Introduction 32
return sum
Proof by InductionProof by Induction
• Basis Step: The algorithm is correct for aBasis Step: The algorithm is correct for a base case or two by inspection.
• Inductive Hypothesis (n=k): Assume thatInductive Hypothesis (n k): Assume that the algorithm works correctly for the first k cases.
• Inductive Step (n=k+1): Given the hypothesis above, show that the k+1 case ypwill be calculated correctly.
7 January 2009 COP3503C spring09- Introduction 33
Program Correctness by InductionProgram Correctness by Induction
• Basis Step: sum(v,0) = 0.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. y ,v[0]+v[1]+…+v[k-1]
• Inductive Step (n=k+1): sum(v,n) returnsv[k]+sum(v,k)= (by inductive hyp.)v[k]+(v[0]+v[1]+…+v[k-1])=v[0]+v[1]+…+v[k-1]+v[k]
7 January 2009 COP3503C spring09- Introduction 34
Algorithms vs ProgramsAlgorithms vs Programs
• Proving correctness of an algorithm is veryProving 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
i l t ti ) i f ht ith i d bimplementation) is fraught with weird bugs– Abstract Data Types are a way to bridge the gap
between mathematical algorithms and programsbetween mathematical algorithms and programs
7 January 2009 COP3503C spring09- Introduction 35
Quiz #11. Name and PID:2. Java experience:
no experienceone or two programs, but have not written appletsone or two programs, including an applet or twothree or more programs, with or without applets
3 Uni e perience3. Unix experience:4. Major subject at UCF:5. When did you take COP3502?
Grade received in COP3502 (if you took it):Grade received in COP3502 (if you took it): 6. Any special interest related to the course: 7. Any special interest not necessarily related to the course: 8. If you have a personal web page, you are encouraged to share it8. If you have a personal web page, you are encouraged to share it here by giving the URL:9. Optional comments:
7 January 2009 COP3503C spring09- Introduction 36