ICS 313, Programming Language Theory

Course Information

Instructor information

Professor

Name:
David N. Chin
Email:
chin@hawaii.edu
Office:
POST 317
Office Hours:
Mondays and Fridays 3:30-4:30 and by appointment
Office Phone:
956-3500

Teaching Assistant

Name:
Amy Takayesu
Email:
amytaka@hawaii.edu
Office:
POST 314-7
Office Hours:
Tuesdays 2-4, Wednesdays 3-5, and by appointment

Topic

From the catalog: 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.

Student Learning Objectives

  1. 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).
  2. Have the ability to program in different programming paradigms/styles, including functional and logic languages like Common Lisp or Scheme and Prolog.
  3. Understand scripting languages such as Pearl or JavaScript and their use.
  4. Have the ability to represent and solve problems at an abstract level before coding them in a particular language.
  5. Have the ability to understand new programming language concepts, and assess the ease with which these features may be implemented in a programming language.
  6. 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.

Textbooks

Grading Policy

The course grade will be based 40% on assignments, 10% on quizzes, 20% on the Midterm exam, 30% on the Final exam. There will be 6 assignments, 2 each in a logic programming style language (Prolog), a functional programming style language (Lisp), and a scripting style language (Python). The grading will be on an absolute scale; if you get 60% or better, then you will get at least a C. Above passing, the following scale will be used. This scale may be adjusted so that thresholds are lowered, but I will never raise the thresholds (not even if it means the whole class will get As, which would make me very happy as it would mean that every student has mastered the material).

As=85-100%, Bs=70-85%, Cs=55-70% (60% for C), Ds=45-55%.

Quizzes

The in-class quizzes will be graded as pass (100% credit) or fail (0 credit) with a pass given if you show a reasonable effort toward the solution (so you do not have to get the correct solution for a pass). Quizzes will be passed out at the very start of class and can occur on either day of the week. You must arrive on time to take a quiz. Quiz questions will reappear in the Midterm and Final exams with very slight modifications (e.g. changing the numbers of the question parameters). Some quiz questions will come directly from the "Check your understanding" questions at the end of PLP chapter subsections and the Exercises at the end of each chapter.

Exams

The Midterm exam will cover all material prior to the Midterm date and the Final exam will be comprehensive.


David N. Chin / Chin@Hawaii.Edu