EECS 4101/5101, Summer 2020

EECS 4101/5101: Advanced Data Structures
Summer 2020

Web page contents:

General Information
Important Dates
Course Handouts

General Information

Instructor: Eric Ruppert
Email: [my last name] (Please use a York email account when sending me email, and start your subject line with "[4101]" or "[5101]".)
Lectures: Tuesdays and Thursdays 11:30-13:00 via Zoom. See link to Zoom lectures on the course Moodle site.
Office Hours: Mondays 14:00-15:00 and Thursdays 15:00-16:00 via Zoom. See link to Zoom office hours on the course Moodle site.

Learning Outcomes

In this course, you will be invited to develop your ability to think clearly and carefully about data structures and the algorithms that operate on them, and to improve your skills in expressing those thoughts about data structures in a precise way. Data structures are a crucial component of most computer applications. Understanding them is a key ingredient for writing correct and efficient computer programmes. By the end of this course, you will be able to do the following things.

How to Learn This Material

Much of the material in this course is in the same vein as the material of EECS3101. To develop your understanding of the material, it is important to do more than just read the textbook and attend lectures: you should work through exercises.

You can often learn by struggling with problems. However, if you get too stuck or don't know how to begin, help is available. Talk to your classmates (however; see the notes below about academic honesty regarding discussing assignment problems with others). Go to office hours; the instructor is there to help you! You also learn by making mistakes and getting feedback about those mistakes. Just make sure that you use the feedback to improve your understanding.

Groups of students can learn a lot by explaining their solutions to the suggested exercises from the textbook to one another and critiquing the solutions of others. After all, learning how to explain solutions clearly is one of the goals of this course. Seeing where other students' solutions are unclear to you helps you make your own explanations clearer. Be aware that a problem may have many different correct solutions; just because someone's solution is different from yours doesn't necessarily mean that one of them is wrong.

It takes time to build new skills, so it helps if you work on exercises regularly: don't leave all the work to the days right before a test. Similarly, some of the homework assignments will be difficult to finish if you leave them to the last minute.

Academic Honesty

The key to academic honesty for this course is simply this: Solutions that you submit should be your own work.

Although you may discuss the general approach to solving a homework problem with other people, you should not discuss the solution in detail. You must not take any written notes away from such a discussion. Also, you must list on the cover page of your solutions any people with whom you have discussed the problems. The solutions you hand in should be your own work. While writing them, you may look at the course textbook and your own lecture notes but no other outside sources.

It is not acceptable to try to find the answer to a homework question on the web, put it in your own words and submit it. You may learn a little by doing this, but you will learn much, much more by working on the problem yourself, and the purpose of this course is to help you learn how to design and analyze data structures on your own. Furthermore, the web will not be available during your exam (or during your job interview at Google), so you should learn to solve problems yourself, instead of relying on others to do your thinking for you.

As time runs out, students are sometimes tempted to get help from other students on assignments in a way that would violate the preceding policy on academic honesty. DO NOT DO THIS! If you do, I will refer the case to the Dean's Office, which will be very unpleasant for you. The assignments are worth very little, so it is not worth risking a sizable punishment. (Furthermore, I have noticed that the students who cheat on the homework assignments almost always fail the tests and exams, so even if I do not catch you cheating, you will likely fail the course if you do not do your own work on the homework assignments.)

It is important that you look at the departmental guidelines on academic honesty.

Marking Scheme

Homework exercises 30% 30%
Midterm test 15% 10%
Oral quiz10%10%
Participation 10% 10%
Wikipedia assignment (EECS5101 only)0% 15%
Exam 35% 25%

It's a very good idea to type your solutions to homework assignments, since it allows you to edit and polish the answers, but handwritten solutions are also acceptable, as long as they are legible. If you want to type your solutions, LaTeX produces elegantly typeset documents, is available for free, and was built to handle even the most complicated mathematical notation. It can take a while to learn how to use it, but once you do, you will probably not want to type documents any other way.

You should make every effort to make your answers as brief as possible, while still being thorough. Brevity requires careful thought and editing. (Pascal once excused himself for writing a long letter, saying that he did not have enough time to write a shorter one.) Students who write copious amounts usually do not know what they want to say, or are saying it in a very disorganized way. Usually, an answer to a homework question should fit on one sheet of paper. If you are writing much more than that, you probably have not found the best way to solve it. On tests, your answer should usually fit into the space provided for it.

Technology Used in the Course

If you have technology-related accomodation needs, please contact the instructor as soon as possible.

The executive committee of senate requires the following paragraph to be included in the outline of summer 2020 courses:

Several platforms will be used in this course (e.g., Moodle, Canvas, Zoom, etc.) through which students will interact with the course materials, the course director / TA, as well as with one another. Please review the syllabus to determine how the class meets (in whole or in part), and how office hours and presentations will be conducted. Students shall note the following:

Technology requirements and FAQs for Moodle can be found here.

If available, some online proctoring software or service may be used for tests and exams during this course.


Important Dates

First class Tuesday, May 12
Reading week (no classes) June 23-26
Midterm test July 2
Last date to drop course without receiving a gradeFriday, July 17
Last class Thursday, August 6
Last date to withdraw from course (receiving W on transcript)Wednesday, August 12
Exam period August 14-21



Other References


This section will be filled in as the term progresses. Don't fall behind with your reading.

DateTopics Reading in CLRS (3rd ed) Suggested questions, mostly from CLRS (3rd ed)
May 14 Introduction partial notes
May 19 Aggregate Analysis 17.1 17.1-1 to 17.1-3, 17-2
May 19 Accounting Method 17.2 17.2-1 to 17.2-3
May 19 Potential Method 17.3 17.3-1 to 17.3-7
May 26 Dynamic Tables, including eager doubling/halving (not in text); Binomial Heaps 17.4 and 19.0, Problem 19-2 for binomial heaps 17.4-3, 19-2
Jun 2 Fibonacci Heaps 19 19.2-1, 19.3-2, 19.4-1, 19.4-2, 19-3
Jun 9 Union-Find Data Structures 21 21.2-1, 21.3-1, 21.3-2, 21.3-3, 21.3-4, 21.3-5, 21-1, 21-2, 21-3
Jun 16 Binary Search Trees (quick review from EECS2011) 12.1-12.3 12.1-3, 12.1-5, 12.2-4, 12.2-7, 12.3-3, 12-2
Jun 30 Random BSTs 12.4 12.4-2, 12.4-3, 12-3
Jul 7 Red Black Trees 13 13.1-4, 13.1-6, 13.1-7, 13.2-4, 13.3-2, 13.4-3, 13.4-6, 13.4-7, 13-3, 13-4, 17-4
Jul 9 Augmenting Data Structures 14 14.1-3, 14.1-5, 14.2-1, 14.2-2, 14.2-3, 14.2-4, 14.3-6, 14-2, 17-3
Jul 16 B-Trees 18 18.1-2, 18.1-3, 18.1-4, 18.2-1, 18.2-6, 18-1
Jul 21 Hashing review 11.1 and 11.2; read 11.3, 11.5 11.1-4, 11.3-1, 11-4
Jul 23 Dynamic perfect hashing and cuckoo hashing Paper on dynamic perfect hashing (available online via this link at York library) or see Section 1.2.5 of this chapter by Pat Morin from the Handbook of Data Structures and Applications; Notes on cuckoo hashing by Rasmus Pagh
Aug 4 Lock-free data structures Some slides (we won't cover all of them)

Course Handouts

Updated August 17, 2020