ICS 313 -- Programming Language Theory
Homepage/Syllabus -- Spring 2012
Quick Links:
Messages ,
Weekly Schedule (pdf)
Lecture Notes & Links,
Assignments,
Exams and Grading,
Emacs and Unix,
Lisp,
Prolog,
Scripting/Perl.
Lectures/Instructor/TA/Texts
Lectures: M & W, 1:30-2:45p, Hamilton Library 03F (lower level)
Room use rules (pdf)
Instructor: Prof. Nancy Reed, office: 314E POST, email:
nreed@hawaii.edu , office phone: 956-8498
Office Hours: M & W 12-1 pm POST 314E or by appointment.
Course email/assignments account: ics313@hawaii.edu
Teaching Assistant: Zach Tomaszewski, 314-2 cubicle.
TA office hours: Monday: 3:00-4:00pm,
Thursday: 1:30-2:45pm, and Friday: Noon-1:00pm or by appointment.
Also see the
class account
Email:
ics313@hawaii.edu, or ztomasze@hawaii.edu.
Required Textbooks:
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)
ISBN: 978-1-59327-281-4. Electronic version available.
Optional Reference Material:
Unix and Perl -- Just Enough Unix, ANY Edition Paul K. Andersen
McGraw Hill Strongly recommended unless you already have
a great deal of experience with Unix, Emacs and Perl.
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
] (or another common lisp textbook).
Prolog -- Programming in Prolog, 4th edition, Clocksin & Mellish, Springer-Verlag,
ISBN 3-540-58350-5. (Or another prolog textbook.)
(Equivalent sources such as other textbooks, library books, etc. may
be used with prior instructor approval.)
Prerequisites
Prerequisites inclulde a C or better in both ICS 212 - Program Structure
and ICS 241 - Discrete Mathematics for Computer Science II.
Overview and Learning Objectives
ICS 313, Programming Language Theory, covers the syntax, control
structures, data binding and scope of programming languages. It also
introduces alternative language styles, including functional languages
like Lisp, logic programming languages like Prolog, and scripting languages
like Perl. Students will
write programs in LISP, Prolog, and Perl during the 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, including 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 several different
programming paradigms/styles, including functional and logic
languages like Lisp or Scheme and Prolog. Understand the uses for
scripting languages such as Pearl or JavaScript.
- Have the ability to represent and solve problems at an
abstract level before coding them in a particular language.
- Have the ability to quickly understand new programming
language features, and assess each language's capabilities compared
to existing languages.
- Be able to choose the best programming language(s) for a
project and justify the choice(s) with well-reasoned arguments
based on language differences and the development environment such
as the expertise of the programmer(s), programming support, and
workplace politics.
Course Requirements
There are four components to your grade in this course -
assignments, a project, quizzes, and exams.
Completion of several (7-9) written and/or programming assignments
will comprise 20% of your grade. Completion of a project (in a group
or alone) will count 10% toward your grade. Note that programs must
execute and meet the assignment specifications to earn full
credit. Good code-writing style, comments and documentation are also
required. 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.
There will be quizzes on most Wednesdays, which
will comprise 20% of your grade.
There will be one written midterm examination covering the lectures,
material in the textbook and additional readings that will comprise
20% of your grade.
There will be one final examination, comprising 30% of your grade.
Topics Covered
- The Unix and Emacs software development environment and tools
- Introduction to programming language concepts
- Syntax, semantics and history of programming languages
- Names, scopes, and bindings
- Control structures and control abstraction
- Data types and data abstraction
- Functional Programming and Lisp and/or Scheme
- Logic Programming and Prolog
- Scripting Languages, Perl
A more detailed, weekly schedule can be found
here.
KOKUA Program
If you feel you need accommodations due to special circumstances,
please 1) contact the KOKUA Program (V/T) at 956-7511
or 956-7612 in room 013 of the QLCSS, or 2) speak with me privately to
discuss your specific needs. I will be happy to work with you and the
KOKUA Program to provide the support you need to succeed in this course.
Academic Conduct
Exams and quizzes must be done individually. Assignments are
to be done individually unless explicitly stated otherwise for a
specific assignment. Discussing approaches to programming
assignments with classmates is fine. Copying answers, sharing code,
submitting solutions from the Internet, other courses or previous
terms as your own work are not permitted.
If you use ideas from any source
to complete your assignments, including a textbook, you must cite (the name of) the
source in your assignment/program files. For example, if
you use a book, note the title & page #s. For a web page enter the URL
and date accessed. Journal papers, conference proceedings, and other
sources must be completely identified. If you use exact text, it must
also be properly quoted.
It is each student's responsibility to prevent others from
seeing/copying their work, and to report incidents of suspected
cheating at UH. You should know how to protect your computer
files from being accessed by others, and so on. Cheaters will be
reported and risk expulsion from the university.
Refer to
the
( http://www.studentaffairs.manoa.hawaii.edu/policies/conduct_code/ )
for details. Cheating and plagiarism are not allowed.
Cheating is bad idea. Employers test your knowledge
and skills and they know how to distinguish
between applicants that know the material and those that do not. What
you learn and take away from your college courses are your most
valuable assets in finding and succeeding in your career.
I hope you learn a lot and enjoy this course. Go
back to the
Top of this page
(c) N. E. Reed, 2005-2012