CISC260 Tentative Schedule (Spring 2009) # Week Topic 1 F9 Data representation 2 F16 Boolean logic, gates 3 F23 Build a simple computer 4 M2 Build a simple computer 5 M9 MIPS, ISA, Assembly Language 6 M16 Assembly programming 7 M23 Procedure call, stack Midterm M27 Spring break 8 A6 Floating point 9 A13 Assembly programming: Dynamic data structure/OOP 10 A20 Assembler, Linker, Compiler 11 A27 Performance and optimization 12 M4 Pipelining/Cache/IO 13 M11 Assembly programming: more optimization 14 M18 Assembly language programming and security ======= May 18 Lec. 35 - Buffer overflow attacks ----- May 15 Lec. 34 - Memory hierarchy and Cache > performance metrics: miss rate and hit rate - I/O > memory-mapped I/O v.s. programmed I/O > pooling v.s. Interrupt-driven I/O ----- May 13 Lec. 33 - Memory hierarchy and Cache > locality: temporal and spatial > directed mapping ----- May 11 Lec. 32 - Optimization > loop unrolling and instruction rescheduling ----- May 8 Lec. 31 - Pipeline harzards > data, structural, and control harzards o forwarding or nop (hardware) o re-scheduling the code (programming for pipelined CPU) ----- May 6 Lec. 30 - optimization > Transformation to tail recursion factorial(n) > pipelining the CPU to increase throughput (reduce CPI) > reading assignment: Chapter 4.5 ----- May 4 Lec. 29 - Optimization > Jumptable > Tail recursion o example: the GCD algorithm ----- May 1 Lec. 28 - Performance > Amdahl's Law > examples ----- Apr. 29 Recitation session ----- Apr. 27 Lec. 27 - Assembler, Linker and Loader > example - Performance > CPU time = Instruction Count x CPI x Clock Cycle ----- Apr. 24 Lec. 26 - Assembler, Linker and Loader > two passes > symbol table, relocation table ----- Apr. 22 Lec. 25 - OOP > example > MIPS instruction: jalr ----- Apr. 20 Lec. 24 - OOP > Vtable > inheritance > dynamic method dispatch ----- Apr. 17 Lec. 23 - Arrays v.s. pointers - Memory allocation and Dynamic data > SPIM sbrk > linked list ----- Apr. 15 Lec. 22 - More stack disciplines > local variables > more than 4 arguments > frame pointer ----- Apr. 13 Lec. 21 - Floating point numbers: arithmetic ----- Apr. 10 Lec. 20 - Floating point numbers > IEEE 754 standard, single precision and double precision ----- Apr. 8 Lec. 19 - Floating point numbers > fix point > normalized scientific notation > conversion of decimal fraction to binary ----- Apr. 6 Lec. 18 - midterm discussion ----- Mar. 27 Midterm ----- Mar. 25 Review ----- Mar. 23 Lec. 17 - demo: running the assembly code for fact(4) ----- Mar. 20 Lec. 16 - more about procedures: recursive call - stack - assembly code for computing factorial recursively ----- Mar. 18 Lec. 15 - MIPS programming - translate assembly code to machine code. - Procedure call: code reusability and abstraction > "cut-and-paste" v.s. "call-by-name" > hardware support: jal and jr. - Reading assignment: Chapter 2.8 ----- Mar. 16 Lec. 14 - Syscall - pseudoinstructions - MIPS programming > if-then-else > loop - Reading assignment: Chapter 2.1 - 2.7 - hw3 is due - hw4 is out (assembly programming on SPIM) ----- Mar. 13 Lec. 13 - MIPS programming - Reading assignment: Appendix B9 and B10 ----- Mar. 11 Lec. 12 - MIPS instructions - Addressing modes (Figure 2.18) ----- Mar. 9 Lec. 11 - MIPS machine - Figure 4.1, 4.2, and 4.17 - Figure 2.1 - MIPS reference data sheet (Green Card) ----- Mar. 6 Lec. 10 - add a large data memory, load/store - reading assignment: Chapter 4.1-4.4. ----- Mar. 4 Lec. 9 - add braching instruction, and implement while loops. - hw2 is due - hw3 is out ----- Mar. 2 Class cancelled due to inclement weather ----- Feb. 27 Lec. 8 - programming the ALU (cont'd) - stored programs - program counter - clock - edge-triggered D-latch - add more controls ----- Feb. 25 Lec. 7 - programming the ALU - storage (memory) - register files - instruction memory - Homework 1 is due - Homework 2 is out ----- Feb. 23 Lec. 6 - Half adder, full adder, 8-bit adder - decoder, multiplexor (selector) - arithmetic logical unit (ALU) -- programmable! ----- Feb. 20 Lec. 5 - All functions can be represented by using Boolean logic - Boolean logic can be implemented by wiring up gates - Only one type of gates is sufficent: NAND universality - DeMorgan's law - Reading assignment: Appendix C.1 - C.3. ----- Feb. 18 Lec. 4 - overflow in two's complement - multiplication ----- Feb. 16 Lec. 3: Two's complement and integer arithmetic - signed integers - addition, subtraction, multiplication, and division ----- Feb. 13 Lec. 2 - overflow in two's complement - multiplication - Reading assignment: Chapter 3.1-3.4 ----- Feb. 11 Lec. 1: Overview - Reading assignment: Chapter 1.2 and 1.3