The exams are not open book. You may not use electronic devices of any kind.
In general, all of the topics covered in the course (either in lecture, in the written assignments, in the programming assignments or in the required reading) are fair game. The following list of topics is not necessarily exhaustive (although it is close); you are responsible for all of the material.
The "big" topics won't necessarily be huge parts of the exam time-wise or space-wise, they'll just be worth more points. For example, it's not clear that there are massive detailed questions we can ask about each such topic, but whatever we do ask will be weighted heavily.
We offer the potential for an oral examination because we believe that groups of students learn and demonstrate learning differently across different modalities. That is, some students learn well by listening, some learn well by writing, some learn well by reading, some learn well by coding, etc. Similarly, while the standard programming and written assignments and classroom activities give students a chance to master material by reading, writing and programming, there are other students who can best demonstrate mastery verbally.
If you believe that your current grade for a particular set of topics does not reflect your final mastery of the material, you may petition for an oral examination covering those topics. You petition by emailing the instructor and listing the set of topics. There are a limited number of scheduling slots that are typically given out first-come, first-served: not all petitions need be honored, and if you cannot make any of the available times this option is not available to you.
The oral examination follows the format of a skill-based Computer Science job interview: an oral discussion of problems and solutions, possibly coupled with some board work. The instructor assesses your demonstrated mastery of the material and replaces your grade for each indicated topic with your grade from that part of the oral exam. This means that electing to take the oral exam can lower your grade. It is also worth noting that while the per-topic questions are typically shared across students, you have no easy recourse to dispute the grade assigned by the professor in the oral exam.
Thus, petitioning to take an oral examination is a good fit when you actually have mastered the material but were unable to display it earlier (e.g., you became very nervous on the last half of Midterm #1, or you were quite sick for Programming Assignment 2, or whatnot). By contrast, if your grasp of the material is shaky and you are looking for a way to shore up a poor grade, the oral exam is a poor choice.