In project 1, you will implement a very simple paged file (PF) manager. It builds up the basic file system
required for continuing with projects 2,3 and 4. The PF component provides classes and methods for managing
files and pages in files. In addition, you will implement the first few operations for a record-based file (RBF)
manager (which you will continue working on in project 2) on top of your basic paged file system. This
document aims at providing you with the necessary information required to start project 1.
The goal of project 1 is threefold:
Get (re)familiar with a C/C++ development environment.
Implement a simple paged file system.
Implement a few operations of a record-oriented (a.k.a. tuple-oriented) file system.
The detailed description of the project itself is in Project 1 Description.
We have seen the results of running the code in the codebase. But, since the implementation of the
methods is empty, you cannot manage any files yet. Please finish the implementation in pfm.cc as well as the
following methods in rbfm.cc (besides the constructor and destructor): 1) insertRecord. 2) readRecord. 3)
printRecord. The remaining methods are not required for part 1 of the project; instead, you will implement
them as part of part 2 of the project. Please write your own test cases to test your code. You are responsible for
anticipating other things that might go wrong that we haven’t provided public tests for, just as you would be if
you were building a DBMS in an industrial setting.
You may find these functions useful: http://www.cplusplus.com/reference/clibrary/cstdio/ (Links to an
Please find Gtest cases under test directory. Note that these test cases will be used to grade your project
partially, but we also have our own private test cases. This is by no means an exhaustive test suite. You can add
more cases to this and test your code thoroughly, but do not change the existing test cases: they will be
overwritten by the staff.
Note: Again, this is not the complete suite we will use to test your codebase — just a sample of it.
Full Credit: 100 points
1. Project Report
Fill in each section of the report (report/project1.md) in the codebase directory.
Clearly document the design of your project, feel free to include images where needed.
2. Pass the provided test suite.
Each of which is graded as pass/fail. There are no partial points for each test case.
3. Pass the private test suite.
There are private tests, each of which is graded as pass/fail. Again, there are no partial points
for each test case.