diff --git a/slides/cse4562sp2018/2018-01-29-Intro.html b/slides/cse4562sp2018/2018-01-29-Intro.html
index b8ac46be..cad26877 100644
--- a/slides/cse4562sp2018/2018-01-29-Intro.html
+++ b/slides/cse4562sp2018/2018-01-29-Intro.html
@@ -48,7 +48,7 @@
Exploring Online Data Interactions
-
+
@@ -62,7 +62,12 @@
- Why Study Databases?
+ Why Are Databases Awesome?
+
+
+
+ They're Everywhere
+
@@ -77,31 +82,31 @@
Headquarters |
- 1 | | Microsoft | 86.6 | 2017 | 601 | Redmond, WA, US |
+ 1 | | Microsoft | 86.6 | 2017 | 601 | Redmond, WA, US |
- 2 | | Oracle | 37.2 | 2017 | 205 | Redwood City, CA, US |
+ 2 | | Oracle | 37.2 | 2017 | 205 | Redwood City, CA, US |
- 3 | | SAP | 23.2 | 2017 | 117 | Walldorf, Germany |
+ 3 | | SAP | 23.2 | 2017 | 117 | Walldorf, Germany |
- 4 | | Salesforce.com | 8.4 | 2017 | 69 | San Francisco, CA, US |
+ 4 | | Salesforce.com | 8.4 | 2017 | 69 | San Francisco, CA, US |
- 5 | | VMware | 6.7 | 2017 | 48 | Palo Alto, CA, US |
+ 5 | | VMware | 6.7 | 2017 | 48 | Palo Alto, CA, US |
- 6 | | Fiserv | 5.3 | 2017 | 26 | Brookfield, WI, US |
+ 6 | | Fiserv | 5.3 | 2017 | 26 | Brookfield, WI, US |
- 7 | | Adobe Systems | 5 | 2017 | 84 | San Jose, CA, US |
+ 7 | | Adobe Systems | 5 | 2017 | 84 | San Jose, CA, US |
- 8 | | Symantec | 5.4 | 2017 | 19 | Mountain View, CA, US |
+ 8 | | Symantec | 5.4 | 2017 | 19 | Mountain View, CA, US |
- 9 | | Amadeus IT Holdings | 4.3 | 2017 | 25 | Madrid, Spain |
+ 9 | | Amadeus IT Holdings | 4.3 | 2017 | 25 | Madrid, Spain |
@@ -121,22 +126,22 @@
- What is Databases?
+ What is "Databases"?
How do we ask and answer questions about data?
-
- - Efficiency
- - Accuracy
- - Summarization
- - Data Curation
+
+ - Efficiency
+ - Accuracy
+ - Summarization
+ - Data Curation
How do we manipulate and persist data?
-
- - Consistency
- - Correctness
- - Parallelism
+
+ - Consistency
+ - Correctness
+ - Parallelism
@@ -164,10 +169,24 @@
Data Consistency
-
+
+ Which Tools To Use
+ And When?
+
+
+
+ Template for 90% of Database Systems
+ For X, the best, correct choice is Y, at least when Z.
+
+ - How do you define Correct and Best?
+ - What correct alternatives are available?
+ - How do you find the best available alternative
+
+
+
@@ -185,12 +204,16 @@
Gokhan Kul (Practicum Lead)
William Spoth (Project TA)
Saurav Singhi (Concept TA)
+ Carl Nuessle (Ninja)
+ [ TBD ]
Syllabus and Projects
+ https://odin.cse.buffalo.edu/teaching/cse-462/
https://odin.cse.buffalo.edu/teaching/cse-562/
+ (same link)
Course Forum
https://piazza.com/buffalo/spring2018/cse4562/home
@@ -200,14 +223,14 @@
Course Structure
- - Concepts (50% of Grade)
-
+ - Concepts (50% of Grade; Lectures on Mon/Wed)
+
- Homework (10%; 12-15 Assignments, Keep Best 10)
- Midterm (20% or 15%)
- Comprehensive Final (20% or 25%)
- - Practicum (50% of Grade)
-
+ - Practicum (50% of Grade; Lectures on Fri)
+
- Build a Relational Query Engine
- 3-Person Group Project
- 5 "Checkpoints"
@@ -219,6 +242,46 @@
+
+
+ Embedded Databases
+
+ - SQLite (In your browser, computer, phone, fridge...)
+ - Simple, Easy-To-Use Declarative Data Management
+ - Critical for future tech: Part of Mobile, IoT, Web
+
+
+ Your Startup: Build the next great Embedded Database
+
+
+
+ We give you...
+ Data (CSV Files)
+ Schema Information (CREATE TABLE)
+ Questions (SQL Queries)
+
+
+
You give us...
+
Answers
+
(really really fast)
+
+
+
+
+ Real World Challenge
+ You get graded on your code's...
+
+ - Correctness
+ - ~1/3 credit for getting the right answer.
+ - Performance
+ - ~2/3 credit for getting it reasonably fast.
+
+
+
+
+
Checkpoint 0: "Hello World"
5/50 pts
@@ -267,6 +330,147 @@
+
+
+
+
+ Ways to Fail
+
+ - Start your project at the last minute
+ - Don’t go to office hours
+ - Don’t ask questions on Piazza
+ - Wait until the deadline to submit for the first time
+ - Cheat
+
+
+
+
+
+
+
+
+ Academic Integrity
+ Cheating is submitting any work that you did not perform by yourself as if you did.
+
+
+
+ - References (when cited)
+ - Wikipedia, Wikibooks (or similar): OK
+
+ - Public Code
+ - Stack Exchange (or similar): Not OK
+
+ - Discussing concepts/ideas with classmates
+ - “A hash index has O(1) lookups”: OK (except during exams 😇 )
+
+ - Sharing code or answers with anyone
+ - “Just have a look at how I implemented it”: NOT OK
+ - For-hire code: NOT OK
+
+
+
+
+
+ MOSS
+
+
+
+
+ MOSS
+
+
+
+
+
+ - Zero Tolerance
+ - If I catch you submitting someone else’s code, you will fail the class.
+
+ - Group Responsibility
+ - If your teammate cheats on a group project, the entire group will be penalized.
+
+ - Share Code, Share Blame
+ - If someone else submits your code as their own, you will be penalized as well.
+
+
+
+
+
+
+
+
+
+
+ What does a Data Management System Do?
+
+
+
+
+ - Analysis: Answering user-provided questions about data
+ - What kind of tools can we give end-users?
+ - Declarative Languages
+ - Organizational Datastructures (e.g., Indexes)
+
+
+ - Manipulation: Safely persisting and sharing data updates
+ - What kind of tools can we give end-users?
+ - Consistency Primitives
+ - Data Validation Primitives
+
+
+
+
+
+
+
+ So let's talk structure...
+
+
+
+
+ - Primitive
+ - Basic building blocks like Int, Float, Char, String
+ - Tuple
+ - Several ‘fields’ of different types. (N-Tuple = N fields)
+ - A Tuple has a ‘schema’ defining each field
+ - Set
+ - A collection of unique records, all of the same type
+ - Bag
+ - An unordered collection of records, all of the same type
+ - List
+ - An ordered collection of records, all of the same type
+
+
+
+
+
+
+
+ Your data is currently an Unordered Set
+ of Tuples with 100 fields each.
+
+
+
+ Tomorrow, you’ll be repeatedly asked for 1 specific attribute
+ of 5 specific rows identified by the first attribute
+
+
+ Can you do better?
+
+
+
+ Better Idea: Rewrite data into a 99-Tuple of Maps keyed on the 1st attribute
+ This representation is equivalent and better for your needs.
+
+ Declarative specifications make it easier to find equivalences.
+
+
+
diff --git a/slides/cse4562sp2018/graphics/23px-Flag_of_Germany.svg.png b/slides/cse4562sp2018/graphics/2018-01-29-23px-Flag_of_Germany.svg.png
similarity index 100%
rename from slides/cse4562sp2018/graphics/23px-Flag_of_Germany.svg.png
rename to slides/cse4562sp2018/graphics/2018-01-29-23px-Flag_of_Germany.svg.png
diff --git a/slides/cse4562sp2018/graphics/23px-Flag_of_Spain.svg.png b/slides/cse4562sp2018/graphics/2018-01-29-23px-Flag_of_Spain.svg.png
similarity index 100%
rename from slides/cse4562sp2018/graphics/23px-Flag_of_Spain.svg.png
rename to slides/cse4562sp2018/graphics/2018-01-29-23px-Flag_of_Spain.svg.png
diff --git a/slides/cse4562sp2018/graphics/23px-Flag_of_the_United_States.svg.png b/slides/cse4562sp2018/graphics/2018-01-29-23px-Flag_of_the_United_States.svg.png
similarity index 100%
rename from slides/cse4562sp2018/graphics/23px-Flag_of_the_United_States.svg.png
rename to slides/cse4562sp2018/graphics/2018-01-29-23px-Flag_of_the_United_States.svg.png
diff --git a/slides/cse4562sp2018/graphics/2018-01-29-MOSS.png b/slides/cse4562sp2018/graphics/2018-01-29-MOSS.png
new file mode 100644
index 00000000..d4f94679
Binary files /dev/null and b/slides/cse4562sp2018/graphics/2018-01-29-MOSS.png differ
diff --git a/slides/cse4562sp2018/graphics/2018-01-29-MOSSDetails.png b/slides/cse4562sp2018/graphics/2018-01-29-MOSSDetails.png
new file mode 100644
index 00000000..77600e56
Binary files /dev/null and b/slides/cse4562sp2018/graphics/2018-01-29-MOSSDetails.png differ
diff --git a/slides/cse4562sp2018/graphics/2018-01-29-fs_vs_db.svg b/slides/cse4562sp2018/graphics/2018-01-29-fs_vs_db.svg
new file mode 100644
index 00000000..3a113d72
--- /dev/null
+++ b/slides/cse4562sp2018/graphics/2018-01-29-fs_vs_db.svg
@@ -0,0 +1,831 @@
+
+
+
+
diff --git a/slides/cse4562sp2018/graphics/2018-01-29-project-overview.svg b/slides/cse4562sp2018/graphics/2018-01-29-project-overview.svg
index 505d0c00..8407ecaf 100644
--- a/slides/cse4562sp2018/graphics/2018-01-29-project-overview.svg
+++ b/slides/cse4562sp2018/graphics/2018-01-29-project-overview.svg
@@ -7,17 +7,178 @@
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="210mm"
- height="297mm"
- viewBox="0 0 210 297"
+ width="91.015282mm"
+ height="178.80977mm"
+ viewBox="0 0 91.015278 178.80977"
version="1.1"
id="svg3474"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="2018-01-29-project-overview.svg">
+ id="defs3468">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ inkscape:window-y="1"
+ inkscape:window-maximized="1"
+ fit-margin-top="10"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="20" />
@@ -44,35 +209,254 @@
image/svg+xml
-
+
-
+ CSV Files
- SQL Query
+ id="flowRoot13"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+ transform="matrix(0.26458333,0,0,0.26458333,18.61828,32.787552)">
+
+ .SQL
+
+
+
+ CREATE TABLE
+
+
+
+ SELECT
+
+
+
+
+ Schema
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Optimizer
+
+
+
+
+
diff --git a/slides/cse4562sp2018/graphics/2018-01-29-rel-schemas.svg b/slides/cse4562sp2018/graphics/2018-01-29-rel-schemas.svg
new file mode 100644
index 00000000..18e7d32f
--- /dev/null
+++ b/slides/cse4562sp2018/graphics/2018-01-29-rel-schemas.svg
@@ -0,0 +1,1348 @@
+
+
+
+
diff --git a/slides/cse4562sp2018/graphics/Books/DBSystemsHardcover.jpg b/slides/cse4562sp2018/graphics/Books/DBSystemsHardcover.jpg
new file mode 100644
index 00000000..f2702131
Binary files /dev/null and b/slides/cse4562sp2018/graphics/Books/DBSystemsHardcover.jpg differ
diff --git a/slides/cse4562sp2018/graphics/Books/DBSystemsSoftcover.jpg b/slides/cse4562sp2018/graphics/Books/DBSystemsSoftcover.jpg
new file mode 100644
index 00000000..f75611f8
Binary files /dev/null and b/slides/cse4562sp2018/graphics/Books/DBSystemsSoftcover.jpg differ
diff --git a/slides/cse4562sp2018/graphics/Books/PatternsInDM.jpg b/slides/cse4562sp2018/graphics/Books/PatternsInDM.jpg
new file mode 100644
index 00000000..0d1813a3
Binary files /dev/null and b/slides/cse4562sp2018/graphics/Books/PatternsInDM.jpg differ
diff --git a/slides/cse4562sp2018/graphics/Books/SqlIn10Min.jpg b/slides/cse4562sp2018/graphics/Books/SqlIn10Min.jpg
new file mode 100644
index 00000000..633f9cb2
Binary files /dev/null and b/slides/cse4562sp2018/graphics/Books/SqlIn10Min.jpg differ
diff --git a/slides/cse4562sp2018/graphics/Clipart/DB.png b/slides/cse4562sp2018/graphics/Clipart/DB.png
new file mode 100644
index 00000000..90f993ef
Binary files /dev/null and b/slides/cse4562sp2018/graphics/Clipart/DB.png differ
diff --git a/slides/cse4562sp2018/graphics/Clipart/Email.png b/slides/cse4562sp2018/graphics/Clipart/Email.png
new file mode 100644
index 00000000..a2e69c25
Binary files /dev/null and b/slides/cse4562sp2018/graphics/Clipart/Email.png differ
diff --git a/slides/cse4562sp2018/graphics/Clipart/File.png b/slides/cse4562sp2018/graphics/Clipart/File.png
new file mode 100644
index 00000000..5bde59da
Binary files /dev/null and b/slides/cse4562sp2018/graphics/Clipart/File.png differ
diff --git a/slides/cse4562sp2018/graphics/Clipart/GIT.png b/slides/cse4562sp2018/graphics/Clipart/GIT.png
new file mode 100644
index 00000000..2f6c0cd1
Binary files /dev/null and b/slides/cse4562sp2018/graphics/Clipart/GIT.png differ
diff --git a/slides/cse4562sp2018/graphics/Clipart/Graargh.png b/slides/cse4562sp2018/graphics/Clipart/Graargh.png
new file mode 100644
index 00000000..936bdd64
Binary files /dev/null and b/slides/cse4562sp2018/graphics/Clipart/Graargh.png differ
diff --git a/slides/cse4562sp2018/graphics/Clipart/HDD.png b/slides/cse4562sp2018/graphics/Clipart/HDD.png
new file mode 100644
index 00000000..d0fa983c
Binary files /dev/null and b/slides/cse4562sp2018/graphics/Clipart/HDD.png differ
diff --git a/slides/cse4562sp2018/graphics/Clipart/JAR.png b/slides/cse4562sp2018/graphics/Clipart/JAR.png
new file mode 100644
index 00000000..877ccdc2
Binary files /dev/null and b/slides/cse4562sp2018/graphics/Clipart/JAR.png differ
diff --git a/slides/cse4562sp2018/graphics/Clipart/Java.png b/slides/cse4562sp2018/graphics/Clipart/Java.png
new file mode 100644
index 00000000..ed42741d
Binary files /dev/null and b/slides/cse4562sp2018/graphics/Clipart/Java.png differ
diff --git a/slides/cse4562sp2018/graphics/Clipart/Server.png b/slides/cse4562sp2018/graphics/Clipart/Server.png
new file mode 100644
index 00000000..574dbffd
Binary files /dev/null and b/slides/cse4562sp2018/graphics/Clipart/Server.png differ
diff --git a/slides/cse4562sp2018/graphics/Clipart/SqlitePhone.png b/slides/cse4562sp2018/graphics/Clipart/SqlitePhone.png
new file mode 100644
index 00000000..6404b082
Binary files /dev/null and b/slides/cse4562sp2018/graphics/Clipart/SqlitePhone.png differ
diff --git a/slides/cse4562sp2018/graphics/Clipart/User.png b/slides/cse4562sp2018/graphics/Clipart/User.png
new file mode 100644
index 00000000..e3c69b0a
Binary files /dev/null and b/slides/cse4562sp2018/graphics/Clipart/User.png differ
diff --git a/slides/cse4562sp2018/graphics/FullText-white.png b/slides/cse4562sp2018/graphics/LabLogo-FullText-white.png
similarity index 100%
rename from slides/cse4562sp2018/graphics/FullText-white.png
rename to slides/cse4562sp2018/graphics/LabLogo-FullText-white.png
diff --git a/slides/cse4562sp2018/template.html b/slides/cse4562sp2018/template.html
index 144ad272..522d2974 100644
--- a/slides/cse4562sp2018/template.html
+++ b/slides/cse4562sp2018/template.html
@@ -48,7 +48,7 @@
Exploring Online Data Interactions
-
+
diff --git a/slides/cse4562sp2018/ubodin.css b/slides/cse4562sp2018/ubodin.css
index e4a7b46b..bf0a132e 100644
--- a/slides/cse4562sp2018/ubodin.css
+++ b/slides/cse4562sp2018/ubodin.css
@@ -181,8 +181,17 @@ body {
list-style-type: disc; }
.reveal ul > li {
+ margin-top: 20px; }
+
+.reveal ul.tight > li {
margin-top: 10px; }
+.reveal ol > li {
+ margin-top: 20px; }
+
+.reveal ol.tight > li {
+ margin-top: 0px; }
+
.reveal ul ul {
list-style-type: square; }