Lecture 27 Zoom Q&A


Q: can we put our personal projects on github?

A1: So please no assignment solutions on public sites, but I think personal projects should be fine, thanks for asking


Q: what would you say is the current frontier of computer science?

A1: a “frontier” is actually a fractal coastline, the closer you look, the more detail you see!


Q: do skip lists have to be sorted then?

A1: live answered


Q: Does that mean that |L1| should be about sqrt(|L2|)?

A1: live answered

A2: wait for it….


Q: can we add more "express" tracks with even sparser stops, so it has a sort of cascading effect? Or does this just add complexity?

A1: wait for it…!


Q: How can we differentiate a function that has support over integers? Shouldn't it be discoutinous at different values of L1?


Q: Wait did we come up with k = log n by taking the derivative of k * n^(1/k)?

A1: Yes


Q: if it acts like a binary tree, then why just use binary tree

A1: live answered


Q: If our input stream was pre-sorted, would it be most efficient to bring up all even-indexed elements to the higher list for every list?

A1: live answered


Q: So is this kind of like a linked grid, but not fully filled in?

A1: live answered


Q: to clarify then, this is an entire linked list? no use of any other structures?

A1: yup, just a collection of a couple linked lists

A2: Yes, but each node has 4 links (pointers)


Q: could you also think of this as a graph?

A1: It shares some properties with graphs but is much more constrained (only 4 neighbors, layers of neighbors, etc)


Q: Why don’t we use skip lists in practice, they seem like they would be super useful?

A1: They are often used by libraries to provide high-performance sorted data struture. I think Chris’s point was more than you as a programmer will not likely implement one yourself (similar to how you would be unlikely to implement an AVL or red-black tree, but would use one provided by library)


Q: Should we always use two hash functions?

A1: You can tune the number of hash functions + number of bits to achieve different false positive/negative rate — stay tuned


Q: ^ why do we have to k values for each number?

A1: K is the number of hash functions — stay tuned for more info on how to choose the value of k


Q: can you calculate the probablility that a number is present, or are we stuck with just "probably"?

A1: Yes, you can compute the probability of false positive/negative based on k, number of bits


Q: could we keep track of how many times we put a 1 into 5? that way if we only put a 1 in 5 once we could not have auto?

A1: That would refine case where k1 == k2, but won’t broadly eliminate other false positives


Q: What are the benefits of Bloom Filters compared to Hashsets?

A1: A bloom filter doesn’t store the element values at all — only N bits, super-compact but operation support is only contains/not (probabilistically)


Q: Is this similiar to fake news detection?

A1: live answered


Q: Couldn't you store ints instead of bits? So you decrement when you delete?

A1: Yes, but that eats into the cost savings you had in mind (i.e. 1 bit per entry -> 32 bits)


Q: How many hash functions would be used in an application like chrome? Like a ballpark

A1: live answered


Q: what's a typical number of hash functions for Bloom filters?

A1: live answered


Q: Are bloom filters very space efficient?

A1: super space efficient!


Q: Is the application for 107E over already?

A1: live answered

A2: Nope, we haven’t even opened it, stay tuned!


Q: wait where do we look for the 107e application? Does it just go through Axess, or is it separate?

A1: It is separate