ICS 313: Programming Language Theory
Description: Syntax, semantics, control structures, variable binding and scopes, data and control abstractions. Programming in functional (LISP) and logic (Prolog) programming styles. Pre: 212 and 241, or consent.
Objectives: See Learning Outcomes
Course Learning Outcomes
- Understand the differences among programming languages and paradigms as well as how these differences impact the development and maintenance of programs, such as development ease (time and effort), program correctness (including errors), code maintenance (understandability and extensibility), code execution (speed and image size), and code portability (hardware and compilers/interpreters).
- Have the ability to program in different programming paradigms/styles, including functional and logic languages like Common Lisp or Scheme and Prolog.
- Understand scripting languages such as Perl or JavaScript and their use.
- Have the ability to represent and solve problems at an abstract level before coding them in a particular language.
- Have the ability to understand new programming language concepts, and assess the ease with which these features may be implemented in a programming language.
- Be able to choose the best programming language(s) for a project. Justify the choice with well-reasoned arguments based on language characteristics and the development environment such as the expertise of the programmer(s), resources and workplace politics.
Program Learning Outcomes
- b. Students can analyze a problem, and identify and define the computing requirements appropriate to its solution
- c. Students can design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs
- e. Students have an understanding of professional, ethical, legal, security and social issues and responsibilities
- h. Students can recognize the need for and an ability to engage in continuing professional development
- i. Students can use current techniques, skills, and tools necessary for computing practice
Prerequisites: 212 and 241, or consent.
Textbook(s): Programming Language Pragmatics, Third Edition, by Michael L. Scott, publisher: Morgan Kaufmann, ISBN: 978-0123745149.
Grading: 40% on assignments, 10% on quizzes, 20% on the Midterm exam, 30% on the Final exam.
Schedule
- Week 1: Intro
- Week 2: Functional languages, Prolog
- Week 3: Syntax, Prolog
- Week 4: Scope, Prolog
- Week 5: Semantics, Prolog
- Week 6: Functional languages, Lisp
- Week 7: Control flow, Lisp
- Week 8: Review, Lisp
- Week 9: Midterm
- Week 10: Data types, Lips
- Week 11: Scripting, Python
- Week 12: Subroutines, Python
- Week 13, 14, 15: Concurrency, Python
- Week 16: Review
- Week 17: Final exam