ICS 313 -- Programming Language Theory
Homepage/Syllabus -- Fall 2007 -- Section 1
-- Writing Intensive
NOTE: For Section 2, go
here
(http://www2.hawaii.edu/~ics313/index2.html)
Quick Links:
Messages ,
Section 2 messages ,
Schedule,
Assignments,
Exams and Grading,
Emacs/Unix,
Lisp,
Prolog,
Scripting/Perl.
See **NOTE** below for requirements specific to Writing Intensive Courses
Instructor/TA/Lectures/Texts
Lectures: Section 1 - M,W 1:30-2:45 pm., Holmes 248,
Section 2 - ALN (online).
Credits: 3.
Instructor: Prof. Nancy Reed, office: 303B POST, email:
nreed@hawaii.edu , phone: 956-8498,
Office Hours: 3:00 - 4:00 pm Mondays,
4:00-5:00 pm Wednesdays, or by appointment.
Course email/assignments account: ics313@hawaii.edu
Teaching Assistant:
John Wu ics313@hawaii.edu, or
johnwu@hawaii.edu.
office:
POST 303-4 (cubicle),
office hours: posted on the class account
Required Textbook:
Section 1 --
Concepts of Programming Languages, 7th ed.
Robert W. Sebesta, Addison-Wesley Publishing, 2005 (required).
Optional Reference Material:
Unix and Perl -- Just Enough Unix, 5th Edition Paul K. Andersen
McGraw Hill, 2006, ISBN: 0-07-295297-0. Strongly suggested 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 sufficient):
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.
**NOTE** "Students must adequately complete all writing assignments to pass the course with a D grade or
better. Students who do not complete all writing assignments will get a D- or an F and will not earn W Focus
credit."
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 learn 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 three components to your grade in this course -
assignments, class participation and exams.
There will be two written midterm examinations covering the lectures,
material in the textbook and additional readings, that will each comprise
20% of your grade. There will be one final examination, comprising 30% of your grade.
Completion of several programming assignments (6 or 7) will comprise 25% of
your grade.
Participation, in class or via email, by asking questions and answering questions
will count 5% toward your grade.
Topical Outline
- Course Overview
- The Unix software development environment
- Introduction to programming language concepts
- History of programming languages
- Functional Programming languages
- Logic Programming Languages
- Scripting Languages
- Naming, scope, binding, Data types, Expressions, Control structures
- Subprograms and Implementing subprograms
- Exception Handling and Event Handling
A more detailed, weekly schedule can be found
here.
KOKUA Program
If you feel you need accommodations because of the impact
of a disability, please 1) contact the KOKUA Program (V/T) at 956-7511
or 956-7612 in room 013 of the QLCSS; 2) speak with me privately to
discuss your specific needs. I will be happy to work with you and the
KOKUA Program to meet your needs.
Academic Conduct
Assignments and exams are to be done individually (unless explicitly stated
otherwise). Discussing approaches to
programming assignments with classmates is fine. Copying answers or
sharing code for assignments are not permitted.
Refer to the student
conduct code (http://www.hawaii.edu/student/conduct/) for details
on the UH student conduct policy including a list of
impermissible behavior
It is each student's responsibility to prevent others from seeing/copying their
work, and to report incidents of cheating in every course.
Anyone caught cheating will be reported and risk expulsion from the
university. Cheaters shortchange themselves by facing disciplinary action,
making their future coursework more difficult, if not impossible,
as well as getting others they copy from in trouble.
I hope you learn a lot and enjoy this course. Go
back to the
Top of this page
(c) N. E. Reed, 2005-2007