Principles of Programming Languages
Mondays and Wednesdays, 3:30 -- 4:45, ECS 145
- COP 3530 (Data Structures)
- Geoffrey Smith
- Office: ECS 320
- Telephone: 305 348-6037
- E-mail: smithg @ cs.fiu.edu
- Office Hours: Mondays and Wednesdays, 2:00 -- 3:15
I'll usually be happy to meet at other times.
Send email, call, or drop by.
Upon successful completion of COP 4555, students will
- Master programming in a functional language, such as Standard ML.
- Master programming with recursion.
- Be familiar with the use of context-free grammars to specify programming
language syntax and with recursive descent parsing.
- Be familiar with natural semantics for imperative and functional
programming languages and their use in building interpreters.
- Be familiar with polymorphic type systems and type inference.
- Be familiar with issues in the design and implementation of
programming languages, such as lexical versus dynamic scoping and
static versus dynamic type checking.
This course is a general introduction to the study
of programming languages.
Our goal is to understand how programming languages are put
together, to gain a feel for some the of the tradeoffs involved
in the design of a programming language.
We will address basic issues in language implementation,
such as syntax specification (using context-free grammars)
and run-time organization.
We will study one language in detail: a very well-designed functional
programming language called Standard ML.
Programming in Standard ML involves a different approach to programming, based
not on sequences of assignments to variables, but rather on recursion.
One goal of this course is to help you to master programming with recursion;
this skill will be valuable to you, whatever programming languages you use
in the future.
The programming assignments in Standard ML can be done on the
SPARC server weasel.aul.fiu.edu in the JCCL;
you can connect to weasel via Xwin32 or ssh.
Alternatively, you can download Standard ML yourself from
the Standard ML of New Jersey home page,
As the semester continues, we will explore programming language
semantics and type systems in detail.
We will deepen our understanding of these topics by programming
a language interpreter and type checker in Standard ML.
The course lectures will not follow the textbook closely.
I will, however, assign readings regularly which will serve to
complement my lectures.
The course will be structured approximately as follows:
- Standard ML
- Type Systems
- Run-time organization
- Object-oriented languages
I ask that you form groups of size two (or possibly one or three)
for the purpose of submitting homeworks.
You should first try to solve the homework problems on your own,
and then you should meet with your partner(s) to discuss the solutions
that you have found.
Then the group should prepare a single write-up of the homework to
submit for grading.
Having homework groups makes my grading job more manageable, of course,
but it also can help you to learn more: you and your partner(s) will
often be able to catch one another's errors, and you will often find
that your group is able to find cleaner and more elegant solutions
than each of you found on your own.
The final exam will be on Monday, April 25, from 3:30 to 6:15.
|Midterm Exam ||25%|
|Final Exam ||45%|
I expect you to maintain a high level of academic integrity in this course.
Please read FIU's Code of Academic Integrity at
For this course, the basic principle to follow is this: the work
that you submit should be the result of your group's own effort.
You are allowed to consult other books in solving homework problems,
or to discuss the problems with other students, but you should cite
any such sources that you use.
And you must write up your solutions on your own--merely copying
answers from the Web, books, or other students is definitely not acceptable.
Finally, I encourage you to make a serious effort to solve the problems
on your own before you consult other books or other students.
Struggling with different approaches to difficult problems will give you
many insights that you won't get by simply reading a beautifully polished
answer in a book.
(Of course, after you've solved a problem on your own, it's then nice to
look at other people's solutions to see how they compare with yours.)
I will grant incompletes only in extreme circumstances,
such as medical emergencies.
I expect you to attend class regularly and promptly
and to participate in discussions.
Please don't be shy about asking questions--if something is unclear
to you, it is probably unclear to others as well.
COP 4555 home page.