Merge branch 'master' of gram.cse.buffalo.edu:ODIn/Website
commit
9f746c0a46
|
@ -11,7 +11,7 @@
|
|||
"country" : "USA"
|
||||
}
|
||||
},
|
||||
"blurb" : "My work melds ideas from compilers and query languages into databases to solve practical data management problems. The Mimir system developed by my group is among the most performant, practical systems for managing incomplete data; My work on just-in-time data structures represents an entirely novel way of thinking about data structure design and management; and I also have made numerous contributions to the area of incremental data processing. I have received several invitations to 'best-of' compilations for top database conferences, and my work has influenced the design of SQLite, the world's most wildely deployed database system.",
|
||||
"blurb" : "My work melds ideas from compilers and query languages into databases to solve practical data management problems. My group developed the Vizier notebook for reproducible data science, which has spun off into Breadcrumb Analytics. My group also developed TreeToaster, a drop-in tool that makes optimizing compilers run faster on larger code.",
|
||||
"home" : {
|
||||
"street" : "63 Bassett Road",
|
||||
"city" : "Amherst",
|
||||
|
@ -206,8 +206,15 @@
|
|||
"type" : "award",
|
||||
"source" : "UB",
|
||||
"individual" : "YES"
|
||||
},
|
||||
{
|
||||
"description" :
|
||||
"Oliver received the IEEE Region 1 Technological Innovation Award",
|
||||
"year" : 2022,
|
||||
"type" : "award",
|
||||
"source" : "IEEE",
|
||||
"individual" : "YES"
|
||||
}
|
||||
|
||||
],
|
||||
"chairs" : [
|
||||
{ "venue" : "pVLDB", "position" : "Reproducibility Co-Chair", "years" : [ 2018, 2019, 2020, 2021, 2022 ] },
|
||||
|
|
|
@ -252,7 +252,6 @@ schedule:
|
|||
- date: 09/16/22
|
||||
topic: ADTs, Sequences, Arrays
|
||||
dow: Fri
|
||||
due: PA1
|
||||
section_a:
|
||||
slides: slide/lec08a.pdf
|
||||
section_b:
|
||||
|
@ -261,7 +260,10 @@ schedule:
|
|||
lectures:
|
||||
- date: 09/19/22
|
||||
topic: ArrayBuffer, Amortized Runtime, and Option types
|
||||
due: PA1
|
||||
dow: Mon
|
||||
section_a:
|
||||
slides: slide/lec09a.pdf
|
||||
section_b:
|
||||
slides: slide/8b-ArrayBufferAmortized.html
|
||||
- date: 09/21/22
|
||||
|
@ -272,7 +274,8 @@ schedule:
|
|||
- date: 09/23/22
|
||||
topic: Recursion Intro
|
||||
dow: Fri
|
||||
due: WA0
|
||||
section_b:
|
||||
slides: slide/10b-Recursion.html
|
||||
- week: 5
|
||||
lectures:
|
||||
- date: 09/26/22
|
||||
|
@ -281,6 +284,7 @@ schedule:
|
|||
- date: 09/28/22
|
||||
topic: Recursive Analysis (contd...)
|
||||
dow: Wed
|
||||
due: WA0
|
||||
- date: 09/30/22
|
||||
topic: Data-Bounded Analysis
|
||||
dow: Fri
|
||||
|
|
|
@ -0,0 +1,165 @@
|
|||
---
|
||||
template: templates/cse250_2022_slides.erb
|
||||
title: Recursion
|
||||
date: Sept 21, 2022
|
||||
textbook: tbd
|
||||
---
|
||||
|
||||
<section>
|
||||
<svg data-src="graphics/10b/matroska.svg" class="stretch"/>
|
||||
<attribution><a href="https://www.etsy.com/listing/916447505/ukrainian-nesting-doll-nesting-dolls">Ukranian Nesting Doll Nesting Dolls Handmade Dolls | Etsy</a>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h4 class="slide_title">Factorial</h4>
|
||||
|
||||
<pre><code>
|
||||
def factorial(n: Int): Long =
|
||||
if(n <= 1){ 1 }
|
||||
else { n * factorial(n-1) }
|
||||
</code></pre>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h4 class="slide_title">Factorial</h4>
|
||||
|
||||
<b>Base Case:</b>
|
||||
<pre><code>
|
||||
if(n <= 1){ 1 }
|
||||
</code></pre>
|
||||
|
||||
<b>Recursive Case:</b>
|
||||
<pre><code>
|
||||
else { n * factorial(n-1) }
|
||||
</code></pre>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h4 class="slide_title">Fibonacci</h4>
|
||||
|
||||
<p>
|
||||
1, 1,
|
||||
<span class="fragment">2, </span>
|
||||
<span class="fragment">3, </span>
|
||||
<span class="fragment">5, </span>
|
||||
<span class="fragment">8, </span>
|
||||
<span class="fragment">13, </span>
|
||||
<span class="fragment">21, </span>
|
||||
</p>
|
||||
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h4 class="slide_title">Fibonacci</h4>
|
||||
|
||||
<pre><code>
|
||||
def fibb(n: Int): Long =
|
||||
if(n < 2){ 1 }
|
||||
else { fibb(n-1) + fibb(n-2) }
|
||||
</code></pre>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h4 class="slide_title">Fibonacci</h4>
|
||||
|
||||
<b>Base Case:</b>
|
||||
<pre><code>
|
||||
if(n < 2){ 1 }
|
||||
</code></pre>
|
||||
|
||||
<b>Recursive Case:</b>
|
||||
<pre><code>
|
||||
else { fibb(n-1) + fibb(n-2) }
|
||||
</code></pre>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h4 class="slide_title">Towers of Hanoi</h4>
|
||||
|
||||
<p>Live demo!</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h4 class="slide_title">Towers of Hanoi</h4>
|
||||
|
||||
<pre><code>
|
||||
var towers = Array(new Stack(), new Stack(), new Stack())
|
||||
|
||||
def moveFrom(fromTower: Int, toTower: Int, numDisks: Int): Unit =
|
||||
{
|
||||
val otherTower = (Set(0, 1, 2) - fromTower - toTower).head
|
||||
|
||||
if(numDisks < 0){
|
||||
return
|
||||
} else if(numDisks == 1){
|
||||
moveTopDisk(from = fromTower, to = toTower)
|
||||
} else {
|
||||
moveFrom(fromTower, otherTower, numDisks-1)
|
||||
moveTopDisk(from = fromTower, to = toTower)
|
||||
moveFrom(otherTower, toTower, numDisks-1)
|
||||
}
|
||||
}
|
||||
</code></pre>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h4 class="slide_title">Factorial</h4>
|
||||
|
||||
<p>What's the complexity? (in terms of <tt>n</tt>)</p>
|
||||
|
||||
<pre><code>
|
||||
def factorial(n: Int): Long =
|
||||
if(n <= 1){ 1 }
|
||||
else { n * factorial(n-1) }
|
||||
</code></pre>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h4 class="slide_title">Factorial</h4>
|
||||
|
||||
$$T(n) = \begin{cases}
|
||||
\Theta(1) & \textbf{if } n \leq 0\\
|
||||
T(n-1) + \Theta(1) & \textbf{otherwise}
|
||||
\end{cases}$$
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h4 class="slide_title">Fibonacci</h4>
|
||||
|
||||
<b>Base Case:</b>
|
||||
$$\Theta(1) \textbf{ if } n < 2$$
|
||||
|
||||
<b>Recursive Case"</b>
|
||||
$$T(n-1) + \Theta(1) \textbf{ otherwise}$$
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h4 class="slide_title">Factorial</h4>
|
||||
|
||||
$$T(n) = \begin{cases}
|
||||
\Theta(1) & \textbf{if } n \leq 0\\
|
||||
T(n-1) + \Theta(1) & \textbf{otherwise}
|
||||
\end{cases}$$
|
||||
|
||||
<p>Solve for $T(n)$</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h4 class="slide_title">Fibonacci</h4>
|
||||
|
||||
<p>What's the complexity? (in terms of <tt>n</tt>)</p>
|
||||
<pre><code>
|
||||
def fibb(n: Int): Long =
|
||||
if(n < 2){ 1 }
|
||||
else { fibb(n-1) + fibb(n-2) }
|
||||
</code></pre>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h4 class="slide_title">Fibonacci</h4>
|
||||
|
||||
$$T(n) = \begin{cases}
|
||||
\Theta(1) & \textbf{if } n < 2
|
||||
T(n-1) + T(n-2) + \Theta(1) & \textbf{otherwise}
|
||||
\end{cases}$$
|
||||
</section>
|
|
@ -5,6 +5,10 @@ date: Sept 7 and 12, 2022
|
|||
textbook: "Ch. 7.3-7.4"
|
||||
---
|
||||
|
||||
<!--
|
||||
2022 by OK: It would be worth adding a slide on what it means for bounds to be "tight"
|
||||
-->
|
||||
|
||||
<section>
|
||||
<h4 class="slide_title">When is an algorithm "fast"?</h4>
|
||||
<ul style="font-size: 80%">
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
template: templates/cse250_2022_slides.erb
|
||||
title: Linked Lists and Iterators
|
||||
date: Sept 18, 2022
|
||||
title: ArrayBuffers, Amortized Analysis
|
||||
date: Sept 19, 2022
|
||||
textbook: "Ch. 6.4"
|
||||
---
|
||||
|
||||
|
@ -238,8 +238,8 @@ textbook: "Ch. 6.4"
|
|||
<pre><code>
|
||||
def append(elem: T): Unit =
|
||||
{
|
||||
if(used == data.size){
|
||||
/* 🙁 case; assume newLength > data.size, but pick it later */
|
||||
if(used == data.size){ /* 🙁 case */
|
||||
/* assume newLength > data.size, but pick it later */
|
||||
val newData = Array.copyOf(original = data, newLength = ???)
|
||||
/* Array.copyOf doesn't init elements, so we have to */
|
||||
for(i <- data.size until newData.size){ newData(i) = None }
|
||||
|
@ -354,7 +354,7 @@ textbook: "Ch. 6.4"
|
|||
<section>
|
||||
<h4 class="slide_title">newLength = data.size × 2</h4>
|
||||
|
||||
<p>How many boxes for $n$ inserts? <span class="fragment">$\log(n)$</span></p>
|
||||
<p>How many boxes for $n$ inserts? <span class="fragment">$\Theta(\log(n))$</span></p>
|
||||
<p class="fragment">How much work for box $j$?
|
||||
<center>
|
||||
<span class="fragment">
|
||||
|
@ -364,7 +364,7 @@ textbook: "Ch. 6.4"
|
|||
</center>
|
||||
</p>
|
||||
<p class="fragment">How much work for $n$ inserts?
|
||||
$$\sum_{j = 0}^{\log(n)}\Theta(2^j)$$
|
||||
$$\sum_{j = 0}^{\Theta(\log(n))}\Theta(2^j)$$
|
||||
</p>
|
||||
|
||||
<p class="fragment"><b>Total for $n$ insertions: </b> $\Theta(n)$</p>
|
||||
|
@ -388,4 +388,13 @@ textbook: "Ch. 6.4"
|
|||
|
||||
<p class="fragment">e.g., the amortized runtime of <tt>append</tt> is $O(\frac{n}{n}) = O(1)$</p>
|
||||
<p class="fragment">(even though the worst-case runtime is $O(n)$)</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h4 class="slide_title">Next time...</h4>
|
||||
<ul>
|
||||
<li>Linked Lists</li>
|
||||
<li>Iterators</li>
|
||||
<li>Access-by-reference</li>
|
||||
</ul>
|
||||
</section>
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
template: templates/cse250_2022_slides.erb
|
||||
title: Linked Lists and Iterators
|
||||
date: Sept 18, 2022
|
||||
date: Sept 21, 2022
|
||||
textbook: "Ch. 7"
|
||||
---
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 3.2 MiB |
Binary file not shown.
|
@ -38,7 +38,7 @@ schedule:
|
|||
materials:
|
||||
talk: /talks/2022-09-20-501-Vizier.html
|
||||
- speaker: Erdem Sariyuce
|
||||
topic: "TBD"
|
||||
topic: Practical algorithms for real-world networks
|
||||
- date: 09/27/22
|
||||
talks:
|
||||
- speaker: Zhuoyue Zhao
|
||||
|
|
Loading…
Reference in New Issue