EECS 214: Data Structures

Syllabus – Fall 2017

Tech L361, TuTh, 9:30–10:50 AM

Course staff & office hours

Instructor: Jesse Tov jesse@eecs Ford 2-215 Gladly by appointment
Peer TAs: Matt Cheung mattcheung2019@u M 11 AM–1 PM
Jared Schifrien jaredschifrien2018@u M 5–7 PM
Sameena Khan sameenakhan2018@u Tu 12–2 PM
Ellie Tyger elizabethtyger2018@u Tu 3–5 PM
Emma McDonnell emmamcdonnell2019@u W 1–3 PM
Daniel Zhu xinyuanzhu2020@u * W 3–5 PM
Nathan Lindquist nathanlindquist2018@u Th 12–2 PM
Vickie Li vickieli2018@u Th 2–4 PM
Scott Renshaw scottrenshaw2018@u Th 5–7 PM

* Ford 3rd floor kitchen     † Wilkinson lab

General information

EECS 214 teaches the design, implementation, analysis, and proper application of abstract data types, data structures, and their algorithms. Topics include: data versus information, correctness, asymptotic analysis, and a wide variety of data structures.


This course assumes familiarity with programming as taught in EECS 111 and 211.


We will have two in-class examinations:

There will be no final exam.



We will be using a programming language called Data Structures Student Language (Version 2), or DSSL2 for short. It runs inside the Dr Racket environment, so you will need to install the latest version of that.

To install DSSL2, you must first run Dr Racket. Then copy this URL to your clipboard:

Go the the File menu in Dr Racket, and choose Install Package…. In the box that appears, paste the URL from above, and then click the Install button. When it’s done, the Install button will change to Update, indicating that the package is installed. (If changes are made to DSSL in the future then you will use this same procedure to update it.)


There is no required textbook, but you may find these books useful:

Online resources


This table specifies the lecture schedule; topics are tentative.

Tu Th
19 Intro: What’s a data structure? [slides] 21 Structs and arrays in DSSL [slides: 1 2]
26Linked lists [slides, code] 28Big-O notation [slides]
3Abstract data types; stack and queue ADTs [slides, code: 1 2] 5Dictionary ADT; binary search trees [slides: 1 2]
10Trees and tree walks [slides, code] 12Graphs and their representations [slides]
17Graph search [slides] 19Review session
24Exam 1 26 Dijkstra’s algorithm; priority queue ADT; binary heaps [slides: 1 2]
31 Minimum spanning tree; disjoint sets ADT; union-find [slides: 1 2] 2 Amortized analysis; dynamic arrays [slides]
7 Hashing; hash tables [slides, code] 9 Random binary search trees [slides, code]
14 AVL trees; representation invariants [slides, code] 16 Red-black trees [slides, code]
21 Bloom filters [code: 1 2] 24 – Thanksgiving —
28Review session 30Exam 2

Homework schedule

General homework policies are here.

Link Assigned Due
Homework 1: DSSL2 Warmup Thu., Sept. 21 Thu., Oct. 5 at 11:59 PM
Homework 2: Dictionaries Thu., Oct. 5 Thu., Oct. 12 at 11:59 PM
Homework 3: Graph Thu., Oct. 12 Thu., Oct. 26 at 11:59 PM
Homework 4: Binary heap Thu., Oct. 26 Thu., Nov. 2 at 11:59 PM
Homework 5: Union-find Thu., Nov. 2 Thu., Nov. 16 at 11:59 PM

Course policies

Collaboration and academic integrity

You may not collaborate with anyone on any of the exams. You may not use any electronic tools, including phones, tablets, netbooks, laptops, desktop computers, etc. If in doubt, ask a member of the course staff.

Some homework assignments might be completed with an assigned partner. You must collaborate with your assigned partner, as specified, on homework assignments. You may request help from any staff member on homework. (When you are working with a partner, we strongly recommend that you request help with your partner.) You may use the Piazza bulletin board to ask questions regarding assignments, so long as your questions (and answers) do not reveal information regarding solutions. You may not get any help from anyone else on a homework assignment; all material submitted must be your own. If in doubt, ask a member of the course staff.

Providing illicit help to another student is also cheating, and will be punished the same as receiving illicit help. It is your responsibility to safeguard your own work.

Students who cheat will be withdrawn from the course and reported to the appropriate dean.

If you are unclear on any of these policies, please ask a member of the course staff.


In general, you should submit your homework according to the instructions on the web page for the individual assignments.

Late work

No late work will be accepted.


Your grade will be based on your performance on five programming assignments (worth 10% each) and two in-class exams (worth 25% each). There will be no final exam.

The mapping of raw point totals to letter grades is at the discretion of the instructor.