Class: CS251 Data Structures And Algorithms (Fall 2017)

    Lecture room: Mathematical Sciences Building, room 175

    Lecture times are MWF:   9:30-10:20am (Atallah)   10:30-11:20am (Tricoche)

Instructors:

    Mikhail (Mike) Atallah)   Office: LWSN 2116D   Email: matallah@purdue.edu   Office Hours: After the end of each class

    Xavier Tricoche   Office: LWSN 3154P   Email: xmt@purdue.edu   Office Hours: MWF 1:00-2:00pm

Course objective:

The goal of the course is to provide students with knowledge of the techniques used for designing data structures and algorithms, analyzing their time and space requirements, and using them to efficiently solve important practical problems. That knowledge includes both theoretical and implementation aspects of data structures and algorithms.

List of course topics

Course work weights that will be used for letter-grade computation:

    40% for projects (5 x 8%)

    10% for homework (2 x 5%)

    20% for midterm exam

    25% for final exam

    5% for quizzes

Course standards and policies

Signing academic integrity policy

Piazza

News items:

* Midterm exam is an evening exam, on Oct 18 - 8-10pm in LILY 1105 and LILY G126

To compensate for the evening midterm, we'll cancel the class of November 20

* Please register your i>clicker on Blackboard

Project and homework assignments:

    Project 1 (due 9/11/2017)

    Project 2 (due 9/25/2017)

    Homework 1 (filled scantron due 10/2/2017, blanks will be distributed in class on 9/25/2017)

Solution keys to some quizzes, homework, etc:

    Quiz 1 of LE 1

    Quiz 1 of LE 2

    Quiz 2 of LE 1

    Quiz 2 of LE 2

Teaching materials:

    Textbook: Algorithms, 4th Edition, Robert Sedgewick and Kevin Wayne

    Slides used in lectures (copyrighted to textbook authors):

        1. Introduction

        2. Proof techniques

        3. Stacks, queues

        4. Analysis

        5. Elementary sorts

        6. Merge sort

        7. Quick sort

        8. Priority queues

        9. Symbol tables

        10. Binary search trees

        11. Balanced search trees

        12. Hash tables

        13. Undirected graphs

        14. Directed graphs

        15. Minimum spanning trees

        16. Shortest path

        17. String sorts

        18. Tries

        19. Compression

        20. Substring search

        21. Regular expressions

        22. Geometrix search

        23. Dynamic programming

        24. Reductions