Docstoc

CSCI 4041_ Algorithms and Data Structures

Document Sample
CSCI 4041_ Algorithms and Data Structures Powered By Docstoc
					CSCI 4041: Algorithms and Data
          Structures
            Instructor:
         Mohamed Mokbel
       (mokbel@cs.umn.edu)

                                 1
              Welcome to CSCI 4041
• Your Host: Mohamed F. Mokbel
   Office: EE/CS 4-207
   Web: www.cs.umn.edu/~mokbel
   Email: mokbel@cs.umn.edu
          (Include [CSCI4041] on the Subject line)
   Office Hours: Tue, Thu: 12:30 PM – 1:30 PM (or by appointment)

• TA: Daa-hey Woo
     Email: dwoo@cs.umn.edu
     Office hours: Tue, Thu, 10:00 AM – 11:00 AM

     Ted Kaminski
     Email: edinski@cs.umn.edu
     Office hours: TBD
                                                             2
                   Welcome to CSCI 4041
• Text Book:
    Introduction to Algorithms (Second Edition)
         ISBN: 0-07-013151-1
    Thomas Cormen, Charles Leisrson, Ronald
         Rivest, Clifford Stein
    Book website:
         www.introductiontoalgorithms.com
         Chapters: 1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 15, 16, 18,
         19, 21, 22, 23, 24, 35



   Class web page:
      http://www-users.itlabs.umn.edu/classes/Fall-2008/csci4041/
      Tentative schedule is in the course web site
      Stay tuned for announcements, labs, homeworks, and grades
                                                                     3
                    Grading Policy
• Final Exam (25%): Inclusive

• Two Midterm Exams (25%): Second midterm will cover only
  the topics presented after the first midterm.

• Homeworks and Programming assignments (5 to 7): 50%.
• No late submission is accepted. Only justified serious
  circumstances (e.g., medical reasons) can be accommodated.

• Collaboration in homeworks: Discussion is allowed, yet, please
  write your own solution

• Collaboration in Exams: Not allowed.
                                                                   4
           Topics To be Covered
• PART I: Foundations (Chapters 1 – 4):
   – Why we are studying algorithms.
   – How do we measure the efficiency of an algorithm
   – Getting the sense of a good/bad algorithm


• PART II: Sorting (Chapters 6 – 8):
   – Why we need sorting.
   – Why do we need to study various algorithms for
     sorting
   – Which algorithm to use at which scenario
                                                        5
            Topics To be Covered
• PART III: Data Structures (Chapters 10 – 12):
   – Stacks, queues, linked list, hash tables, tree structures
   – Main functionalities: Insertion, deletion, updating,
     and searching
   – Which data structure to use at which scenario

• PART IV: Advanced Design and Analysis Technique
  (Chapters 16, 17):
   – Greedy Algorithms
   – Dynamic Programming

                                                                 6
              Topics To be Covered
• PART V: Advanced Data Structures (Chapters 18, 19, 21):
   – B-trees, Heaps, Disjoint Sets
   – Main functionalities: Insertion, deletion, updating, and
     searching
   – Which data structure to use at which scenario

• PART VI: Graph Algorithms (Chapters 22-25):
   –   Problems that can be represented as graphs
   –   Searching/traversing a graph
   –   Shortest path algorithms
   –   Minimum spanning trees


                                                                7
 Why we need to study Algorithms
• Performance:
  – Performance is a crucial part of software design
  – What other factors that could be more important
    than performance?


• Programming Skills



                                                       8
           Sorting Algorithms
• Sorting is one of the classical problems where
  there are dozens of algorithms to solve
• Input: A set of numbers a1, a2, ….an
• Output: A permutation of the input set: a`1,
  a`2, ….a`n where a`1 < a`2< ….< a`n
• Example: Sort the sequence: 5, 2, 4, 6, 1, 3
• What affects the performance of the sorting
  algorithm?
                                                   9
            Algorithm Efficiency
• Insertion Sort:
   – Average analysis: O(N2)  c1N2
• Merge Sort:
   – Average analysis: O(N Log2 N)  c2 N Log2 N
• Average analysis of an algorithm is the dominant
  factor regardless of the constants and computer
  power.
• Example: Sort 106 keys with Computer A (109
  instructions/sec, insertion sort with c1=2) Vs
  Computer B (107 instructions/sec, merge sort
  with c2=50)

                                                     10

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:90
posted:7/13/2011
language:English
pages:10