Objectives
By the end of this course, you should be able to do the following:
Number Systems and Computer Arithmetic
- Define the power of 2 and power of 10 values for: kilo, mega, giga, tera, milli, micro, nano.
- Convert numbers in base 10 to base 2, and numbers in base 2 to base 10.
- Convert numbers in base 16 to base 2, and numbers in base 2 to base 16.
- Express a number in two's complement.
- Give the range of valid numbers expressible in a given integer representation.
- Explain what overflow is, and how it can be detected when adding two's complement numbers.
- Name the three ways a signed binary number can be represented.
- Name the parts of floating point number.
- Express a floating-point number in IEEE 754 single-precision format.
- Discuss the causes for error in integer and floating point arithmetic.
- Name the three types of character codes discussed in the textbook.
Boolean Logic
- Identify the basic logic gates (AND, OR, NOT, XOR, NAND, NOR) and give their truth tables.
- Use Boolean identities to prove the equivalence of two expressions.
- Use DeMorgan's Law to rewrite an expression.
- Write a Boolean expression in sum-of-products or product-of-sum form.
- Derive a Boolean expression or truth table for a given logic circuit.
- Directly draw a logic circuit from a Boolean expression
- Explain what each of the following combinational devices does: full adder, decoder, multiplexer, shifter
- Identify the basic flip-flops (SR, JK, D) and give their characteristic tables.
- Write a simplified Boolean expression from a K-map.
- Create a K-map for a Boolean function.
Computer Architecture - General
- Define or give one defining phrase for generations 0-4 of computers.
- Name and explain the seven layers of the Computer Level Hierarchy used in the textbook.
- Name the characteristics of a von Neumann architecture.
- Describe the purpose of a CPU's datapath and control unit
- Name the components of a CPU's datapath
- Describe the difference between multipoint and point-to-point buses.
- Explain the difference between error detection and error correction.
- Describe how instructions are decoded by the control unit
- Discuss the differences between hardwired and microprogrammed control units
- Show how a multi-byte value is stored in big endian and little endian machines
- Calculate the maximum speed-up for a pipelined processor
- Calculate the speed-up ratio of a pipelined processor for a given number of tasks.
- Identify characteristics of CISC and RISC architectures.
- Calculate aspects of RISC architectures register windowing (Exercises 9.7 and 9.8).
- Describe Flynn's taxonomy.
- Name the differences between symmetric multiprocessors (SMPs) and massively parallel processors (MPPs).
- Identify the six principle types of interconnection network topologies.
- Describe the difference between UMA and NUMA architectures.
- Identify the alternative architectures (dataflow, systolic arrays, neural networks, quantum computers) discussed in the textbook.
- State Moore's Law.
- State Amdahl's Law in words
- Apply Amdahl's Law to determine the speed-up for an overall system given the speed-up of a new component and the fraction of work it performs
- Apply Amdahl's Law to determine the most cost effective way to speed up a system
Computer Architecture - Memory Systems
- Describe the main characteristics of SRAM, DRAM, and ROM
- Calculate the size of various aspects of a given memory system (number of memory chips needed, number of address lines for word and byte addressing, etc)
- Explain the concept of the memory hierarchy, and the memory pyramid (Figure 6.1)
- Explain how the locality principle and the three types of locality influence the memory hierarchy
- Identify the three types of cache designs discussed in class (direct mapped, fully associative, N-way set associative)
- Determine the size of each field in a memory address for a given cache system.
- Determine the sizes of various cache structures (number of blocks, number of sets, words per block, number of main memory blocks) given a memory address broken into the tag, set/block, and word fields.
- Determine cache hits and misses for a series of main memory accesses.
- Determine the effective access time (EAT) for a particular program.
- Describe what write-back and write-through caches are and how they differ.
- Determine the number of pages in virtual memory and physical memory, and the size of the page and offset fields in an address.
- Determine the virtual-to-physical address mapping given a page table, and determine whether a page hit or page fault occurs.
- Describe what the TLB is and the advantages of having it.
Computer Architecture - I/O (Disks)
- Name the four types of I/O control methods, and know their main characteristics.
- Define character and block I/O.
- Describe the difference between synchronous and asynchronous bus transfers.
- Identify the physical and logical components of a magnetic hard disk drive.
- Calculate the access time for a hard disk drive.
- Give the main characteristics of RAID 0, RAID 1, RAID 3, RAID 4, RAID 5, and RAID 6.
- Calculate the amount of available storage for a particular RAID type.
Programming - Assembly Language
- Calculate the number of possible opcode for a given expanding opcode ISA.
- Name and describe the 7 types of computer instructions.
- Give examples of immediate, direct, register, indirect, and indexed addressing.
- Read register transfer language
- Read simple MARIE programs
- Encode and decipher MARIE assembly language or MARIE machine language instructions
- Write a simple MARIE-type program on a stack based architecture
Programming - Compilers and High-Level Languages
- Describe what absolute code and relocatable code are.
- Convert infix to postfix notation, and convert postfix to infix notation
- State what is done in the six stages of compilation.
- List advantages and disadvantages of interpreters.
Operating Systems
- List the operations performed by a resident monitor program.
- Describe how multiprogramming systems differ from timesharing systems
- Describe differences between a microkernel and a monolithic kernel
- Describe the steps performed in a context switch
- Describe the difference between preemptive and nonpreemptive scheduling
- Give characteristics of the four short-term scheduling strategies (first-come-first-served, shortest job first, round robin, priority)
Databases
- Describe the four ACID properties of database management systems.
Computer Networks
- Describe differences between guided and unguided media, and list examples of each.
- Define the purpose of each layer in the ISO reference model.
- Describe the purpose of the IP layer.
- Describe the purpose of the TCP layer.
- Calculate TCP/IP protocol overhead percentages for transmission of a given payload size.
- Determine TCP ACK values for a given TCP transfer.
- Describe how hubs, switches and routers differ from one another.
- Determine router table values using distance vector routing.
- Describe the purpose of Address Resolution Protocol (ARP).
- Describe the purpose of Dynamic Host Configuration Protocol (DHCP).
- Describe the purpose of Domain Name Service (DNS).
- Explain the difference between routing a packet within a subnet and through a router.
- Define pulse-code modulation.
- Define time division multiplexing.
- Identify the three forms of modulating a signal (amplitude, frequency, phase change).