COURSE AIMS AND OBJECTIVES: A completion of the Interpretation of Computer Programs course, by further insight into interpretation of programs on modern processors and hardware-software interaction in some detail.
COURSE DESCRIPTION AND SYLLABUS:
1. Programming for the MIPS architecture. A gradual introduction to the abstract MIPS architecture, instruction set and translation to machine code. Memory addressing. Interpreting typical higher level constructs. Programming in assembly language, using simulators.
2. Machine arithmetics. Integer arithmetics. Floating point arithmetics. Compilation of arithmetic expressions and its traps.
3. Exploiting the MIPS microarchitecture. Introducing the MIPS components. The stages of instruction processing. Exploiting on-board parallelism: pipelining. Compilation for pipelining: opportunities and traps.
4. Programming for the memory hierarchy. SRAM, DRAM and files. Mapping virtual memory. Addresses virtual and physical, paging and TLB. IO-devices, interrupts and the memory hierarchy. Compilation for the memory hierarchy - opportunities and traps.
TEACHING AND ASSESSMENT METHODS:
Students' obligations during classes: Lecture attendance, active participation in tutorials, elaboration of homework, passing 2 mid-term exams, participation in structuring a study project.
Signature requirements: Recorded activity at 70% of tutorials, submission of results for 70% of homework, passing grade at all mid-term exams, undertaking a study project.
Taking of exams: Final examination consists of solving the study project and presenting the solution to the teacher. Final grade is based on activity at tutorials, successful elaboration of homework, grades for mid-term exams and grade for the study project solution.