Final Exam Review Guide
The exam will be a mix of True/False, possibly multiple choice, short answers, and several longer answers. It will also include some short and medium-length coding, as well as understanding provided assembly and C code.We will make the toupper.asm program available during the exam, as well as a table of the Boolean algebra identity rules.
Final Exam Topic Outline:
- All the topics from the first half of the course
(This will comprise ~20% of the final exam.)
See the link to the midterm study guide for topics. - Basic C
(Much of this should be review of materials learned in CMSC 202)- Basic types: char, float, int, double, long, unsigned
- Variable declarations: scope and lifetime
- Basic control structures: if/else, for-loops, while/do-while loops, switch
- Advanced operators: ternary operator (?:), bit operators (<<, >>, &, |, ^)
- sizeof(), typedef
- Arrays, including multi-dimensional
- Constants: #define vs. const
- C Standard I/O (stdio)
- stin, stdout, stderr
- fopen() fclose()
- printf()/sprintf(), including format specs covered in lecture
- scanf()/fscanf()
- EOF handling
- String functions
- strlen(), strcpy(), strncpy(), etc.
- null termination
- C structs
- defining, initializing structs
- accessing struct members
- sizeof() for structs
- offsets of struct members, padding
- C Pointers
- What they are, uses
- pointer declaration
- Using '*' and '&' operators
- NULL pointers
- Using pointers to simulate "pass by reference"
- Pointers to structs
- Pointers and arrays
- Pointer arithmetic
- Pointers to pointers
- const pointers vs. pointers to consts
- Dynamic memory
- malloc()/calloc()/realloc()/free() usage
- NULL return values
- Dynamic multi-dimensional arrays, ragged arrays
- Perils and pitfalls
- C/assembly interface: the phases of the __cdecl calling convention
- Function ptrs
- Declaring, assigning to, and invoking function pointers
- qsort() example
- (Details of polymorphism will not be covered on final, just concept)
- Boolean algebra
- Boolean expressions and functions
- Truth tables
- Using Boolean identity rules, especially DeMorgan's Law, to simplify expressions (a table of the identity rules will be provided)
- Canonical (standardized) forms: Sum of Products, Product of Sums
- Logic gates
- AND, OR, NOT, XOR, NAND, NOR gates
- graphic symbols, function
- Why NAND, NOR are called "universal gates"
- Rules of Equivalence & Universality
- Transistor logic
- Transistors as switches/relays
- How n-type and p-type transistors behave
- Don't need to remember details on how semiconductors work at molecular level
- Half- and full-adders
- How to construct one from truth table
- Connecting into ripple-carry adders
- Decoders, multiplexers, demultiplexers
- Sequential circuits
- Clocks
- Using feedback for stable circuits
- SR flip-flops, including constructing from gates
- JK flip-flops, D flip-flops
- Finite state machines (FSMs)
- State transition diagrams, state tables, state assignment, state truth tables
- Karnaugh maps (K-maps) for circuit minimization
- Implicants, prime implicants, essential prime implicants
- K-map algorithm
- FSM simplification
- State reduction algorithm
- state assignment (just understand concept of how this works, why it's important)
- (flip-flop selection NOT covered)
- CPU design
- There were no new topics for this--just application of earlier techniques; just understand steps
- Cache & virtual memory lectures will not be covered on final exam