ICS 313 -- Programming Language Theory
Homepage/Syllabus -- Spring 2017
Messages (see Laulima) ,
Weekly Schedule (pdf),
Lecture Notes & Links (see Laulima),
Assignments (see Laulima),
Exams and Grading,
Emacs and Unix,
Lectures: ONLINE See Laulima
Instructor: Prof. Nancy Reed, firstname.lastname@example.org, Office POST 314E.
Office Hours: send a private message on Laulima or email your request.
Teaching Assistant: Branden Ogata, email@example.com, Office: POST 314 cubicle
Office Hours: Wednesdays and Fridays from 8:00am-11:30am or by arrangement.
Note: The exams are open book and closed notes.
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)
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
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. Slides and sample programs from the textbook are available from the author and on Laulima.
Other good sources are:
Learn Prolog Now http://www.learnprolognow.org/
Programming in Prolog, 4th edition, Clocksin &
Mellish, Springer-Verlag, ISBN 3-540-58350-5.
This course introduces Unix and Emacs for software development,
logical representation and reasoning, and the history of computing and programming languages.
Programming language concepts include syntax and semantics,
names, scopes, and bindings,
control structures and control abstraction, and
data types and data abstractions.
Programming paradigms learned include Functional programming with Common Lisp and/or Scheme and
Logic programming with Prolog.
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.
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:
- An ability to use sound development principles to implement
computer-based and software systems of varying complexity, and to
evaluate such systems. [SO#3]
- An ability to use current techniques, skills, and tools
necessary for computing practice. [SO#8]
- Understand the differences among programming languages and
paradigms. Understand how these differences impact the development
and maintenance of programs.
- An ability to program in different
programming paradigms/styles, including functional and logic
languages, E.g. Common Lisp, Scheme and Prolog.
- An ability to represent and solve problems at an
abstract level before coding them in a particular language.
- An ability to understand new programming language
concepts, and assess their usefulness to solve problems.
- An ability to choose the best programming language(s) for a
project and justify your choice with well-reasoned arguments based
on language characteristics and the development environment.
Grades in this course are based on performance in exams and assignments as follows.
There will be several written and/or programming assignments (25%),
one programming project plus demonstration (15%),
two written midterm examinations (15% each), and a final
Grades are based on an absolute scale
As=90-100%, Bs=80-89.9%, Cs=70-79.9%, Ds=60-69.9%.
If you earn 73% or more, then you will receive at least a C.
More details are available
Programs must execute and meet the assignment specifications to earn full
credit. Good code-writing style, comments and documentation are also
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
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
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 (textbook, books, websites, etc) 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 (including a re-take of this course),
that 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
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.
back to the
Top of this page
(c) Nancy E. Reed, 2005-2017