Computer Science 226
         Algorithms and Data Structures
                                                  Fall 2007


                                                              Instructors:
                                                                 Bob Sedgewick
                                                                 Kevin Wayne
Copyright © 2007 by Robert Sedgewick and Kevin Wayne.
Course Overview

       outline
       why study algorithms?
       usual suspects
       coursework
       resources (web)
       resources (books)




                               2
COS 226 course overview

    What is COS 226?
    •Intermediate-level survey course.
    •Programming and problem solving with applications.
    •Algorithm: method for solving a problem.
    •Data structure: method to store information.


               Topic                  Data Structures and Algorithms

             data types          stack, queue, list, union-find, priority queue

               sorting           quicksort, mergesort, heapsort, radix sorts

              searching            hash table, BST, red-black tree, B-tree

               graphs                 BFS, DFS, Prim, Kruskal, Dijkstra

               strings             KMP, Rabin-Karp, TST, Huffman, LZW

              geometry             Graham scan, k-d tree, Voronoi diagram




                                                                                  3
Why study algorithms?

    Their impact is broad and far-reaching

    Internet. Web search, packet routing, distributed file sharing.

    Biology. Human genome project, protein folding.

    Computers. Circuit layout, file system, compilers.

    Computer graphics. Movies, video games, virtual reality.

    Security. Cell phones, e-commerce, voting machines.

    Multimedia. CD player, DVD, MP3, JPG, DivX, HDTV.

    Transportation. Airline crew scheduling, map routing.

    Physics. N-body simulation, particle collision simulation.

    …


                                                                      4
Why study algorithms?

    Old roots, new opportunities
                                                   300 BC



    Study of algorithms dates at least to Euclid



    Some important algorithms were discovered
    by undergraduates!




                                                    1920s

                                                   1940s
                                                   1950s
                                                   1960s
                                                   1970s
                                                   1980s
                                                   1990s
                                                   2000s


                                                            5
Why study algorithms?

    To be able solve problems that could not otherwise be addressed

    Example: Network connectivity

    [stay tuned]




                                                                      6
Why study algorithms?

    For intellectual stimulation




                                   7
Why study algorithms?

     They may unlock the secrets of life and of the universe.



     Computational models are replacing mathematical models
     in scientific enquiry

                                              for (double t = 0.0; true; t = t + dt)
       E = mc 2                                  for (int i = 0; i < N; i++)
                                   Gm1 m 2
                             F =                 {
       F = ma                       r2              bodies[i].resetForce();
                                                    for (int j = 0; j < N; j++)
                                                       if (i != j)
          h2   2                                          bodies[i].addForce(bodies[j]);
                   + V (r)    (r) = E   (r)      }
          2m

               20th century science                        21st century science
                 (formula based)                            (algorithm based)




                                                                                           8
Why study algorithms?

     For fun and profit




                          9
Why study algorithms?




     • Their impact is broad and far-reaching
     • Old roots, new opportunities
     • To be able to solve problems that could not otherwise be addressed
     • For intellectual stimulation
     • They may unlock the secrets of life and of the universe
     • For fun and profit




                                                                            10
The Usual Suspects

    Lectures: Bob Sedgewick
      •TTh 11-12:20, Bowen 222
      •Office hours T 3-5 at Cafe Viv in Frist
    Course management (everything else): Kevin Wayne

    Precepts: Kevin Wayne
    • Thursdays.
        1: 12:30 Friend 110
        2: 3:30 Friend 109
    • Discuss programming assignments, exercises, lecture material.
    • First precept meets Thursday 9/20
    • Kevin’s office hours TBA

    Need a precept time? Need to change precepts?
    • email Donna O’Leary (CS ugrad coordinator)
      doleary@cs.princeton.edu

    Check course web page for up-to-date info
                                                                      11
Coursework and Grading

    7-8 programming assignments. 45%
    • Due 11:55pm, starting Monday 9/24.
    • Available via course website.

    Weekly written exercises. 15%
    •Due at beginning of Wednesday lecture, starting 9/24.
    •Available via course website.

    Exams.
                                                                   Final
    • Closed-book with cheatsheet.
    • Midterm. 15%                                  Programs
    • Final.    25%
                                                                         HW
    Staff discretion. Adjust borderline cases.
    • Participation in lecture and precepts                    Midterm
    • Everyone needs to meet us both at office hours!

    Challenge for the bored. Determine importance of 45-15-15-25 weights
                                                                              12
Resources (web)

    Course content.
      http://www.princeton.edu/~cos226

     • syllabus
     • exercises
     • lecture slides
     • programming assignments (description, code, test data, checklists)
    Course administration.
     https://moodle.cs.princeton.edu/course/view.php?id=24

     • programming assignment submission.
     • grades.
    Booksites.
    http://www.cs.princeton.edu/IntroCS
    http://www.cs.princeton.edu/IntroAlgsDS

     • brief summary of content.
     • code.
     • links to web content.
                                                                            13
Resources (books)

    Algorithms in Java, 3rd edition
     • Parts 1-4. [sorting, searching]
     • Part 5. [graph algorithms]



    Introduction to Programming in Java
     • basic programming model
     • elementary AofA and data structures



    Algorithms in Pascal(!)/C/C++, 2nd edition
     • strings
     • elementary geometric algorithms



    Algorithms, 4th edition
      (in preparation)

                                                 14
Union-Find




             15

Ds & ada

  • 1.
    Computer Science 226 Algorithms and Data Structures Fall 2007 Instructors: Bob Sedgewick Kevin Wayne Copyright © 2007 by Robert Sedgewick and Kevin Wayne.
  • 2.
    Course Overview outline why study algorithms? usual suspects coursework resources (web) resources (books) 2
  • 3.
    COS 226 courseoverview What is COS 226? •Intermediate-level survey course. •Programming and problem solving with applications. •Algorithm: method for solving a problem. •Data structure: method to store information. Topic Data Structures and Algorithms data types stack, queue, list, union-find, priority queue sorting quicksort, mergesort, heapsort, radix sorts searching hash table, BST, red-black tree, B-tree graphs BFS, DFS, Prim, Kruskal, Dijkstra strings KMP, Rabin-Karp, TST, Huffman, LZW geometry Graham scan, k-d tree, Voronoi diagram 3
  • 4.
    Why study algorithms? Their impact is broad and far-reaching Internet. Web search, packet routing, distributed file sharing. Biology. Human genome project, protein folding. Computers. Circuit layout, file system, compilers. Computer graphics. Movies, video games, virtual reality. Security. Cell phones, e-commerce, voting machines. Multimedia. CD player, DVD, MP3, JPG, DivX, HDTV. Transportation. Airline crew scheduling, map routing. Physics. N-body simulation, particle collision simulation. … 4
  • 5.
    Why study algorithms? Old roots, new opportunities 300 BC Study of algorithms dates at least to Euclid Some important algorithms were discovered by undergraduates! 1920s 1940s 1950s 1960s 1970s 1980s 1990s 2000s 5
  • 6.
    Why study algorithms? To be able solve problems that could not otherwise be addressed Example: Network connectivity [stay tuned] 6
  • 7.
    Why study algorithms? For intellectual stimulation 7
  • 8.
    Why study algorithms? They may unlock the secrets of life and of the universe. Computational models are replacing mathematical models in scientific enquiry for (double t = 0.0; true; t = t + dt) E = mc 2 for (int i = 0; i < N; i++) Gm1 m 2 F = { F = ma r2 bodies[i].resetForce(); for (int j = 0; j < N; j++) if (i != j) h2 2 bodies[i].addForce(bodies[j]); + V (r) (r) = E (r) } 2m 20th century science 21st century science (formula based) (algorithm based) 8
  • 9.
    Why study algorithms? For fun and profit 9
  • 10.
    Why study algorithms? • Their impact is broad and far-reaching • Old roots, new opportunities • To be able to solve problems that could not otherwise be addressed • For intellectual stimulation • They may unlock the secrets of life and of the universe • For fun and profit 10
  • 11.
    The Usual Suspects Lectures: Bob Sedgewick •TTh 11-12:20, Bowen 222 •Office hours T 3-5 at Cafe Viv in Frist Course management (everything else): Kevin Wayne Precepts: Kevin Wayne • Thursdays. 1: 12:30 Friend 110 2: 3:30 Friend 109 • Discuss programming assignments, exercises, lecture material. • First precept meets Thursday 9/20 • Kevin’s office hours TBA Need a precept time? Need to change precepts? • email Donna O’Leary (CS ugrad coordinator) [email protected] Check course web page for up-to-date info 11
  • 12.
    Coursework and Grading 7-8 programming assignments. 45% • Due 11:55pm, starting Monday 9/24. • Available via course website. Weekly written exercises. 15% •Due at beginning of Wednesday lecture, starting 9/24. •Available via course website. Exams. Final • Closed-book with cheatsheet. • Midterm. 15% Programs • Final. 25% HW Staff discretion. Adjust borderline cases. • Participation in lecture and precepts Midterm • Everyone needs to meet us both at office hours! Challenge for the bored. Determine importance of 45-15-15-25 weights 12
  • 13.
    Resources (web) Course content. http://www.princeton.edu/~cos226 • syllabus • exercises • lecture slides • programming assignments (description, code, test data, checklists) Course administration. https://moodle.cs.princeton.edu/course/view.php?id=24 • programming assignment submission. • grades. Booksites. http://www.cs.princeton.edu/IntroCS http://www.cs.princeton.edu/IntroAlgsDS • brief summary of content. • code. • links to web content. 13
  • 14.
    Resources (books) Algorithms in Java, 3rd edition • Parts 1-4. [sorting, searching] • Part 5. [graph algorithms] Introduction to Programming in Java • basic programming model • elementary AofA and data structures Algorithms in Pascal(!)/C/C++, 2nd edition • strings • elementary geometric algorithms Algorithms, 4th edition (in preparation) 14
  • 15.