Common features, organization and tradeoffs of modern programming languages including types, binding, and memory management. Theoretical foundations of languages and computation including regular expressions, language classification, grammars, and finite state automata. Functional style programming including higher-order functions and closures.
Take CPSC-2430; Minimum grade C; - Must be completed prior to taking this course. Take MATH-3000 or CPSC-2600; Minimum grade C; - Must be completed prior to taking this course.
• Write Python programs using lists, tuples, dictionaries, and regular expressions.
Describe how names, values, memory, and types are bound to variables and how this may
differ in different programming languages.
• Trace garbage collection algorithms and understand the challenges associated with
reclaiming dynamic memory.
• Write programs in a functional language using higher-order operations on aggregates.
• Convert among equivalently powerful notations for regular languages, including DFAs,
NFAs, and regular expressions.
• Use a context-free grammar to generate strings in a context-free language.
• Describe Turing machines and the halting problem and their significance with respect to
computability.
• Explain the connections between context-free grammars, context-free languages, and
compilers.
• Describe the differences between interpretation, compilation to native code, and
translation to portable intermediate representation.