Dansk - English

Short version - Full version


Software Optimization in C++ and Assembly (Fall 2007)

Course code : IASM-U01
ECTS Credits : 7,5 Status : Optional
Revised : 21/06 2007 Written : 21/06 2007
Placement : 5-7 semester Hours per week : 4
Length : 1 semester Teaching Language : Danish if no English students are present

Objective : The course aims at an understanding of all stages that influence the speed of execution of a software program. This includes the programming work, the compiler, the microprocessor, etc. This will enable the student to optimize the performance of a software product.

To be able to assess which factors are important for the execution speed of a software application. To understand how the microarchitecture of modern microprocessors are optimized for performance. To understand how an optimizing compiler works. To understand how the choice of platform, programming language, algorithm, etc. influences performance. To apply this knowledge in the development of efficient and user-friendly software. To be able to design, implement, optimize and test a subroutine library in a low level language and link it into a high level language application. To be able to design software that handles data in parallel by the use of multi-core processors or Single-Instruction-Multiple-Data instructions.
Principal Content : The microarchitecture of the newest microprocessors from Intel and AMD. Multi-core processors. Out-Of-Order execution. Single-Instruction-Multiple-Data instructions. Low-level programming. How compilers work. Application Binary Interface standards. Test methods. Profiling. Optimization.
Teaching method : Theory lessons, exercises and a self-chosen project. The project can be made alone or in small groups.
Required prequisites : Basic understanding of microprocessors corresponding to the course DIG2A. Mastery of C++ language.
Recommended prerequisites : -
Relations : -
Type of examination : Oral examination based on assignments
External examiner : Internal
Marking : 7 step scale
Remarks : -
Teaching material : Notes and manuals.
Recommended supplementary literature: Richard C. Detmer: Introduction to 80X86 Assembly Language and Computer Architecture. 2nd edition, 2004. Jones & Bartlett Publ.
Responsible teacher : Agner Fog , agfo@dtu.dk