Malicious code, taxonomy, viruses, worms, trojan horses, logical and temporal bombs, infection process, security properties of applications, safety, high level security, detection approaches, ad hoc techniques: scanning, anti-virus technology, obfuscation, dynamic analysis for security: passive and active monitoring, in-line and reference monitors, sandboxing, static analysis for security: data and control flow analysis for security, type-based analysis for security, anti-reverse-engineering protection, software fingerprinting, self-certified code: certifying compilers, proof carrying code, efficient code certification, typed assembly languages, certificate generation, certificate verification and validation, C and C++ security, java security, byte-code verification, access controllers, security managers, permission files, security APIs, critical APIs, protection domains, security profiles, mobile code security.