Outline

Up

1. Applications of computer arithmetic algorithms
    a. general purpose microprocessors
    b. cryptography
    c. coding
    d. digital signal processing

2. Fixed point number systems
    a. representation of signed numbers (one's complement, two's complement, sign-magnitude)
    b. integers vs. fractional numbers
    c. signed digit representation
    d. number system conversions

3. Introduction to logic synthesis with VHDL
    a. implementation of combinational logic in VHDL
    b. implementation of registers, latches, and counters in VHDL
    c. structural modeling in VHDL
    d. RTL-level modeling in VHDL
    e. CAD tools for the automated logic synthesis    
    f.  functional and timing simulation of digital circuits

4. Fast addition and subtraction in hardware
    a. half adders and full adders
    b. ripple carry adders/subtractors
    c. carry lookahead and block carry lookahead adders
    d. carry skip, carry select, and conditional sum adders
    e. hybrid adder designs
    f. counters
    g. multi-operand addition
    h. comparison, tradeoffs and optimizations

5. Addition and subtraction of long numbers in software
    a. little-endian and big-endian
    b. carry propagation in assembler and high-level languages

6. Fast multiplication in hardware
    a. sequential Booth multipliers
    b. array multipliers
    c. tree multipliers
    d. pipelined array and tree multipliers
    e. multiplication of signed numbers
    f. multiplication by a constant
    g. squaring
    h. multiplier accumulator

7. Fast multiplication of long integers in software
    a. iterative paper and pencil algorithm
    b. recursive Karatsuba algorithm
    c. Shönhage-Strassen algorithm based on the Fast Fourier Transform
    d. optimizations for squaring

8. Fast division and modular reduction in hardware
    a. sequential division
    b. SRT division
    c. high-radix division
    d. array dividers
    e. division by convergence
    f. division by reciprocation
    g. Montgomery algorithm

9. Fast division and modular reduction of long integers in software
    a. classical algorithm
    b. Selby-Mitchell algorithm
    c. Barret's algorithm
    d. Montgomery algorithm

10. Fast exponentiation in hardware and software
    a. binary and k-ary methods
    b. sliding window
    c. addition chains
    d. fixed-base methods
    e. exponent signed digit recoding

11. Floating point numbers
    a. ANSI/IEEE floating-point standard
    b. single, double, and extended precision formats
    c. errors and exceptions
    d. rounding schemes

12. Floating point operations
    a. addition and subtraction
    b. multiplication
    c. division

13. Representations of components in the Galois field GF(2n)
    a. polynomial base representation
    b. normal base representation
    c. dual base representation

14. Fast multiplication in the Galois fields in hardware
    a. standard base multipliers
    b. dual base multipliers
    c. normal base multipliers
    d. multiplication by a constant

15. Fast multiplication in the Galois fields in software

16. The residue number system
    a. RNS number representation
    b. addition, subtraction, multiplication
    c. conversions between binary and RNS systems