CPSC 3400: Languages and Computation (5 Credit Class)

About

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.

Prerequsites

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.

Learning Outcomes

• 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.

Imperative V.S. Declarative Languages
Imperative: Specify how the computer should do it
Declarative: Specify what the computer should do
Imperative V.S. Declarative

Helpful Resources