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 (lexers) 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 suitable languages, techniques, paradigms, algorithms, and features for practical programming tasks.
Full syllabus is available upon request.
The recommended text is Concepts of Programming Languages 12th Edition by Robert Sebesta (
ISBN 9780135102251) for study and reference. Editions as old as 9th are acceptable.