Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

ADvANcED DATABAsE 0RcANIzATIoN - FALL 2022

CS 525 - ALL SEcTIoNs

PRocRAMMINc AssIcNMENT:  0RcANIzATIoN

1.  Task

There will be several programming assignments during the course.  Starting from a storage manager you will be implementing your own tiny database-like system from scratch. You will explore how to implement the concepts and data structures discussed in the lectures and readings. The assignments will require the use of skills learned in this course as well as other skills you have developed throughout your program. Each assignment will build upon the code developed during the previous assignment.  In the end there will be an optional assignment for extra credit.  Each of the regular assignments will have optional parts that give extra credit.  All assignments have to be implemented using C. We will specify test cases for the assignments, but you are encouraged to add additional test cases. Detailed descriptions will be linked on this page once an assignment is handed out.


Assignment  1-  Storage  Manager : Implement a storage manager that allows read/writing of blocks to/from a le on disk

Assignment  2  -  Buffer  Manager:  Implement a buffer manager that manages a buffer of blocks in memory including reading/flushing to disk and block replacement (flushing blocks to disk to make space for reading new blocks from disk)

Assignment  3  -  Record  Manager:  Implement a simple record manager that allows navigation through records, and inserting and deleting records

Assignment  4  -  B+ -Tree  Index:  Implement a disk-based B+-tree index structure

2.  Source Code Management and Handing in Assignments

The assignments will be completed in groups of at most three students.  Groups will be determined in the first week of class.

All assignments helper les are available on Blackboard

For each group, we will create a repository and team on BitBucket.  Git is a distributed version control system. Good introductions to git are gitmagic and the ocial git documentation.

Once groups have been formed, you will receive an invitation to collaborate on a shared BitBucket  repository named  cs525-S21-group . All your work in this class will be submitted via your shared private repository  on BitBucket.

We will consider code submitted until midnight  of  the  assignment  deadline.


3.  Grading of Assignments

The following criteria will be considered in the grading:

Functionality: Does the code do what it is supposed to do? All all tests completing successfully?

Documentation: How well documented is the code?

Code Organization: Is the structure of the code clear and suits the goal?

Innovation: Does the solution use new and innovative ideas?

We  will  check  for  plagiarism .    Plagiarism  will  result  in  zero  points  for  the  assignment,  potentially academic  sanctions,  and may  result  in  an  E  grade .

4.  STUFF To cET FAMILIAR wITn

See resources section below for links to documentation and tutorials

OS C-library: system calls for accessing and creating les or alternatively the C standard library le IO GDB - gnu debugger and its GUIs like DDD

valgrind - debug memory errors

5.  REsoURsEs

Some links with information related to the course:

Information about Git: gitmagic and the ocial git documentation.

BitBucket: The version control system we use for the programming assignments.

Linux system programming: How to use system calls to access a le in linux.

Make documentation: Documentation for the make build system.

maketutor: A nice small tutorial for writing Makefiles.

gcc make: Tutorial for writing C Makefiles

GDB Gnu Debugger Tutorial

GDB GUIs - graphical frontends for GDB

Valgrind - Debug memory errors.