Release date: 2026-03-09 00:00:00-04
Final Due date: 2026-03-22 23:59:59-04
Final Submission enabled until: 2026-03-24 23:59:59-04
Last updated: 3/9/2026
Checkpoint 0 due: in-class, 2026-02-05 17:50:00-05 (no grace period)
Checkpoint 1 due: 2026-02-08 23:59:59-05
Checkpoint 1 submission enabled until: 2026-02-10 23:59:59-05
Source files to modify:
Instructions: see lecture notes on 2/5/2026.
Checkpoint 2 due: 2026-02-15 23:59:59-05
Checkpoint 2 submission enabled until: 2026-02-17 23:59:59-05
Source files to modify:
Instructions: see lecture notes on 2/10/2026.
If some of the tests fail to load the B-tree files in data/preloaded_ds_btree/search,
you may remove the directory data/preloaded_ds_btree/search and rerun ./import_data.sh.
Please do not modify include/ds/BTree.h and src/ds/BTree.cpp as
they will be overwritten later on. If you need to add member declarations to the meta
data page and the B-tree class, please do so in the corresponding sections in include/ds/BTreeExtra.h
Checkpoint 3 due: 2026-02-22 23:59:59-05
Checkpoint 3 submission enabled until: 2026-02-24 23:59:59-05
Source files to modify:
Instructions: see lecture notes on 2/10/2026.
To run tests, directly invoke tests/ds/BasicTestDSBTreeInsert. Some of the tests may enter an infinite loop
if you have not implemented anything. The execution time of any of the test case should not exceed 16 seconds.
You should not allocate additional memory space through new/delete, malloc/free, or alloca beyond what's provided in the code stub (except search_path).
Checkpoint 4 due: 2026-03-09 00:59:59-04
Checkpoint 4 submission enabled until: 2026-03-11 00:59:59-04
Source files to modify:
Instructions: see function specification in BTreeDelete.cpp for BTree::Delete().
To run tests, directly invoke tests/ds/BasicTestDSBTreeDelete.
The execution time of any of the test case should not exceed 1 second.
You should not allocate additional memory space through new/delete, malloc/free, or alloca beyond what's provided in the code stub (except search_path).
To compute the minimum occupancy of any tree node, please times its capacity or fanout with MIN_LOAD_FACTOR and round it down to the nearest integer.
For example, when the capacity of a leaf node is 101 and MIN_LOAD_FACTOR = 0.5, floor(101 * 0.5) = 50 is considered as exactly half filled
and satisfies the minimum occupancy requirement.
The system tests will additional test your code over randomly generated sequences of operations over preloaded B-Trees. To make a submission for the system tests, please
run submit test 350299 <git-commit-id-or-tag-name>. When you make the submission, only the small-scale test cases will be run, and you can get up to 1.8 points
for these test cases. There are an additional 6.9 points of system tests that will be tested later: after he project 2 submission is closed. We will re-execute your final submission with the largest timestamp again against all system tests.
At the point, all system tests are executed using your own B-Tree implementation with the solution code for KVDataPage and FSFile. If you believe you may achieve a higher score using your own KVDataPage and/or FSFile, please send a private message on Piazza to request a retest.