EECS Main > People > Faculty > Jason D. Hartline > Courses > EECS 336

EECS 311 - Data Structures & Data Management
Fall 2010

Required Text: Weiss, Data Structures and Algorithm Analysis in Java, 2nd Edition, Addison-Wesley, 2007. [order]
Lectures: Tuesday, Thursday; 2:00pm-3:20am in Tech M164.
Instructor: Jason D. Hartline.
Office Hours: Wednesday 1:30pm-2:30pm, and by appointment; Ford 3-329.

Teaching Assistants. Michael Lucas, mlucas [at] u.northwestern.edu
Problem Solving Section: Monday, 5-6pm, Tech MG28.

Announcements:

  • 9/21/10: For tips on basic proof techniques consult Chapter 1 of the text or the course notes for EECS 310: Discrete Math. In particular, see the EECS 310 lecture notes on proofs and induction.
  • 10/19/10: The midterm will be on 10/28/10 in class. You may bring one handwritten sheet of notes. Expect questions like those on this sample midterm.
  • 10/28/10: Project 1 has been posted.
  • 11/27/10: The final will be on 12/2/10 in class. You may bring one handwritten sheet of notes. Expect questions like those on this sample final.

Overview. Data structures play a fundamental role in the computer system design and programming. Efficient data structures are important for enabling efficient algorithms, especially where there are tradeoffs to be made between initializing, accessing, and manipulating data. For instance Google Inc.'s remarkable success relies on their ability to easily access vast amounts of data in efficient data structures. This course focuses on the design, implementation, and analysis of abstract data types, data structures and their algorithms. Topics include: data and procedural abstraction, linked lists, stacks, queues, binary trees, searching, and sorting.

Prerequisites. EECS 211 (Fundamentals of Computer Programming II) or EECS 231 (Advanced Programming for Computer Engineers). Previous or concurrent enrollment in EECS 310 (Mathematical Foundations of Computer Science) is highly recommended.

Grading.

  • Problem Sets (30%) Weekly problem sets will test students understanding of core course concepts. Problem sets must be done individually. Problems sets will be graded on a 20 point scale.
  • Programming Assignments (30%) There will be 3 programming assignments to ensure that students can translate the theoretical course concepts into practical implementations. Programming assignments must be implemented in Java.
  • Midterm (15%) There will be one in-class closed-book closed-notes midterm examination. Students may bring one sheet of handwritten notes to the exam.
  • Final (25%) There will be a comprehensive closed-book closed-notes final examination. Students may bring one sheet of handwritten notes to the exam.
  • Classroom Participation (Bonus 3%) Students who contribute positively to classroom will receive up to 3% bonus on their final grade.

Homework: Homework 1, Homework 2, Homework 3, Homework 4, Homework 5, Homework 6, Homework 7, Homework 8.

Programming Assignments: Programming Assignment 1, Programming Assignment 2.

Homework Policies. Problem sets and programming assignments shall be done individually. You may discuss them at a high level with your classmates; however, to ensure academic integrity you should not take any notes during your discussions. You may consult your text book, TA, and instructor for help with problem sets; you may not consult the Internet. Problem sets will be assigned weekly on Thursday and due the following Thursday at the beginning of class. Problem sets turned in after Thursday but before the Monday section will be accepted at a 25% penalty.

Tentative Schedule:

  • Week 1: Introduction to data structures, redundant binary counter, runtime analysis. (Reading: Chapters 1 and 2)
  • Week 2: Abstract data types, stacks, queues, lists, dynamic resizing (Reading: Chapter 3)
  • Week 3: Trees, tree traversals, representations, dictionary ADT (Reading: Chapter 4)
  • Week 4: binary search trees, AVL trees, splay trees. (Reading: Splay Tree handout [Part I] [Part II])
  • Week 5: Hash tables, hash functions, collision handling schemes, probability, universal hashing (Reading: Chapter 5, Hash table handout [pdf], Notes on probability [Part I] [Part II] )
  • Week 6: (Midterm) Graphs, graph representations, graph traversals, breadth first search, depth first search. (Reading: Chapter 9, Sections 1 and 2)
  • Week 7: Graph algorithms, topological sort, shortest paths, minimum spanning trees. (Reading Chapter 9, Sections 3 (except 3.3-3.5) and 5)
  • Week 8: Priority queues, heaps. (Reading: Chapter 6)
  • Week 9: Disjoint sets, union-find. (Reading: Chapter 8)
  • Week 10: (Final Exam) Union-find (cont.)

[cover]

Northwestern University Robert R. McCormick School of Engineering
and Applied Science Electrical Engineering and Computer Science Department