- David N. Chin
- POST 317
- Office Hours:
- Mondays and Fridays 3:30-4:30 and by appointment
- Office Phone:
- Amy Takayesu
- POST 314-7
- Office Hours:
- Tuesdays 2-4, Wednesdays 3-5, and by appointment
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
- 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.
- 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.
- required: Programming Language Pragmatics, Third Edition, by Michael L. Scott, publisher: Morgan Kaufmann, ISBN: 978-0123745149.
- optional: Programming in Prolog: Using the ISO Standard (earlier editions are fine too), by William Clocksin and Christopher S. Mellish, publisher: Springer, ISBN: 978-3540006787.
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%.
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.
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