Completion of CS 111.
Upon successful completion of this course, students will be able to…
Discuss language evaluation criteria and programming language paradigms.
Design and interpret context-free grammars using Backus-Naur form, extended BNF, and attribute grammars.
Employ syntax derivations, operational semantics, denotational semantics, and axiomatic semantics to evaluate the forms and meanings of sentences in programming languages.
Sketch finite-state automata, construct regular expressions, and design and implement lexical analyzers and recursive descent parsers in code to recognize the syntax and semantics of context-free languages.
Compare and contrast different implementations of common language features including declarations, expressions, statements, assignments, data types, branching structures, and repetition structures.
Distinguish the designs and behavior of subprograms.
Distinguish the imperative and declarative programming paradigms, including functional languages and logical languages, and translate program source code among them.
Explain concurrency in development using language features such as semaphores and mutexes.
Appraise the most suitable languages, techniques, paradigms, algorithms, and features for completing practical tasks.
Full syllabus is available upon request.
The recommended text is Concepts of Programming Languages 11th Edition by Robert Sebesta (
ISBN 978-0-13-394302-3, out of print) for reading and reference. Older or newer editions are acceptable. Because most of the out-of-class work will be completed in teams, it is reasonable for team members to share a copy or two as long as everyone has reliable access.