SYDE 223 – Data Structures & Algorithms
All course material, information, announcements and communication via “LEARN.uwaterloo.ca”
Overview
Winter 2012
Course Outline
The Data Structures and Algorithms course emphasizes the following topics: structured
software design data structures, abstract data types, recursive algorithms, algorithm
analysis and design, sorting and searching, hashing, and problem-solving strategies.
Lectures and Tutorials
First Lecture: Tuesday January 3, 2012
Last Lecture: Thursday March 29, 2012
Lectures: Tuesdays 12:30pm – 1:50pm
Thursdays 12:30pm – 1:50pm
Tutorials: Thursdays 02:00pm – 2:50pm
Location: E5 6008
Reading Week: February 20-24, 2012
Instructor: Professor H.R. Tizhoosh
• Email: tizhoosh AT uwaterloo DOT ca
• Website: pami.uwaterloo.ca/tizhoosh
• Office: DWE 2513F
• Phone: x36751
Office Hours
• Days: Thursdays
• Time: 5:30pm – 7:00pm
• Location: DWE 2513F
Teaching Assistants
• DeWolf, Travis
• Hesham, Tameem
• Narayan, Apurva
Textbook
• Algorithms in Java by Robert Sedgewick, Parts 1-4 (3rd
Edition) (Pts.1-4) [Paperback], Paperback: 768 pages,
Publisher: Addison-Wesley Professional; August 2, 2002, ISBN-
10: 0201361205
Lecture Topics
Week Topic Textbook Chapters
1. Week Introduction 1
2. Week Algorithm Analysis 2
3. Week
Lists, linked lists, stacks, queues 3, 4
4. Week
5. Week Recursion and Trees 5
6. Week Elementary Sorting 6
7. Week Quicksort and Mergesort 7, 8
8. Week Priority Queues and Heapsort 9
9. Week Symbol Tables and Binary Search 12
10. Week Balanced Trees 13
11. Week Hashing 14
12. Week Hashing & Graphs 14
13. Week Graphs and NP Problems Not in textbook
Note: Chapters 10, 11, 15 and 16 may not be covered.
Grading Scheme
• Quizzes/Assignments (6): 12%
• Midterm Exam: 38%
• Final Exam: 50%
Course Objectives
• To study data structures (Linked Lists, Stacks, Queues, Trees and Graphs),
their techniques and their role in the design of efficient algorithms.
• To study concepts of analyzing space and time efficiency of algorithms.
• To study techniques such as searching, data compression and sorting
(internal and external) and the role of data structures in the design and
implementation of algorithmic techniques.
• To gain experience in modular programming through the concept of data-
algorithm abstraction.