ICS 313: Programming Language Theory

Course Information

Instructor information

Professor

Name:
David N. Chin
Email:
chin@hawaii.edu
Office:
POST 314E
Office Hours:
Tuesdays 2:30-4:30 pm and Fridays 9:00-11:00 am and by appointment
Office Phone:
956-8162

Teaching Assistant

Name:
Branden Ogata
Email:
bsogata@hawaii.edu
Office:
POST 314-6
Office Hours:
Tue 8-10am, Thu 8-10am 3-4pm, Fri 8-11am and 3:15-5pm

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 Perl 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.
  7. An ability to use sound development principles to implement computer-based and software systems of varying complexity, and to evaluate such systems.
  8. An ability to use current techniques, skills, and tools necessary for computing practice.

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 7 assignments, 2 each in a logic programming style language (Prolog), a functional programming style language (LISP), and a scripting style language (Python), and 1 in an object-oriented programming style (Common LISP Object System). 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). Exams will include very short programming problems.

Exams

The Midterm exam will cover all material prior to the Midterm date and the Final exam will be comprehensive with more emphasis on material covered since the Midterm.


David N. Chin / Chin@Hawaii.Edu