CSI 3120. CONCEPTS OF PROGRAMMING LANGUAGES
(3 hours of lectures per week, 1.5 hours of labs per week, 3
Design and evaluation criteria for
programming languages. Introduction to syntactic and semantic
description of programming languages. Basics of programming language
implementation. Scripting languages. A comparison of design choices
across programming paradigms: data objects, data types, control
structures, sub-programs. Basics of concurrency. Prerequisites:
Present the fundamental issues in the design and use of major
programming languages. Present implementation concepts and designs.
Introduce an important script language: Perl.Prepare you for further study of
programming languages, help develop an appreciation of a programming
language as a tool for software construction, enable you to evaluate and
choose a language to match the problem.
Office:STE 5029 Phone: 562-5800 ext. 6693
(Note: it is safer to contact me by e-mail than by telephone) Email::email@example.com
free to send me questions by electronic mail. They will usually be
answered the same day. If my office hours are not convenient for you, we
could meet by appointment. Please contact me by e-mail for such an
Robert W. Sebesta, Concepts of Programming Languages, 8th
ed., Addison-Wesley, 2007.
I recommend that you buy the book. You will enjoy many advantages! To
begin with, you will get your personal code for accessing the Student
Resources at the textbook's Web site.
Next, you will find in the textbook very interesting
interviews with language designers: Alan Cooper (Mr. Visual Basic),
Rasmus Lerdorf (Mr. PHP), Larry Wall (Mr. Perl), Professor Niklaus Wirth
(Mr. Euler, Algol-W, Pascal, Modula, Oberon, and the recipient of ACM's
Turing Award), Bjarne Stroustrup (Mr. C++), and James Gosling (Mr.
The book covers new developments, including C#. There are history
notes for the curious. There are programming exercises for those who
want more practice. And in general the textbook is a really neat
reference, worth keeping for later.
Class notes will be posted at the course Web site, on the Handouts
page. We will discuss two topics in language description, and introduce
three new languages. We will spend a good deal of time on topics that
are usually troublesome for many students, and much less time on topics
that people find easier. We will leave some topics as (mostly) reading
Additional handouts will appear, as needed, also on the Handouts
We will review two programming languages that you already know, and
introduce a new language (a script language) : PERL. PERL is well
described in the textbook, but there also are excellent descriptions on
the Web. Here are a few pointers just to get you started.
A maximum of 100 marks
will be available. The division is as follows:
[MD] midterm exam (closed book, 80 minutes)
[FN] final exam (closed book, 3 hours)
Assignments, with tentative topics, are listed in more detail later
in this document. All assignments will be posted at the course Web site.
The marks will be most probably distributed like this: 8 + 9 + 9 + 9.
The midterm will be held on Thursday, October 25,
in room STE J 0106.Please plan well ahead to show up
early enough to allow hassle-free seating.
You are expected to write the midterm. There will be no make-up. If
you have a valid medical reason to have missed the midterm, confirmed by
the official University health services, I will add the weight of the
midterm to the final exam's weight.
The midterm will cover topics 1-6, plus Unix and some background
knowledge, including Scheme and Prolog. (Topics are listed later in this
The final exam will cover all topics, with a slight emphasis on
You will be allowed a crib sheet at the midterm: one double-sided
page, US Letter size (8.5 by 11 inches), hand-written only, and no
magnifying glass. You will be allowed two such crib sheets at the final
A policy of the School of Information Technology and Engineering
requires you to pass the controlled evaluation component, that is to
say, to achieve at least 50% of the available test and exam marks. The
grade will be calculated according to the usual University of Ottawa and
Faculty of Engineering scale (A+ for 90% and above, failure with a D or
lower for less than 55%). The basis for the grade will be the adjusted
total AT, computed from MD (midterm), FN (final) and AS (assignments),
if MD + FN < 32.5 then AT = (MD + FN ) * 1.5
else AT = MD + FN + AS;
Assignments 2 and 4 will be written. Assignment 3 will be a strictly
programming assignment; Assignment 1 will be a mixture of the two. The
method of handing in your code will be determined, and announced, later.
Late hand-in will be accepted for several days after the due date;
when I post the official solution of an assignment, no late submissions
will be possible. The late penalty is 0.5 mark a day for weekdays and
0.25 mark a day for weekends and holidays. (That's 0.5% or 0.25% of your
grade, since every mark equals 1% of the overall grade.)
If you disagree with an assignment mark, please take it up with your
TA. Appeals will be only considered no later than two weeks after the
mark has been handed out. You can take the matter to me if you disagree
with the TA's additional explanations.
You are expected to read the indicated chapters or their sections
right after the material has been discussed -- or assigned for home
reading -- in class. Feel free to be slightly ahead of lectures (:>). There will
be richer class notes for a few topics that are not covered well in the
Please note that this course is not devoted to programming, or to
data structures, or to programming languages you already know (Java, C++
, Scheme and Prolog). Those are the prerequisites -- especially Scheme and Prolog! One of the purposes of the course is
to show you a new way of thinking about the material that you have
already encountered, and to achieve a synthesis of that prerequisite
knowledge. Topics 8-11, in particular, are in this category.
We will, naturally, introduce a good deal of material that is new, or
at least new to a majority of the class. Those are topics 2-7 and parts
of topic 1. The teaching of this material will be substantially
assisted by labs. Also, since most of you are new to Unix/Linux, and we
will need some knowledge of this splendid operating system, there will
be two labs on Unix. Note that Unix will not be discussed in
In any event, attendance at labs and tutorials is mandatory, just as
you are expected to attend the lectures.
We begin with an overview of the course and a
review of the assumed background knowledge (please, read chapter 15 and 16 to refresh your
Scheme and Prolog skills).