The final exam with be like two exams in one. In part it will cover the last third of the course in roughly the same level of detail that exams 1 and 2 covered the first and second thirds of the course. It will also have a few "greatest hits" exercises that will cover what I consider to be the most important topics in 370. Without further ado, here are the topics that we covered in 370, roughly in chronological order and grouped according to which third of the course they fall in.

• Binary, octal and hexadecimal number systems
• Arithmetic in alternative number systems
• Negative numbers in computers: sign/magnitude, one's complement, two's complement
• Boolean algebra, proofs
• Basic Boolean functions; truth tables and logic gates
• 2-level logic (sum-of-products, product-of-sums), canonical forms (Σ, Π)
• Visualizing Boolean functions (Boolean cubes, K-maps)
• 2-level minimization (K-maps, Quine-McCluskey)
• Combinational Verilog
• ROMS, PLAs, PALs
• Multi-level logic
• Logic delay and glitches
• FPGA essentials, Mux-based logic
• Circuit primitives with memory: latches, flip-flops
• Register timing properties, clocking
• Finite state machine design; Moore and Mealey
• Sequential Verilog
• Finite state machine implementation; different encoding styles
• State minimization (row-matching method, implication-chart method)
• Control/datapath design
• Computer organization
• FETs, CMOS
• Combinational multipliers
Here are some thoughts about which topics and concepts I consider more or less fundamental (i.e. are more or less likely to show up on the final).

• Some of the early topics like arithmetic in different bases and using K-maps to do two-level optimization are unlikely to show up as exercises on their own. However, there may very well be exercises that require understanding these topics.
• Similarly, it's unlikely that there will be a whole Boolean proof exercise, but if you look at the basic Boolean theorems and have no idea why one side of the equal sign is equivalent to the other, that's a problem that may end up costing you points on the final.
• We looked at two different optimization problems in 370 that each have two solution methods, one of which is easier to do by hand and one of which is easier to automate. The problems are two-level simplification and state minimization, and the solution methods are K-maps, Quine-McCluskey, the row matching method, and the implication chart method. You will definitely not have to do big examples of the methods that are better for automation, but it may behoove you to understand the important properties of the algorithms and the solutions they produce. Are the solutions produced by different methods equivalent? How efficient are the algorithms?
• As I have said before, I consider timing diagrams, delay, and it's side-effect, glitches, to be some of the most important topics in 370. Hardware is different from software in a few important ways, not least that electricity flows through transistors causing computation to happen when the laws of physics say it will, not when it would be convenient. Timing issues and their related pathologies will definitely make some sort of appearance on the final.
• Fancy arithmetic circuits: I promise that there will not be a "draw a _____-style adder/multiplier" exercise on the final. However, you should be comfortable with thinking about how the size and delay of an arithmetic circuit relates to the number of bits it works on, and how different styles compare to each other.
• Just like the previous exams, you will not have to write any Verilog code. You may have to read some relatively simple code and understand what it means in terms of real hardware, though.
• Finite state machines will definitely make some kind of appearance on the final, though there won't be as much writing as was involved in homework 8.
• There will most likely be some transistors, but nothing to worry about, if the homework exercise made sense.
Some old final exams:
Autumn, 2006 (Solution)
Winter, 2005 (Solution)