Compilers, interpreters, lexical analysis, syntax analysis, syntax- directed translation, symbol tables, type checking, flow analysis, code generation, code optimization. Prerequisites: one of CMPUT 229, E E 380 or ECE 212, and a 300-level Computing Science course or consent of the instructor.
Advanced programming concepts. Programming language as a vehicle for discussion about programming concepts such as productivity, components and re-use, traditional vs. scripting approaches. Object oriented construction, systems programming, concurrent programming, Graphical User Interface (GUI) programming, distributed programming, and dynamic programming. Prerequisites: ECE 322 or CMPE 320, ECE 325, CMPUT 301 and CMPUT 379. Credit may be obtained in only one of CMPE 410 or ECE 421.