ICS 313 -- Programming Language Theory

Homepage/Syllabus -- Spring 2016

Quick Links: Messages , Weekly Schedule (pdf), Lecture Notes & Links (see Laulima), Assignments, Exams and Grading, Emacs and Unix, Lisp, Prolog,

Lectures: M & W, 1:30-2:45p, Holmes 247.
Instructor: Prof. Nancy Reed, nreed@hawaii.edu, Office POST 314E, 956-8498, Office Hours: MW 11:45-12noon (Ham 2K) and MW 2:45-3:30 (POST 314E) or by appointment
Teaching Assistant: Brandon Ogata, bsogata@hawaii.edu, Office: POST 314 cubicle Office Hours: TBA (will be posted here shortly).

Required Textbooks:
Programming Language Pragmatics, Third Edition Michael L. Scott, Morgan Kaufmann Pub., April, 2009 (paperback) ISBN-10: 0123745144, ISBN-13: 978-0123745149. Note: we will not use the CD from the book.
Land of Lisp, Learn to Program in Lisp, One Game at a Time! by Conrad Barski, M.D. No Starch Press. October 2010, 504 pp. (paperback) ISBN: 978-1-59327-281-4.

Optional Reference Material:
Unix and Emacs -- Just Enough Unix, ANY Edition Paul K. Andersen McGraw Hill or comparable text. Recommended unless you are already proficient with Unix and Emacs. Note: ITS (on campus) has free reference material available on the "flavor" of Unix installed on UHUnix.
Lisp -- Practical Common Lisp, Peter Seibel, Apress, 2005, ISBN: 1590592395, ANSI Common Lisp, Paul Graham, Prentice Hall, 1995, ISBN: 0-133708756, Common Lisp, A gentle introduction to symbolic computation , Touretzky [out of print, link to online copy here ]
Prolog -- Thinking as Computation: A First Course by Hector J. Levesque, 978-0262016995, The MIT Press, (Jan 6, 2012) Strongly recommended unless you already have Prolog experience. Learn Prolog Now http://www.learnprolognow.org/ Programming in Prolog, 4th edition, Clocksin & Mellish, Springer-Verlag, ISBN 3-540-58350-5.


This course covers Unix and Emacs for software development, history of computing and programming languages, introduction to programming language concepts, syntax and semantics, names, scopes, and bindings, control structures and control abstraction, data types and data abstraction, functional programming with Common Lisp and/or Scheme, logic programming and Prolog, scripting Languages and Perl.


Prerequisites inclulde a B or better in all core ICS courses including ICS 211 - Program Structure and ICS 241 - Discrete Mathematics for Computer Science II.

Learning Objectives

ICS 313, Programming Language Theory, covers the syntax, control structures, data structures, binding and scope of programming languages. It also introduces alternative programming paradigms, including functional languages like Lisp and logic programming languages like Prolog. Scripting languages like Perl will be discussed as time permits. Students will write programs in functional and logic languages.

Before the end of the course, all students should:

Course Requirements

Grades in this course are based on 5 criteria. There will be (7-9) written and/or programming assignments (20%), a programming project plus demonstration (in a group or alone) (10%), quizzes on most Wednesdays (20%), one written midterm examination (20%), and a final examination (30%).
Programs must execute and meet the assignment specifications to earn full credit. Good code-writing style, comments and documentation are also required.
Note: A reasonable attempt at ALL assignments AND the project must be submitted to pass the course. I.e. failure to submit any assignment before solutions are posted, is an automatic fail.

KOKUA Program

If you feel you need accommodations due to special circumstances, please contact the KOKUA Program (V/T) at 956-7511 or 956-7612 in room 013 of the QLCSS, and/or speak with me privately to discuss your specific needs. I am happy to work with you and the KOKUA Program to provide the support you need to succeed in this course.

Class Work and Academic Conduct

The Association for Computing Machinery is our primary professional organization. Student membership is not expensive, and there are many benefits of membership. You are bound by the ACM code of ethics. Exams and quizzes must be done individually. Assignments are to be done individually unless explicitly stated otherwise for the specific assignment. Discussing approaches to programming assignments with classmates is fine. Copying answers, sharing code, submitting solutions from the Internet or other sources as your own work are not permitted.
If you use ideas from any source to complete your assignments, including printed and electronic, you must cite the source in your assignment/program files. For example, if you use a book, note the title, author(s) and page numbers. For a web page, enter the URL and date accessed. Journal papers, conference proceedings, and other sources must be identified with the conference name, location and publisher in addition to the title, authors and page numbers. If you use exact text, it must be properly quoted. If you use work you did for a previous course, this must be noted at the top of the page.

All students at the University of Hawaii are bound by the student conduct code posted at ( http://www.studentaffairs.manoa.hawaii.edu/policies/conduct_code/ ). What does this mean to you? Does it mean that its OK to cheat if you don't get caught?

It is each student's responsibility to prevent others from seeing and/or copying their work, and to report incidents of suspected cheating at UH. Cheaters will be reported and risk expulsion from the university.

I hope you learn a lot and enjoy this course.

Go back to the Top of this page

(c) N. E. Reed, 2005-2016