generated from BU-DiSC/CS460-Fall2021
-
Notifications
You must be signed in to change notification settings - Fork 0
/
project.html
executable file
·310 lines (261 loc) · 17.4 KB
/
project.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<link rel="shortcut icon" type="image/x-icon" href="https://images.squarespace-cdn.com/content/v1/5f2367067a73ee180152f3b2/1596846324894-78AGU9BEUCC84Z5V2DB6/ke17ZwdGBToddI8pDm48kAhLxogoXycGtSbZQT4CknZZw-zPPgdn4jUwVcJE1ZvWQUxwkmyExglNqGp0IvTJZUJFbgE-7XRK3dMEBRBhUpyO_696MuuT7lJ7UjWki0-X2-exVEe5nv3o9DIf3qhJEYwRJipR68HoWdNEcsftf14/favicon.ico?format=100w"/>
<title>CAS CS 660 - Assignments - Introduction to Database Systems @ BU</title>
<!-- Bootstrap Core CSS -->
<link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- Theme CSS -->
<!-- <link href="css/clean-blog.min.css" rel="stylesheet"> -->
<link href="css/clean-blog.css?ver=312" rel="stylesheet">
<!-- Custom CSS -->
<link href="css/main.css?ver=632" rel="stylesheet">
<!-- Custom Fonts -->
<link href="vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<!-- Navigation -->
<nav class="navbar navbar-default navbar-custom navbar-fixed-top">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header page-scroll">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
Menu <i class="fa fa-bars"></i>
</button>
<a class="navbar-brand" href="index.html">CS660</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li>
<a href="index.html">Home</a>
</li>
<li>
<a href="labs.html">Labs</a>
</li>
<li>
<a href="project.html">Programming Assignments</a>
</li>
<li>
<a href="homeworks.html">Written Assignments</a>
</li>
<li>
<!-- <a href="syllabus.html">Syllabus</a> -->
<a href="https://docs.google.com/document/d/1HJnkBz8NW1W2-6PdoDHij2P2oAP_QOKeAm0L7fEkXqQ/export?format=pdf&attachment=false" target="_blank">Syllabus</a>
</li>
<li>
<a href="https://tinyurl.com/CS660-F23-Notes" target="_blank">Notes</a>
</li>
<li>
<a href="https://piazza.com/bu/fall2023/cs660" target="_blank">Piazza</a>
</li>
<li>
<a href="https://www.gradescope.com/courses/571152" target="_blank">Gradescope</a>
</li>
<li>
<a href="https://disc.bu.edu/" target="_blank">DiSC lab</a>
</li>
<!-- <li>
<a href="contact.html">Contact</a>
</li>
-->
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>
<!-- Page Header -->
<!-- Set your background image for this header on the line below. -->
<header class="intro-header" style="background-image: url('img/project-bg.jpg')">
<div class="container">
<div class="row">
<div class="col-lg-12 col-md-12">
<div class="page-heading">
<h1>Programming Assignments</h1>
<hr class="small">
<span class="subheading">One-stop shop for programming assignments!</span>
<p class="text-center">
<!-- <a class="btn btn-xl" style="color: #fff;" href="#project0">Project 0</a> -->
<!-- <a class="btn btn-xl" style="color: #fff;" href="#project">Class Project</a> -->
</p>
</div>
</div>
</div>
</div>
</header>
<!-- Keeping it as a template for future notes -->
<!-- <div class="row">
<div class="col-lg-8 col-lg-offset-2">
<div class="alert alert-danger" role="alert">
<p><strong>Note: </strong> The material of the website is currently updated. Please visit periodically to monitor updates as the beginning of the semester approaches.
</p>
</div>
</div>
</div> -->
<!-- Main Content -->
<div class="container">
<!-- <div class="row">
<div class="col-lg-10 col-lg-offset-1">
<div class="alert alert-danger text-center" role="alert" style="margin-top:-0.25cm;">
<p><strong>Note: </strong> Assignments will be made available progressively during the semester. Please visit periodically to monitor updates.
</p>
</div>
</div>
</div> -->
<div class="row">
<div class="text-center">
<h1>Programming Assignments</h1>
<!-- <h3>(Tentative dates)</h3> -->
<br>
<table style="margin-left:auto;margin-right:auto; border:2pt;">
<tr>
<td style="text-align:left"><b>Title & Description </b></td>
<td style="text-align:left"><b>Release Date </b></td>
<td style="text-align:left"><b>Due Date </b></td>
<td style="text-align:left"><b>Material</b></td>
</tr>
<tr>
<td style="text-align:left"><a href="./projects/PA0.pdf">PA0</a></td>
<td style="text-align:left">09/08</td>
<td style="text-align:left">09/15</td>
<td style="text-align:left">Self evaluation</td>
</tr>
<tr>
<td style="text-align:left"><a href="https://github.com/BU-DiSC/cs660-fall2023-pa/blob/main/docs/pa1.md">PA1</a></td>
<td style="text-align:left">09/20</td>
<td style="text-align:left">10/04</td>
<td style="text-align:left">Heapfiles & Bufferpool</td>
</tr>
<tr>
<td style="text-align:left"><a href="https://github.com/BU-DiSC/cs660-fall2023-pa/blob/main/docs/pa2.md">PA2</a></td>
<td style="text-align:left">10/16</td>
<td style="text-align:left">10/29</td>
<td style="text-align:left">B+ tree</td>
</tr>
<tr>
<td style="text-align:left"><a href="https://github.com/BU-DiSC/cs660-fall2023-pa/blob/main/docs/pa3.md">PA3</a></td>
<td style="text-align:left">11/10</td>
<td style="text-align:left">11/27</td>
<td style="text-align:left">Query Processing</td>
</tr>
<tr>
<td style="text-align:left"><a href="https://github.com/BU-DiSC/cs660-fall2023-pa/blob/main/docs/pa4.md">PA4</a></td>
<td style="text-align:left">11/10</td>
<td style="text-align:left">12/08</td>
<td style="text-align:left">Query Optimization</td>
</tr>
</table>
</div>
<!-- <p style="margin-bottom: 10px;"> Building and working with database systems has a very practical side. We use them in virtually all our activities. Part of the learning goal of this class is to know both <em>how to use them</em> and <em>how to build them</em>. To that end we have two projects: <strong>Project 0</strong> focuses on how to use and benchmark database systems, and <strong>Project 1</strong> focuses on understanding and building the internals of a database system.</p> -->
<!--
<a name="project0"></a>
<h1>Project 0</h1>
<h3>Due on Friday, February 17th, 11:59pm.</h3>
<p>A common question in production is which system to use for a specific use-case. A good data engineer is able to provide such answers through experience, benchmarking, and intuition. The goal of this project is to start building these skills, starting with benchmarking.</p>
<p>Traditional DBMS architectures today follow two main approaches: <em>a row-major</em> and <em>column-major</em> approach. In this project we will create groups of 2 students, who will study these approaches. One of the students will work on the row-major system and the other one of the column-major system. We will use as a row-major system <a href="https://www.postgresql.org/download/" target="_blank">PostgreSQL</a> and as a column-major system <a href="https://www.monetdb.org/Downloads" target="_blank">MonetDB</a>. The goal of the project is <strong>to compare the performance of these two systems for a set of analytical queries taken from an industry-grade database systems benchmark</strong>. </p>
<p> To that end each group will prepare a document (about 5 pages) where the two systems will be compared for 8 different queries from the <a href="http://www.tpc.org/tpch/default.asp" target="_blank">TPC-H benchmark</a>. The students are free to select any 8 queries, and present their performance (query latency). The reported performance should be accompanied with experimental setup, any tuning done to the system, and information with regards to standard deviation. Finally, the report should discuss which of the two systems is preferable for what type of queries based on the observed results and the intuition developed throughout the experimentation with the systems.
</p>
<h2>Resources</h2>
<p>Below we provide some resources including the default links for the database systems to use and the TPC-H benchmark. While the instructions show how to install the systems in a virtual machine (VM) <em>you are free to use your own machine locally</em> (in fact this is even better in terms of understanding the behavior of the systems). We offer the VM instructions to make sure that even if you cannot install the systems on your physical machine you can continue with Project 0.</p>
<p>
<a style="text-decoration: underline;" href="project0/readme.txt">Project0 Startup & Installation instructions (MonetDB and PostgreSQL)</a><br>
<a style="text-decoration: underline;" href="http://www.tpc.org/tpch/default.asp" target="_blank">TPC-H Benchmark</a><br>
<a style="text-decoration: underline;" href="http://www.tpc.org/tpc_documents_current_versions/pdf/tpc-h_v2.17.1.pdf" target="_blank">TPC-H Benchmark Spec File (go over Chapters 0, 1, and 2)</a><br>
<a style="text-decoration: underline;" href="project0/project0-setup.tar.gz">TPC-H Benchmark Data/Query Generator & DDL-Files for PostgreSQL and MonetDB</a><br>
</p> -->
<!--
<a name="project"></a>
<h1>Class Project</h1>
<h3>Due at the end of the semester.</h3>
<p>
The goal of the project is to allow Comp115 students to learn more about the internals of database systems. In this assignment you will build a buffer layer that will offer the abstraction of a database file, and then on top of it you will build the index layer.
</p>
<h2>Project A: The Buffer Layer</h2>
<p>
The first part of the project implements the buffer layer that interacts with the file system to create and delete files, and subsequently open and close them and allocate new blocks when needed. The buffer layer is responsible for maintaining the most useful part of the files in memory. The files are read into the buffer one page at a time (when needed) and the pages are maintained in it and moved out only when the buffer is full.
</p>
<h2>Project B: The Heap File Layer</h2>
<p>
The second layer implements the abstraction of files. Each file consists of a number of blocks. The Heap File abstraction allows the application to access a file sequentially (or to ask for a specific block of the file) without knowing whether each (this) block resided in the buffer or on disk. Each file page stores records of information with fixed size. The heap file offers the abstraction of a <em>sequential scan</em>.
</p>
<h2>Class Project Documents</h2>
<a name="projectA"></a>
<h3>ProjectA</h3>
<p>
<a style="text-decoration: underline;" href="project/Comp115ProjectA.pdf">Project A (Buffer Management) Description & Startup</a><br>
<a style="text-decoration: underline;" href="project/updated_code_0.1.zip">Project Header File/Tests/Dummy API Implementation</a><br>
You can also copy the files to your local account by giving when logged in to the <em>homework.eecs.tufts.edu</em> machines: <pre>cp /g/115/2017s/public_html/project/updated_code_0.1.zip .</pre>
and then: <pre>unzip updated_code_0.1.zip</pre><br>
</p>
<a name="projectB"></a>
<h3>ProjectB</h3>
<p>
<a style="text-decoration: underline;" href="project/Comp115ProjectB.pdf">Project B (Heap File and File Scan) Description & Startup</a><br>
<a style="text-decoration: underline;" href="project/projectB_header_files_v2.zip">Project Header Files (projectB.h and record.h) Version 2</a><br>
<a style="text-decoration: underline;" href="project/projectB_test_main_v2.zip">Project Tests/Dummy API Implementation (needs the header files of projectA and projectB) Version 2</a><br>
</p> -->
</div>
</div>
<hr>
<!-- Footer -->
<footer>
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
<!-- <ul class="list-inline text-center">
<li>
<a href="#">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
<li>
<a href="#">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-facebook fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
<li>
<a href="#">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
</ul> -->
<p class="copyright text-muted">Copyright © DiSC lab 2023</p>
</div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="vendor/jquery/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="vendor/bootstrap/js/bootstrap.min.js"></script>
<!-- Contact Form JavaScript -->
<script src="js/jqBootstrapValidation.js"></script>
<script src="js/contact_me.js"></script>
<!-- Theme JavaScript -->
<script src="js/clean-blog.min.js"></script>
</body>
</html>