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 - 1United StatesMicrosoft86.62017601Redmond, WA, US + 1United StatesMicrosoft86.62017601Redmond, WA, US - 2United StatesOracle37.22017205Redwood City, CA, US + 2United StatesOracle37.22017205Redwood City, CA, US - 3GermanySAP23.22017117Walldorf, Germany + 3GermanySAP23.22017117Walldorf, Germany - 4United StatesSalesforce.com8.4201769San Francisco, CA, US + 4United StatesSalesforce.com8.4201769San Francisco, CA, US - 5United StatesVMware6.7201748Palo Alto, CA, US + 5United StatesVMware6.7201748Palo Alto, CA, US - 6United StatesFiserv5.3201726Brookfield, WI, US + 6United StatesFiserv5.3201726Brookfield, WI, US - 7United StatesAdobe Systems5201784San Jose, CA, US + 7United StatesAdobe Systems5201784San Jose, CA, US - 8United StatesSymantec5.4201719Mountain View, CA, US + 8United StatesSymantec5.4201719Mountain View, CA, US - 9SpainAmadeus IT Holdings4.3201725Madrid, Spain + 9SpainAmadeus IT Holdings4.3201725Madrid, 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.

+
    +
  1. How do you define Correct and Best?
  2. +
  3. What correct alternatives are available?
  4. +
  5. How do you find the best available alternative
  6. +
+
+
@@ -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.
          +
          +
          + +
          +

          Questions/Concerns?

          +
          +
          + + + +
          +
          +

          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 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + vs + + + { "firstName": "John", "lastName": "Smith", "age": 25, "address": { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": 10021 }, "phoneNumbers": [ { "type": "home", "number": "212 555-1234" }, { "type": "fax", "number": "646 555-4567" } ]} + + + + Databases exploitthe data’s structure! + + + 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 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + 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; }