EECS 4101/5101, Fall 2024
EECS 4101/5101: Advanced Data Structures
Fall 2024
Web page contents:
General Information
Announcements
Important Dates
Resources
Reading
Course Handouts
General Information
Instructor: Eric Ruppert
Email: eruppert (a) yorku.ca (Please use a York email account when sending me email, and start your subject line with "[4101]" or "[5101]".)
Lectures: Tuesdays and Thursdays 10:00-11:30 in room 211 of Calumet College.
Office Hours: Mondays 14:00-15:00, Thursdays 11:30-12:30 in room 3052 of the Lassonde Building.
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.
-
Describe important classes of data structures (dictionaries, priority queues, disjoint set union) and explain how they work.
Before trying to design your own data structures, it is important to be aware of a good collection of classical ones. They are useful in their own right, but the ideas that underlie them are also useful for new data structures.
-
Augment data structures to expand their functionality.
If one of the standard data structures doesn't work for the task at hand, it is useful to be able to tweak an existing one to fit your purpose.
-
Analyze the efficiency of data structures, including the use of amortized analysis and online competitive analysis.
In many cases, there are multiple data structures that could be used to solve a problem. In some cases, it is important to be able to analyze the different options and choose the one that will solve the problem most efficiently. Amortized and competitive analysis are two special types of analysis that are useful in some settings.
-
Demonstrate knowledge of important themes in data structure design such as persistence, self-adjustment, concurrency.
This course is not just about going through a catalogue of data structures. Certain ideas can be applied in the construction of many different data structures, and we want to understand those concepts too. Persistence deals with maintaining multiple versions of stored data so that old versions can be accessed when needed. Self-adjustment is used instead of carefully rebalancing data structures to improve the shape of the data structure in response to the sequence of operations performed on it. Concurrent data structures allow multiple threads to access the data simultaneously.
-
Select or design appropriate data structures to help solve problems for algorithmic applications.
The ultimate goal is to ensure that you can find (or build) the right data structure for whatever task you want to solve. You should also be able to justify your design choices and explain why the algorithms that operate on the data structures are correct.
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 must 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). Use the 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 use course materials 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 or using AI tools (such as LLM-based software), 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, AI tools and the web will not be available during your exam (or during your job interviews), 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 is unpleasant for everyone. 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 senate
policy
on academic honesty and the faculty's academic integrity resources.
Marking Scheme
| EECS4101 | EECS5101 |
Homework exercises | 15% | 15% |
Test 1 | 20% | 17.5% |
Test 2 | 20% | 17.5% |
Wikipedia assignment (EECS5101 only)
| 0% | 10% |
Exam | 45% | 40% |
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.
Announcements
- (Nov 27) Please fill out a course evaluation. They provide useful feedback on the course. If 80% of students in the class fill them out, I will drop your lowest assignment when computing your course grade.
- (Nov 27) There will be a pre-exam review session on Friday, Dec 13 from 3pm to 5pm in room 211 of Calumet College. This is a chance for you to ask any questions you may have before the final exam. For the final exam, you may bring one 8.5-by-11 inch sheet of paper with handwritten notes on both sides.
- (Nov 12) For Test 2, you may bring one 8.5-by-11-inch sheet of paper with handwritten notes on both sides. If your surname starts with A-K, you will write in Stong 222. If your surname starts with L-Z, you will write in Calumet 211.
- (Nov 7) The Royal Canadian Institute for Science has another free movie screening on November 28. They are showing the biographical movie Hidden Figures about three African-American women who did groundbreaking work for NASA in the 1960s. See this link for more information.
- (Oct 23) I will be away at a conference the week of Oct 28. There will be no lecture on Oct 29; I will post some recorded lecture material on the course's eclass site in place of this class. The October 31 class will be a tutorial, delivered by the TA. I will not be able to have an office hour on Oct 28 or 31, but you can still contact me by email anytime.
- (Oct 5) The Royal Canadian Institute for Science is presenting a free screening on October 22 of the movie The Imitation Game about Alan Turing, followed by a discussion of Turing and cryptography. See this link for details.
- (Oct 4) For Test 1, you may bring one 8.5-by-11-inch sheet of paper with handwritten notes on one side. If your surname starts with A-K, you will write in Stong 222. If your surname starts with L-Z, you will write in Calumet 211.
- (Sep 24) I have to shift a couple of my upcoming office hours. The office hour on Sep 26 will be at 9:00-10:00 instead of 11:30-12:30. The office hour on Sep 30 is moved to Oct 1 at 11:30-12:30.
- (Sep 23) York is hosting the Canadian Celebration of Women in Computing Conference on Oct 25-26. I encourage you to attend. (I expect that more details about the conference events will be posted on the website soon.)
- (Sep 16) Clarification: For Question 1(b) on Assignment 2, you can assume for your amortized analysis that the counter starts with value 0.
- (Sep 14) I have updated the link in the Academic Honesty section of this page, above, to point to the recently updated Senate Policy on academic conduct, which came into effect on September 1, 2024.
- (Sep 12) York programming contests are starting up for the fall. The first practice will be on September 20 in Lassonde 1002B from 15:00-17:00. See this link for more information.
Important Dates
First class | Thursday, September 5 |
Test 1 (See Oct 4 announcement above) | October 10 |
Reading week (no classes) | October 14-18 |
Last date to drop course without receiving a grade | Friday, November 8 |
Test 2 (See Nov 12 announcement above) | November 14 |
Last class | Tuesday, December 3 |
Last date to withdraw from course (receiving W on transcript) | Tuesday, December 3 |
Exam period | December 5-20 |
Resources
Textbook
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and
Clifford Stein, Introduction to Algorithms, 4th edition,
MIT Press & McGraw-Hill, 2022. For solutions to some of the textbook's exercises and known bugs in the text, see the textbook's web page.
You can access an electronic version of the textbook through the York Library website.
If you have the older third edition of the book, that's fine.
Other References
- Peter Brass, Advanced Data Structures, Cambridge University Press, 2008. Available online through York library.
- Ronald L. Graham, Donald E. Knuth, and Oren Patashnik, Concrete
Mathematics: A Foundation for Computer Science (2nd edition),
Addison-Wesley, 1994.
- Maurice Herlihy, Nir Shavit, Victor Luchangco and Michael Spear, The Art of Multiprocessor Programming, 2nd edition, Morgan Kaufmann, 2020. Includes material on concurrent data structures. An earlier edition is available online through the York Library.
- Pat Morin, Open data structures.
- Gonzalo Navarro, Compact Data Structures, Cambridge University Press, 2016.
- Hanan Samet, Foundations of Multidimensional and Metric Data Structures, Elsevier/Morgan Kaufmann, 2006.
- Clifford A. Shaffer, Data Structures and Algorithm Analysis, edition 3.2.0.10, 2013.
- Daniel Solow, How to Read and Do Proofs (6th edition), Wiley, 2013.
Other Tools
- This website has useful visualizers of several data structures, including red-black trees, B-trees (use an even max degree), binomial heaps and Fibonacci heaps.
Reading
This section will be filled in as the term progresses. To get an idea of what will be covered, see the course page for last year (there may be some minor variations from that list of topics).
Don't fall behind with your reading.
Date | Topics | Reading in CLRS (4th ed) | Suggested questions, mostly from CLRS (4th ed) | Equivalent reading in CLRS (3rd ed) | Equivalent questions in CLRS (3rd ed) |
Sep 5 |
Introduction |
partial notes |
|
|
|
Sep 10 |
Aggregate Method of Amortized Analysis |
16.1 |
16.1-1 to 16.1-3, 16-2 |
17.1 |
17.1-1 to 17.1-3, 17-2 |
Sep 12 |
Accounting Method |
16.2 |
16.2-1 to 16.2-3 |
17.2 |
17.2-1 to 17.2-3 |
Sep 17 |
Potential Method |
16.3 |
16.3-1 to 16.3-6 |
17.3 |
17.3-1 to 17.3-7 |
Sep 17 |
Dynamically sized tables, including eager doubling/halving (not in text) |
16.4 |
16.4-4 |
17.4 |
17.4-3 |
Sep 19 |
Binomial Heaps |
Chapter 19 of 2nd edition |
from this link: 19.1-2, 19.2-1 to 19.2-4 |
|
|
Sep 26 |
Fibonacci Heaps |
19 in removed material |
from removed chapter: 19-2, 19.2-1, 19.3-2, 19.4-1, 19.4-2, 19-3 |
19.0 |
19-2, 19.2-1, 19.3-2, 19.4-1, 19.4-2, 19-3 |
Oct 3 |
Union-Find Data Structures |
19 |
19.2-1, 19.3-1, 19.3-2, 19.3-3, 19.3-4, 19.3-5, 19-1, 19-2, 19-3 |
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 |
Oct 22 |
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 |
12.1-12.3 |
12.1-3, 12.1-5, 12.2-4, 12.2-7, 12.3-3, 12-2 |
Oct 22 |
Random BSTs |
12.4 in removed material (Randomly Built BSTs) |
12.4-2, 12.4-3, 12-3 |
12.4 |
12.4-2, 12.4-3, 12-3 |
Oct 24 |
Red Black Trees |
13 |
13.1-4, 13.1-6, 13.1-7, 13.1-8, 13.2-4, 13.3-2, 13.3-3, 13.4-4, 13.4-7, 13.4-8, 13.4-9, 13-3 |
13 |
13.1-4, 13.1-6, 13.1-7, 13.2-4, 13.3-2, 13.3-3, 13.4-3, 13.4-6, 13.4-7, 13-3, 13-4, 17-4 |
Oct 29 |
Augmenting Data Structures |
17 |
17.1-3, 17.1-5, 17.2-1, 17.2-2, 17.2-3, 17.3-5, 17-1, 17-2, 16-3 |
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 |
Nov 5 |
B-Trees |
18 |
18.1-2, 18.1-3, 18.1-4, 18.2-1, 18.2-6, 18-1 |
18 |
18.1-2, 18.1-3, 18.1-4, 18.2-1, 18.2-6, 18-1 |
November 12 |
Hashing |
review 11.1 and 11.2; read 11.3; read old Section 11.5 from removed material (Perfect Hashing) |
11.1-1, 11.2-2, 11.2-5, 11.1-4, 11.3-1, 11-4
|
review 11.1 and 11.2; read 11.3, 11.5 |
11.1-4, 11.3-1, 11-4 |
November 26 |
Lock-free data structures |
Some slides (we won't cover all of them) |
|
|
|
Course Handouts

Updated November 29, 2024