Website/src/teaching/cse-562/2017sp/index.erb

263 lines
13 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

---
title: CSE-562 Database Systems (Spring 2017)
classContent:
- date: Jan. 31
topic: Introduction + SQL Overview
meta:
slides-intro: slides/2017-01-31-Intro.html
slides-sql: slides/2017-01-31-SQL.pdf
- date: Feb. 2
topic: Physical Data Organization
meta:
notes: slides/2017-02-02-PhysicalLayout.pdf
board: slides/2017-02-02-Board.pdf
csv-script: slides/2017-02-02-CSVExample.zip
- date: Feb. 7
topic: Checkpoint 0 + Indexing
meta:
slides-checkpoint0: slides/2017-02-07-Checkpoint 0.html
notes: slides/2017-02-07-Indexing.pdf
board: slides/2017-02-07-Board.pdf
video: https://youtu.be/APTMjlVQVwc
- date: Feb. 9
topic: Indexes (Overview, Tree Indexes)
meta:
notes: slides/2017-02-09-Indexes.pdf
board: slides/2017-02-09-Board.pdf
video: https://youtu.be/0a622-T4obk
- date: Feb. 14
topic: Indexes (Primary/Secondary, LSM Trees, B+Trees)
meta:
notes: slides/2017-02-14-Indexes.pdf
demo: slides/2017-02-14-BTrees.zip
board: slides/2017-02-14-Board.pdf
video: https://youtu.be/1vxbb4rfwZM
- date: Feb. 16
topic: Checkpoint 1 Overview + Hash Indexes
meta:
checkpoint1: slides/2017-02-16-Checkpoint1.html
notes: slides/2017-02-16-HashIndexes.pdf
board: slides/2017-02-16-Board.pdf
video: https://youtu.be/MxFnwTnW0a0
- date: Feb. 21
topic: External and Aggregation Algorithms
meta:
notes: slides/2017-02-21-ExternalAlgos.pdf
board: slides/2017-02-21-Board.pdf
- date: Feb. 23
topic: Joins and Join Algorithms
meta:
notes: slides/2017-02-23-GBAgg+Joins.pdf
board: slides/2017-02-23-Board.pdf
- date: Feb. 28
topic: Relational Algebra and Optimization
meta:
notes: slides/2017-02-28-RelationalAlgebra.pdf
board: slides/2017-02-28-Board.pdf
video: https://youtu.be/GTqq62Q5Nvg
- date: Mar. 2
topic: Optimization
meta:
notes: slides/2017-03-02-Optimization1.pdf
board: slides/2017-03-02-Board.pdf
video: https://youtu.be/1JDDS_bQr6M
- date: Mar. 7
topic: Database Statistics 1
meta:
notes: slides/2017-03-07-CostBasedOpt.pdf
board: slides/2017-03-07-Board.pdf
video: https://youtu.be/QWrZEW9fsQs
- date: Mar. 9
topic: Database Statistics 2
meta:
notes: slides/2017-03-09-Histograms.pdf
board: slides/2017-03-09-Board.pdf
video: https://youtu.be/BPKWbQpKuxs
- date: Mar. 14
topic: <b>Classes Cancelled for Snow</b>
- date: Mar. 16
topic: Checkpoint 2 Overview
meta:
slides: slides/2017-03-16-Checkpoint2.html
video: https://youtu.be/oqQqSfODIvQ
- date: Mar. 21
topic: <b>Spring Break</b>
- date: Mar. 23
topic: <b>Spring Break</b>
- date: Mar. 28
topic: Midterm Exam Review
meta:
slides: slides/2017-03-28-Review.pdf
video: https://youtu.be/Q-upx-loCQE
- date: Mar. 30
topic: <b>Midterm Exam</b>
meta:
2013: ../exams/2013sp-midterm.pdf
2014: ../exams/2014sp-midterm.pdf
2015: ../exams/2015sp-midterm.pdf
solutions: ../exams/2017sp-midterm.pdf
- date: Apr. 4
topic: SQL DDL and Constraints
meta:
slides: slides/2017-04-04-DynamicData.pdf
video: https://youtu.be/Tr-7XbEd9L4
- date: Apr. 6
topic: Incremental View Maintenance
meta:
slides: slides/2017-04-06-Views.pdf
- date: Apr. 11
topic: Theory of Transactions (Schedule Equivalence, Serializability, Locking)
meta:
slides: slides/2017-04-11-TransactionCorrectness.pdf
- date: Apr. 13
topic: Transaction Control Protocols (Optimistic Concurrency)
meta:
slides: slides/2017-04-13-OptimisticConcurrency.pdf
video: https://youtu.be/mtT9sQIFuuM
- date: Apr. 18
topic: Logging and Aries
meta:
slides: slides/2017-04-18-Logging.pdf
video: https://youtu.be/-mtaXyeSBpM
- date: Apr. 20
topic: Project 3 overview
meta:
slides: slides/2017-04-20-Checkpoint3.pdf
- date: Apr. 25
topic: Parallel Queries
meta:
slides: slides/2017-04-25-Parallelism.pdf
video: https://youtu.be/Is7i1wbpdkc
- date: Apr. 27
topic: Parallel Updates
meta:
slides: slides/2017-04-27-ParallelUpdates.pdf
video: https://youtu.be/zrgOth7m3Eg
- date: May. 2
topic: Probabilistic Databases
meta:
c-tables: https://github.com/UBOdin/mimir/wiki/Concepts-CTables
- date: May. 4
topic: Probabilistic Databases
meta:
video: https://youtu.be/15qTZ7q69x4
- date: May. 9
topic: Final Exam Review
meta:
slides: slides/2017-05-09-FinalReview.pdf
video: https://youtu.be/7XwBFIW4VJQ
- date: May. 11
topic: <b>Final Exam</b>
meta:
2013: ../exams/2013sp-final.pdf
2014: ../exams/2014sp-final.pdf
2015: ../exams/2015sp-final.pdf
---
<h1 style="text-align: center;"><%= title %></h1>
<p style="text-align: justify;">Data Management Systems (including Relational Databases, Non-Relational Databases, and NoSQL storage systems) form the basis of the Big Data Economy we now live in.  A data management system is responsible for storing data, enabling efficient access to that data, as well as mediating concurrent modifications.  This class approaches the challenges of designing a data management system from a standpoint that is both principled and practical.  The course revolves around a term-long programming assignment, in which you will build a system that answers SQL queries efficiently.  Course lectures will focus on the conceptual basis for this system, and will discuss how the techniques you learn generalize (e.g., to the use of NoSQL systems)</p>
In this course, you will learn...
<ul>
<li>... how to efficiently store and retrieve data programatically.</li>
<li>... how to optimize big-data computations.</li>
<li>... how to use index structures to accelerate computations.</li>
<li>... how to safely and efficiently manipulate data concurrently.</li>
<li>... how to recover state after software and hardware failures.</li>
<li>... how to query and update distributed data consistently.</li>
</ul>
<h2>Course Details</h2>
<ul>
<li><strong>Class</strong>: T/R, 12:30-2:00 PM in <a href="http://www.buffalo.edu/buildings/building?id=alumni">ALUMNI 97</a></li>
<li><strong>Instructor</strong>: <a href="https://odin.cse.buffalo.edu/people/oliver_kennedy.html">Oliver Kennedy</a> (Ketter 133A; Tue 2:00-3:00 or by appointment)</li>
<li><strong>TAs: </strong><ul>
<li>Liuyi Yao (Davis 338H; Mon 4:00-5:00)</li>
<li>Alex Stachnik (Davis 338H; Wed 3:00-4:00)</li>
</ul></li>
<li><strong>Course Forum: </strong> <a href="https://piazza.com/buffalo/spring2017/cse562/home">Piazza</a></li>
<li><strong>Optional Textbooks</strong>: <ul>
<li>"<a href="https://smile.amazon.com/Patterns-Data-Management-Flipped-Textbook/dp/1523853964/ref=sr_1_1?ie=UTF8&qid=1483409680&sr=8-1&keywords=patterns+in+data+management">Patterns in Data Management</a>"<br/> by Jens Dittrich</li>
<li>"Database Systems: The Complete Book" 2e.<br/> by Garcia-Molina, Ullman, and Widom</li>
<li>"SAMS Teach Yourself SQL in 10 Minutes" 4e.<br/> by Ben Forta</li>
<li>"<a href="http://www.redbook.io/">The Red Book: Readings in Databases</a>"<br/> ed. Bailis, Hellerstein, and Stonebraker</li>
</ul></li>
<li><strong>Software</strong>: <ul>
<li>JSQLParser-UB (<a href="http://maven.mimirdb.info/info/mimirdb/jsqlparser/1.0.0/jsqlparser-1.0.0.jar">Jar</a> | <a href="http://doc.odin.cse.buffalo.edu/jsqlparser/">JavaDoc</a> | <a href="https://github.com/UBOdin/jsqlparser">Source</a>)</li>
<li>EvalLib (<a href="http://maven.mimirdb.info/info/mimirdb/evallib/1.0/evallib-1.0.jar">Jar</a> | <a href="https://github.com/UBOdin/evallib">Source</a>)</li>
<li>Apache Commons CSV (<a href="http://commons.apache.org/proper/commons-csv/download_csv.cgi">Jar</a> | <a href="https://commons.apache.org/proper/commons-csv/archives/1.4/apidocs/index.html">JavaDoc</a>)</li>
</ul></li>
<li><strong>Project Submission</strong>:<a href="http://dubstep.odin.cse.buffalo.edu"> http://dubstep.odin.cse.buffalo.edu</a></li>
<li><strong>Project Groups</strong>: 1-3 people</li>
<li><strong>Grading</strong>:
<ul>
<li>50% exams
<ul>
<li>25% Midterm on Mar.30 (in class)</li>
<li>25% Comprehensive Final on Thu May 11(in class)</li>
</ul>
</li>
<li>50% projects
<ul>
<li>5% <a title="Checkpoint 0" href="checkpoint0.html">Project 0</a> due on Feb. 10.</li>
<li>15% <a title="Checkpoint 1" href="checkpoint1.html">Project 1</a> due on March 10 (code-review after)</li>
<li>15% <a title="Checkpoint 2" href="checkpoint2.html">Project 2</a> due on April 22 (code-review after)</li>
<li>15% <a title="Checkpoint 3" href="checkpoint3.html">Project 3</a> due on May 11 (code-review after)</li>
</ul>
</li>
</ul>
</li>
</ul>
<!--
<h2>Library Documentation</h2>
<ul>
<li><strong>JSqlParser</strong> ( <a href="http://maven.mimirdb.info/info/mimirdb/jsqlparser/1.0.0/jsqlparser-1.0.0.jar">jar</a>, <a href="http://doc.odin.cse.buffalo.edu/jsqlparser">JavaDoc</a>, <a href="https://youtu.be/U4TyaHTJ3Zg">Demo</a>)</li>
<li><strong>EvalLib</strong> ( <a href="maven.mimirdb.info/info/mimirdb/jsqlparser/1.0/evallib-1.0.jar">jar</a>, <a href="https://github.com/UBOdin/evallib">Source</a> )</li>
<li><strong>Apache Commons CSV</strong> ( <a href="http://commons.apache.org/proper/commons-csv/download_csv.cgi">jar</a>, <a href="https://commons.apache.org/proper/commons-csv/archives/1.4/apidocs/index.html">JavaDoc</a> )</li>
</ul>
-->
<h2>Lecture Schedule</h2>
<ul>
<% classContent.each do |data| %>
<li><i><%=data["date"]%></i>:&nbsp;&nbsp;&nbsp;<%=data["topic"]%>
<%if data.has_key? "meta" %> ( <%= data["meta"].map { |r,url| "<a href=\"#{url}\">#{r}</a>" }.join(" | ") %> )<% end %></li>
<% end %>
</ul>
<h2>Content Outline</h2>
<ul>
<li><strong>Relational Algebra</strong></li>
<li><strong>SQL</strong></li>
<li><strong>Query Compilers</strong> </li>
<li><strong>Data Modeling</strong></li>
<li><strong>Algebraic Query Optimization</strong></li>
<li><strong>Join Algorithms</strong></li>
<li><strong>Extended Relational Algebra</strong></li>
<li><strong>Buffering &amp; External Algorithms</strong></li>
<li><strong>Physical Plans</strong></li>
<li><strong>The Memory Hierarchy</strong></li>
<li><strong>Physical Design</strong></li>
<li><strong>Indexing</strong></li>
<li><strong>Materialized Views</strong></li>
<li><strong>Cost-Based Optimization</strong></li>
<li><strong>Failure Recovery</strong> </li>
<li><strong>Updating Data</strong></li>
<li><strong>Transactions</strong> </li>
<li><strong>Locking</strong></li>
<li><strong>Deadlocks</strong></li>
<li><strong>Lock-free Concurrency</strong></li>
<li><strong>Distributed Data Management</strong></li>
<li><strong>Uncertain Data Management</strong></li>
<li>Time permitting, other subjects will also be covered.</li>
</ul>
</li>
</ul>
<h2>Academic Integrity</h2>
<p style="text-align: justify;">Students may discuss and advise one another on their lab projects, but groups are expected to turn in their own work.  Discussing concepts is permitted.  Referencing another group's code is not.  Cheating on any course deliverable will result in an automatic grade of F in the course. It is the CSE department's policy not to provide financial support to any student disciplined for plagarism. The University's policy on academic integrity can be reviewed at:</p>
<p style="text-align: center;"><a href="http://grad.buffalo.edu/Academics/Policies-Procedures/Academic-Integrity.html">The Graduate School Academic Integrity Policy</a></p>
<h2>Medical Emergencies</h2>
<p style="text-align: justify;">Accommodations for medical emergencies will be made on a case-by-case basis.  Requests for extensions based on medical emergencies must be accompanied by documentation of the emergency from student health services:</p>
<p style="text-align: center;"><a href="http://www.student-affairs.buffalo.edu/shs/student-health/">Student Health Services</a></p>
<h2>Accessibility Resources</h2>
<p style="text-align: justify;">If you have a diagnosed disability (physical, learning, or psychological) that will make it difficult for you to carry out the course work as outlined, or that requires accommodations such as recruiting note-takers, readers, or extended time on exams or assignments, please advise the instructor during the first two weeks of the course so that we may review possible arrangements for reasonable accommodations. In addition, if you have not yet done so, contact:</p>
<p style="text-align: center;"><a href="http://www.student-affairs.buffalo.edu/ods/">The Office of Accessibility Resources</a>.</p>