Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456 CSI 4125
CSI 4125 Theory of Programming Languages
Winter 2008
No office hours on Monday, February 18 (Winter break)
Office hours during Winter break are by appointment only. You
are encouraged to make an appointment if questions come up while
reviewing for the midterm.
Lectures
Tuesday 11:30-13:00, Lamoureux 223
Friday 13:00-14:30, Lamoureux 223
Note: there will be no class on Tuesday, February 5.
An optional make-up lecture will be scheduled sometime in
March or April.
You are encouraged to attend the Faculty of Engineering's
Grad
Studies & Research Day, 11:00-14:30 on the 1st floor
of the SITE building.
Required Textbook and Class Notes
Essentials of Programming Languages, Daniel
P. Friedman, Mitchell Wand, and Christopher T. Haynes, MIT Press,
2nd edition, 2001.
The textbook is available at Benjamin Books, 122 Osgoode Street.
Excerpts from the textbook's Foreword and Preface help set the
goals for the course
"This book brings you face-to-face with the most fundamental
idea in computer programming:
The interpreter for a computer language is just another program.
It sounds obvious, doesn't it? But the implications are
profound. [...] If you are a programmer, mastering the idea of an
interpreter is a source of great power. It provokes a real shift
in mindset, a basic change in the way you think about programming."
"The goal of this book is an analytic study of programming
languages. Our goal is to provide a deep, working understanding of
the essential concepts of programming languages."
Most of these essentials relate to the semantics, or meaning, of
program elements. Such meanings reflect how program elements are
interpreted as the program executes. Programs called interpreters
provide the most direct, executable expression of program
semantics. [...] We therefore choose interpreters as our primary
vehicle for expressing the semantics of programming language
elements."
Evaluation
Assignments, 30%
Midterm Exam, 20%
Final Exam, 50%
There will be approximately 5 assignments.
The midterm exam will take place during class time sometime in
February.
To pass the course, you must obtain at least 50% on the
final.
Assignments
A penalty of 10% will be given for an assignment that
is up to 24 hours late. After that, each additional 24 hours will
result in an additional 5% penalty. No assignments will be
accepted after the solutions have been posted.
Each student is required to do each assignment individually.
See the policy on plagiarism.
The midterm will be Tuesday, February 26 during class.
Closed book.
Covers:
Chapters 1, 2
Chapter 3 (except first representation of recursive
environments in Section 3.6, Fig. 3.9)
Possible questions include (but are not limited to):
short answers about general material and/or code fragments
writing code fragments
tracing code (for example, by building data structures or
giving sequence of procedure calls)
multiple choice and/or true/false questions
Programming
The language of implementation for the course will be Scheme.
It is highly recommended that you use DrScheme. You may
either download it, or use
the version that is available under Microsoft Windows in the SITE
lab. To run the book's code you need to set the language to
"Essentials of Programming Languages (2nd ed.)".
If you want to use another Scheme, you will need the
appropriate Scheme language extensions to run the book's code.
See the textbook web
site for information.