To describe the relationship between high-level programming languages and the computer architecture that underlies their implementation.
CS 241 is a required course for all academic plans in the Department of Computer Science and is normally completed in a student's 1B or 2A term.
Prerequisites: CS 134 or 136 (minimum grade of 60%) or 138 or 145; Honours Mathematics or Software Engineering students only.
Antirequisites: CS 230, GENE 344.
Successors: CS 240, 246.
Used in Course: Java, Scheme, UNIX.
Assumed Background: Programming skills including object-oriented programming and generics.
Modern Compiler Implememtation in Java 2nd ed by Andrew Appel, Computer Organization and Design, 4th ed., by D. Patterson and J. Hennessy, Morgan Kaufmann; and Unix in a Nutshell, 4th ed. by A. Robbins, O'Reilly, 1999 are recommended.
3 hours of lectures and a 1 hour tutorial per week. Normally available in Fall, Winter and Spring.
Compiler architecture. Syntax vs. semantics. Introduction to formal languages. Regular languages, regular expressions and finite state machines.
The logical analysis of program misbehaviour, interactive source-level debugging.
Context-free grammars, derivations, derivation trees, ambiguous grammars. Introduction to top-down and bottom-up parsing, LL(1) and LR(1) grammars. Tool-based parser generation.
Simple code. Constructing parse trees.
Functional components of a computer: memory, control unit, arithmetic/logic unit, input/output devices. Data representation. Machine language: operation codes, addressing modes, indexing, base registers, register designation.
Mnemonic op-codes, pseudo-ops, symbolic constants and addresses, literals. Assembler algorithm, linker and loader algorithms.
Brief introduction to the non-object oriented features of C++ with an emphasis on pointers, references, and memory management.

David R. Cheriton School of Computer Science
University of Waterloo
Waterloo, Ontario, Canada N2L 3G1
Tel: 519-888-4567 x33293
Fax: 519-885-1208
Contact | Feedback: cs-uops@cs.uwaterloo.ca | David R. Cheriton School of Computer Science | Faculty of Mathematics