ICS 313 -- Programming Language Theory
Homepage/Syllabus -- Spring 2013
Weekly Schedule (pdf)
Lecture Notes & Links,
Exams and Grading,
Emacs and Unix,
Lectures: M & W, 1:30-2:45p, POST 127
Instructor: Prof. Nancy Reed, office: 314E POST, email:
firstname.lastname@example.org, office phone: 956-8498
Office Hours: M & W 11:30-12:15 pm POST 314E or by appointment.
Teaching Assistant: Christopher Foo, POST 314-1 cubicle.
TA office hours: 3:00pm - 4:15pm on Tuesdays and Thursdays
and by appointment.
Course email/assignments account:
Programming Language Pragmatics, Third Edition
Michael L. Scott, Morgan Kaufmann Pub., April, 2009 (paperback)
ISBN-10: 0123745144, ISBN-13: 978-0123745149.
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)
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
Optional Reference Material:
Unix and Emacs -- Just Enough Unix, ANY Edition Paul K. Andersen
McGraw Hill Recommended unless you are already proficient with Unix and Emacs.
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
Prolog -- 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 C or better in both ICS 212 - 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, logic programming languages like Prolog, and scripting languages
like Perl. Students will
write programs in functional and logic languages during this course.
Before the end of the course, all students should:
- 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
- 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.
Grades in this course are based on 5 criteria. There will be (7-9)
written and/or programming assignments (15%),
a programming project plus demonstration (in a group or alone) (15%),
quizzes on most Wednesdays (20%),
one written midterm examination (20%), and a final
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.
Students are bound by the student conduct code at
What does this mean?
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.
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-2013