Course staff & office hours
Instructor: | Jesse Tov | jesse@eecs
| Mudd 3510 | Gladly by appointment |
---|---|---|---|---|
Peer TAs: | Shu Han | shuhan2020@u
| * | M 3–5 PM |
Laura Barrera | laurabarrera2019@u
| * | M 5:30–7:30 PM | |
Nathan Shelly | nathanshelly@u
| Mudd 3538 | Tu 11 AM–1 PM | |
Finley Lau | finleylau2021@u
| * | Tu 2–4 PM | |
Jonathan Chan | yikchan2020@u
| * | W 2–4 PM | |
Rohit Rastogi | rohitrastogi2019@u
| * | W 7–9 PM | |
Michael Ji | michaelji2021@u
| * | Th 1–3 PM | |
Natalie Ghidali | natalieghidali2021@u
| * | Th 3–4:50 PM | |
Jeffrey Birori | jeffreybirori2019@u
| * | Th 5–7 PM | |
Alin Hulli | alinhulli2020@u
| * | F 1–3 PM |
* 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.
Prerequisites
This course assumes familiarity with programming as taught in EECS 111 and 211.
Exams
We will have two in-class examinations:
- Thursday, November 1
- Thursday, December 6
There will be no final exam.
Materials
Software
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:
https://github.com/tov/dssl2.git
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.)
Books
There is no required textbook, but you may find these books useful:
- Udi Manber, Introduction to Algorithms: A Creative Approach shows how to design data structures and algorithms in a methodical way similar to the design recipe many of you learned in EECS 111. (This book is out of print, but used copies are available on Amazon.)
- Duane Bailey, Data Structures in Java, for the Principled Programmer may be a good reference for those of you who can read Java. (This book is a free PDF download.)
- Cormen, Leiserson, Rivest, and Stein, Introduction to Algorithms is a comprehensive, dense reference that isn’t always easy to understand, but covers almost anything you might want to know.
Online resources
- Piazza discussion board—ask questions here!
- DSSL2 Language Reference
Lectures
This table specifies the lecture schedule; topics are tentative.
September | |
---|---|
Tu | Th |
27 Intro: What’s a data structure? [slides]; Boxes [slides] | |
October | |
Tu | Th |
2 Structs, arrays, and classes in DSSL2 [slides, code] | 4 Linked lists [slides, code] |
9 Abstract data types; stack and queue ADTs [slides, DSSL2, Java: 1 2, C: 1 2, C++] | 11 Dictionary ADT [slides]; binary search trees [slides] Homework 1 due |
16 Hashing; hash tables [slides, code] | 18 Big-O notation [slides] Homework 2 due |
23 Trees and tree walks [slides, code] | 25 Graphs and their representations [slides] Homework 3 due |
30 DFS [slides], Review session | |
November | |
Tu | Th |
1 Exam 1 | |
6 Graph search [slides] | 8 Dijkstra’s algorithm; priority queue ADT; binary heaps [slides: 1 2] Homework 4 due |
13 Minimum spanning tree; disjoint sets ADT; union-find [slides: 1 2] | 15 Amortized analysis; dynamic arrays [slides, code] Homework 5 due |
20 Random binary search trees [slides, code] | 22 – Thanksgiving — |
27 balanced trees [slides, AVL code, RB code, extra RB slides] | 29 Data structures in C and C++ [slides, code (ZIP)] Homework 6 due |
December | |
Tu | Th |
4 Bloom filters | 6 Exam 2 |
Homework schedule
General homework policies are here.
Link | Assigned | Due |
---|---|---|
Homework 1: DSSL2 Warmup | Thu., Sept. 27 | Thu., Oct. 11 at 11:59 PM |
Homework 2: Dictionaries | Thu., Oct. 11 | Thu., Oct. 18 at 11:59 PM |
Homework 3: Hash table | Thu., Oct. 18 | Thu., Oct. 25 at 11:59 PM |
Homework 4: Graph | Thu., Oct. 25 | Thu., Nov. 8 at 11:59 PM |
Homework 5: Binary heap | Thu., Nov. 8 | Thu., Nov. 15 at 11:59 PM |
Homework 6: Union-find | Thu., Nov. 15 | Thu., Nov. 29 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 reported to the appropriate dean.
If you are unclear on any of these policies, please ask a member of the course staff.
Homework
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.
Grades
Your grade will be based on your performance on six programming assignments (worth 50% total) and two in-class exams (worth 25% each). Your lowest homework assignment, excepting HW6, will not be counted. There will be no final exam.
The mapping of raw point totals to letter grades is at the discretion of the instructor.