CS 360 Comparison of Programming Languages
This course will survey the major programming language paradigms of imperative, functional, object-oriented and logic languages. Theoretical coverage of underlying principles of programming languages will be studied and then demonstrated through practical examples from languages representative of each paradigm.
Offered
Fall, even years
Student Learning Outcomes
- Students will be able to discuss the situations where developing a domain-specific language or library are appropriate
- Students will define a programming language including the lexical and syntax feature of the language, as well as its semantics
- Students will explain the role of lexical analysis as the compiler reads source code
- Students will explain how syntax errors are reported and how tools enable programmers to debug problems
- Students will construct syntax trees following language grammar rules
- Students will construct symbol tables and define variable scope and lifetime in relationship to the syntax tree
- Students will explain how the complier performs type checking on base types
- Students will explain how variable structures such are arrays and method calls are type checked
- Students will demonstrate how the compiler turns the syntax tree into intermediate code instructions
- Students will be able to define how bytecode interpreters work and support new high-level languages
- Students will explain how native code is required to achieve language performance requirements
- Students will explain how memory management is accomplished in modern programming languages