Introduction; assemblers: basic function. Machine-dependent and machine-independent features, design options; loaders and linkers: basic functions, types of loaders, Macro processor: basic functions, features, design options. Advanced concepts including: virtual machines, runtime Environments, memory garbage collection. Introduction to Compiling; Lexical analysis: specification and recognition of tokens, finite automata; Syntax analysis: grammars, top-down and bottom-up passing; Syntax-directed translation; Semantic routines; Storage-allocation strategies; Code generation; Error recovery. Weekly practice in the lab