Welcome to CSE 350 Advanced Data Structures and Indexes of Spring 2026. This course expands on CSE 250 Data Structures by introducing techniques for data organization that account for the memory hierarchy and the need for concurrent access. Topics include relational data model and SQL, IO Complexity, On-Disk Tree- and Hash- based structures, Write-optimized data structures (e.g., LSM Indexes and Beta-Epsilon Trees), Serialization/Data Layout, Caching, Secondary Indexes, Concurrent Data Structures, and Versioned Data Structures. The specific covered topics vary across semesters. This course also introduces SQL queries and Relational Algebra as a framework for reasoning about data access methods.
[CSE 350]. Piazza is the preferred method
of communication.
minsky.cse.buffalo.edu for programming, debugging, testing and grading. See Programming Assignment 0 for details.
C++17 (Projects 1 - 4). Each programming assignment builds
on the previous programming assignment's solution. To help you
catch up in case your solution has defects, we will provide
solution binaries for prior programming assignments which can
be linked to your code.
We will walk you through the starter code of programming
assignments and cover useful programming tips during
recitation.
man(1)).
Please see PDF syllabus for the mapping between numeric score and letter grades.
Hint: If you find the last update date of a slide deck is later
than the one you previously downloaded and you opened the
slides within the browser, you may want to force a refresh
using Ctrl + F5.
The following schedule is tentative and may be adjusted throughout the semester.
| Date | Topics | Slides/Lecture Notes | Last updated |
|---|---|---|---|
| 1/22/2026 | Course logistics; abstract data types, in-memory
implementation and complexity analysis; overview of
storage hierarchy and External Memory model. Recitation: command-line programming and introduction to C++ programming and I/O syscalls |
S01; Bash, Git & C++ basics (CSE562, SP22) | 1/22/2026 |
| 1/27/2026 | Physical Storage Device | S02 | 1/27/2026 |
| 1/29/2026 | How to work with External Memory: common techniques and cost analysis; Recitation more on C++ programming and I/O syscalls; |
S03 | 1/27/2026 |
| 2/3/2026 | B-tree Index: from binary search to multiway search | ||
| 2/5/2026 | B-tree Index: page layout; Recitation: Bit manipulation |
||
| 2/10/2026 | B-tree index: bulk loading | ||
| 2/12/2026 | B-tree index: external sorting; Recitation: Memory allocation |
||
| 2/17/2026 | B-tree index: insertion and deletion | ||
| 2/19/2026 | LSM-tree; Recitation: TBD |
||
| 2/24/2026 | LSM-Tree | ||
| 2/26/2026 | LSM-Tree; Recitation: TBD |
||
| 3/3/2026 | Midterm review | ||
| 3/5/2026 | Midterm Exam, in class, Norton 213, 3:40 PM - 5:40 PM (120 minutes) | ||
| 3/10/2026 | Relational Model | ||
| 3/12/2026 | Relational Algebra and SQL; (Recitation) Midterm recap; | > | |
| 3/17/2026 | Spring recess, no lecture | ||
| 3/19/2026 | Spring recess, no lecture | ||
| 3/24/2026 | I/O buffers | ||
| 3/26/2026 | Concurrency control; Recitation: |
||
| 3/31/2026 | Concurrency control | ||
| 4/2/2026 | Filters; Recitation: |
||
| 4/7/2026 | Taming write amplification in LSM-trees |
||
| 4/9/2026 | Hash Index; Recitation: |
||
| 4/14/2026 | Hash Index; | ||
| 4/16/2026 | Secondary indexing; Recitation: |
||
| 4/21/2026 | Secondary indexing; | ||
| 4/23/2026 | B-tree layout optimization; reading: B-Trees Are Back, SIGMOD '25 |
||
| 4/28/2026 | Asynchronous I/O | ||
| 4/30/2026 | DBMS integration | ||
| 5/5/2026 | Final review; | ||
| 5/12/2026 | Final exam: Norton 213, 3:40 pm to 5:40 pm (120 minutes). Covers everything after the mid-term exam. |
| Assignment | Release date | Due date |
|---|---|---|
| Project 0: Repository setup and projects sign-up (in class) | 2026-01-22 15:30:00-05 | 2026-01-23 23:59:59-05 |
| Project 1: POSIX I/O | 2026-01-22 15:30:00-05 | 2026-02-01 23:59:59-05 |
| Project 2: Static B-tree construction and lookup | ||
| Project 3: Log-Structured Merge Tree with concurrency | ||
| Project 4: Performance optimization |
If you have any disability which requires reasonable accommodations to enable you to participate in this course, please contact the Office of Accessibility Resources in 60 Capen Hall, 716-645-2608. The office will provide you with information and review appropriate arrangements for reasonable accommodations, which can be found on the web at this link. Please also notify the instructor as soon as possible to make reasonable arrangement early.