CS 334: Exam 2 topics

Table of Contents

Notes sheet

You are permitted one 8.5 x 11 handwritten notes sheet (both sides) for use as a reference during the exam.

How to study

Lots of research has shown that purely reading over material isn't a very good way to prepare for exams. Practice is also important. Reading how to swing a baseball bat or how to cross-country ski might be important for giving you some good ideas on how to get better the next time you try it, but it's doesn't substitute for actually getting out there and trying those ideas by swinging a bat or skiing in the Arb.

How can you practice? Go back to look at the homework problems. Can you do them from scratch on paper? Furthermore, the textbook has a strong set of practice problems, with solutions online. Make sure to do all of your practicing on paper, not at a keyboard, so as to simulate the exam conditions.

Remember that you have a textbook. Its content is much better than what you'll find with random web searches, and I'm basing my notation and content on it. It is a much more effective use of your time to use the textbook as a reference rather than trying to find random web pages that may or may match what we've covered.

Exam content

Listed below is the material that I have in mind that you should know for the exam. It's what's in my head when creating it. That said, this isn't a contract. I may have inadvertently left something off this list that ends up on an exam question. I make no guarantees that the exam will be 100% limited to items listed below. Moreover, I will not be able to test all of this material given the time limitations of the exam. I will have to pick and choose some subset of it.

There's more in the textbook than what we've covered; I will only be asking exam questions about content that has either been discussed in class or has appeared on homework assignments.

Database design theory (chapter 8)

Be able to define functional dependencies, and show understanding of what they mean in specific relation instances. Be able to define BCNF and 3NF, and be able to interpret the various criteria within those definitions. Be able to define closure of a set of dependencies. Be able to determine whether a relation is in BCNF and/or 3NF, and alernatively be able to decompose a relation into BCNF. Be able to define a lossless-join decomposition vs. a dependency preserving decomposition, explain the desirability of each, and how these two forms of decomposition relate to BCNF and 3NF.

Storage (chapter 10)

Disk management: Demonstrate understanding of how disks store and evaluate tradeoffs in cost, speed, and capacity.

Block organization: Be able to describe a variety of block organizations with fixed and variable length records, and be able to explain tradeoffs by using each. Be able to describe how free space is handled on an individual block, again being able to explain tradeoffs.

Buffer pool manager: Be able to explain the need for a buffer pool manager vs. what OS does with specific situations. Be able to describe various replacement algorithms (LRU, MRU, etc) and predict which blocks would be replaced under particular access patterns. Be able to describe a pattern that causes bad things for an arbitrary replacement algorithm. Be able to explain and/or utilize why and how dirty bit and pinning is used, and how pinning differs from locking.

Indexing (chapter 11)

Be able to quantitatively describe advantages and disadvantages of indexing. Be able to define and quantitatively assess merit of indexing strategies such as primary, secondary, clustering, dense, and sparse.