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.)
|
|