<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>CS581 - Index on cs581 - Database Management Systems</title>
    <link>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/</link>
    <description>Recent content in CS581 - Index on cs581 - Database Management Systems</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 15 Jul 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.cs.uic.edu/~bglavic/cs581/2026-fall/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Lecture Notes for cs581</title>
      <link>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/schedule/notes/</link>
      <pubDate>Thu, 01 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/schedule/notes/</guid>
      <description>Overview Overview Lecture &amp;lt;2026-08-24 Mon&amp;gt;&#xA;Example lineitem data Queries Using python&#xA;Counting lineitems per quantity Pairs of lineitems from the same order with 20 difference in quanity Query CSV from a columnar database Query data using the native storage format of the database&#xA;Calculate speedup Lecture &amp;lt;2026-08-24 Mon&amp;gt; To understand the issues and what kind of performance (or other) improvements database system can bring, let&amp;#39;s consider two simple analysis scenarios for lineitem (order) data.</description>
    </item>
    <item>
      <title>Slides and Schedule</title>
      <link>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/schedule/schedule/</link>
      <pubDate>Tue, 15 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/schedule/schedule/</guid>
      <description>Monday &amp;#43; Wednesday, 5:00 pm - 6:15 pm, CDRLC 2411 The course schedule and linked slides will be updated over time. The slides are a heavily modified version of the &amp;lt;a href=&amp;#34;&amp;#34;&amp;gt;slides&amp;lt;/a&amp;gt; used by Hector Garcia-Molina for the CS 245 course at Stanford.&#xA;For convenience, here is a combined versions of all slides and all handouts (6 slides per page).&#xA;Lectures and Slides 08/24 00. Introduction slides or handout (6 slides per page) 08/26 01.</description>
    </item>
    <item>
      <title>Columnar Option</title>
      <link>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/project/columnar/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/project/columnar/</guid>
      <description>Overall goal If you choose this option then you will implement a small columnar query execution engine that reads data from CSV files.&#xA;Assignment 1 - Chunk-based scan of CSV files In the first assignment, you will build support for reading a table from a CSV file into memory as columar data in horizontal chunks. You need to design the data structures for holding a table chunk which stores data of all rows in a horizontal chunk of the input table of a fixed size, say 4096 rows.</description>
    </item>
    <item>
      <title>Final Exam</title>
      <link>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/exams/final/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/exams/final/</guid>
      <description>Friday, Dec 11, 2026 ,3:30pm - 5:30pm,CDRLC 1411 The exam will be closed books and closed notes.&#xA;The exam will be designed to take 120 minutes to complete. Some questions may be multiple-choice.&#xA;Relational algebra&#xA;Write relational algebra expressions SQL: Write SQL statements and evaluate them&#xA;Write DDL commands to create new tables and alter tables Write SQL queries or evaluate them Write SQL inserts, updates, and delete Database Design</description>
    </item>
    <item>
      <title>Important Dates</title>
      <link>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/schedule/importantdates/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/schedule/importantdates/</guid>
      <description> 09/21 - Assignment 1 - due date 09/21 - Homework 1 - handout 10/07 - Homework 1 - due date 10/12 - Assignment 2 - due date 11/02 - Homework 2 - handout 11/25 - Assignment 3 - due date 11/30 - Assignment 4 - due date 12/02 - Homework 2 - due date 12/02 - Contest - due date 12/11 - Final exam </description>
    </item>
    <item>
      <title>Literature references</title>
      <link>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/resources/references/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/resources/references/</guid>
      <description>Below is a list of research papers related to the course organized by topic.&#xA;Storage and Buffering 01&#xA;:: The five-minute rule twenty years later, and how flash memory changes the rules\\&#xA;Graefe\\ DAMOS ( 2007)\\&#xA;02&#xA;:: The five-minute rule ten years later, and other computer storage rules of thumb\\&#xA;Gray and G. Graefe\\ SIGMOD ( 1997)\\&#xA;03&#xA;:: The 5 minute rule for trading memory for disc accesses and the 10 byte rule for trading memory for CPU time\\</description>
    </item>
    <item>
      <title>Row-based Assignment 1 - Storage Manager</title>
      <link>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/project/assignment-1/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/project/assignment-1/</guid>
      <description>The goal of this assignment is to implement a simple storage manager - a module that is capable of reading blocks from a file on disk into memory and writing blocks from memory to a file on disk. The storage manager deals with pages (blocks) of fixed size (PAGE_SIZE). In addition to reading and writing pages from a file, it provides methods for creating, opening, and closing files. The storage manager has to maintain several types of information for an open file: The number of total pages in the file, the current page position (for reading and writing), the file name, and a POSIX file descriptor or FILE pointer.</description>
    </item>
    <item>
      <title>Row-based Assignment 2 - Buffer Manager</title>
      <link>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/project/assignment-2/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/project/assignment-2/</guid>
      <description>You should implement a buffer manager in this assignment. The buffer manager manages a fixed number of pages in memory that represent pages from a page file managed by the storage manager implemented in assignment 1. The memory pages managed by the buffer manager are called page frames or frames for short. We call the combination of a page file and the page frames storing pages from that file a Buffer Pool.</description>
    </item>
    <item>
      <title>Row-based Assignment 3 - Record Manager</title>
      <link>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/project/assignment-3/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/project/assignment-3/</guid>
      <description>In this assignment you are creating a record manager. The record manager handles tables with a fixed schema. Clients can insert records, delete records, update records, and scan through the records in a table. A scan is associated with a search condition and only returns records that match the search condition. Each table should be stored in a separate page file and your record manager should access the pages of the file through the buffer manager implemented in the last assignment.</description>
    </item>
    <item>
      <title>Row-based Assignment 4 - B&#43;-Tree</title>
      <link>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/project/assignment-4/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/project/assignment-4/</guid>
      <description>In this assignment you are implementing a B+-tree index. The index should be backed up by a page file and pages of the index should be accessed through your buffer manager. As discussed in the lecture each node should occupy one page. However, for debugging purposes you should support trees with a smaller fan-out and still let each node occupy a full page. A B+-tree stores pointer to records (the RID introduced in the last assignment) index by a keys of a given datatype.</description>
    </item>
    <item>
      <title>Row-based Contest</title>
      <link>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/project/contest/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/project/contest/</guid>
      <description>Students groups are encouraged to enter their solutions for the third and fourth assignments into a performance contest. We will run a given workload and measure the performance of each solution in terms of I/O and CPU time. The group with the most efficient solution will retrieve small prices.&#xA;Workloads We will have three workloads with large numbers of randomly generated requests. For all workloads the buffer size will be fixed, but each group can choose the page replacement strategy sued for the buffer pool.</description>
    </item>
    <item>
      <title>Row-based Option</title>
      <link>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/project/rowbased/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.cs.uic.edu/~bglavic/cs581/2026-fall/project/rowbased/</guid>
      <description>Organization 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.</description>
    </item>
  </channel>
</rss>
