COP4020: Programming Languages

Course Description

COP4020 is an introduction to the design and implementation of programming languages. Programming languages are an essential means to express abstract computer programs. While programming languages may differ significantly in syntax and semantics, they share many common design concepts, translation mechanisms, and properties. This course reviews several common programming languages, defines programming language classes, introduces imperative and object-oriented programming language concepts, functional programming with Scheme, logic programming with Prolog, and presents theoretical and pragmatic aspacts of programming language design and implementation.


Course Web Site
Professor Robert van Engelen
engelen AT cs DOT fsu DOT edu
Office: 475DSL (School of Computational Science at the 4th floor in the Dirac Science Library building)
Phone: (850) 645-0309.
Office Hours
Monday 1:00 PM (subject to change) and by appointment.
Some working knowledge of the UNIX/Linux programming environment
Proficiency in C or C++.
Room 301 LOV on Tuesdays and Thursdays from 3:35 PM to 4:50 PM.
Room 301 LOV on Thursdays from 12:30 PM to 1:45 PM. Recitation time also includes student presentations. Attendance is required, unless stated otherwise.
Course Material
Textbook: Michael Scott, Programming Language Pragmatics, 2nd Edition, Morgan Kaufmann
Textbook Web site:
Lecture notes: see the course schedule
Other material: class handouts.
Teaching Assistant
Stanislav Ustymenko
ustymenk AT cs DOT fsu DOT edu
Office: TBD
Office hours: TBD
Projects, Assignments, Exams, and Grading
See the grading policy below. You need an account to complete the programming assignments.
The university requires attendance in all classes. Roll will be taken on a random basis to check attendance. Absences can only be excused with proper documentation and students are expected to make up for any material missed due to absences.
Honor Code
All exams and assignments must be completed individually unless stated otherwise. Copying solutions is considered cheating. Submitted source code listings will be compared. Keep a copy of the listings to provide evidence of creative development. Students are expected to uphold the Honor Code. All students involved in cheating are in violation of the Honor code. Consult the Student Handbook for more details on the Honor code.

Grading Policy

The following coursework components contribute to your final grade using the weights shown in the table below:

Programming projects 20%
Homework assignments 10%
Presentation topic (oral presentation and paper) 10%
Midterm exam 30%
Final exam 30%

Homework and Projects

There will be a number of programming projects. You are expected to work individually on these projects. Programming project assignments and due dates can be found on the course schedule.

Homework assignments consist of short-answer questions, essays, or problems. The purpose of these assignments is to prepare you for the exams. Homework assignments and due dates can be found on the course schedule.

For homework and projects, you must include your name and last four digits of your SSN on each submitted item (electronic or hardcopy). Note that copying program listings and homework from other persons violates the honor code and such abuse will not be tolerated. This includes dishonest practices such as programming-for-hire. Appropriate penalties will be enforced.

The project and homework assignments, when turned in before or at the due date before midnight will be graded. When turned in late, 10% will be deducted from the grade per day late until the homework has been received, with a maximum extension of five days.


A classroom presentation is required, see the presentation schedule. The presentation material with a paper describing your investigation of the topic should be submitted for grading at the end of the term 12/7 before exam week starts.


The midterm exam covers the first part of the course. The final exam the second part. The final exam is not comprehensive.

A list of past exams (without solutions) is listed here:

Year Midterm Final
2006 PDF PDF
2004 PDF PDF
2003 PDF PDF
2002 PDF PDF
2001 PDF PDF

To receive a passing grade for the overall course, you must earn a passing grade (C- or better) on the final exam and a passing grade on the projects (C- or better on average) and receive a combined passing grade according to the weight distribution shown in the table above.

The letter grade distribution for the final combined grade score (after roundoff) is shown in the table below:

94-100% A 87-89% B+ 77-79% C+ 67-69% D+ 0-59% F
90-93% A- 83-86% B 73-76% C 63-66% D
80-82% B- 70-72% C- 60-62% D-

Your grades for projects, homework, and exams will be accessible via FSU's Blackboard.

Computer Accounts

You will need an account to log on to the Computer Science department machines. If you don’t have one, visit the system info site:

You will also need an ACNS account (i.e., for receiving class emails. If you want, you can forward your garnet email to other accounts (visit for more details).

Schedule, Lecture Notes, and Assignments

The tentative schedule with PPT lecture notes is shown below (refresh this page if necessary). You are encouraged to download and print the notes as handouts to take to class. Links will be active when new notes have been added. The schedule will be updated when needed and significant changes will be announced on Blackboard.

Project and homework assignments can be downloaded by selecting the link in the "Assignments due" column. Submit your assignments electronically by email to the TA or turn hard copies of homework in before class. Don't forget to write down your name and four last digits of your SSN.

Date Lecture notes Reading material Other useful resources Assignments due
8/29 Introduction Chapter 1 (1.1 to 1.3, 1.5 and 1.7)
The Semicolon Wars
The Language List -
8/31 HW/Quiz1
9/5 -
9/7 Functional Programming Chapter 10 (10.1 to 10.3, 10.5 and 10.7) Scheme -
9/12 Homework2
9/14 -
9/19 Compilers and Interpreters Chapter 1 (1.4 and 1.6) Parser demo Homework3
9/21 Syntax Chapter 2 (2.1 to 2.3.1, 2.5, and pages 77 to 80) - Programming1
9/26 Homework4
9/28 Programming2
10/3 Semantics Chapter 4 (4.1 to 4.3, and 4.7) - -
10/5 Homework5
10/10 Axiomatic Semantics Handout (up to page 408) - Programming3
10/12 Homework6
10/17 Review - - Programming4
10/19 Exam - - -
10/24 Names, Scopes, and Bindings Chapter 3 - -
10/26 -
10/31 -
11/2 Control Flow Chapter 6 (6.1 to 6.6.1, and 6.8) - -
11/7 -
11/9 Subroutines and Parameter Passing Chapter 8 (8.1, 8.2.4, 8.3, 8.4, 8.7) - Homework7
11/14 Programming5
11/16 Exception Handling Chapter 8 (8.5)
- -
11/21 Homework8
11/23 Thanksgiving: no class - - -
11/28 Logic Programming Chapter 11 (11.1 to 11.2, 11.4 and 11.5) - Programming6
11/30 -
12/5 Homework9
12/7 Review - - Programming7
(Presentation papers are due)
12/14 Final exam 7:30-9:30 AM - - -

For more details on university events, see the FSU academic calendar and the final exam schedule.


Students with disabilities needing academic accommodations should: (1) register with and provide documentation to the Student Disability Resource Center, and (2) bring a letter to the instructor indicating the need for accommodations within the first week of class.

This syllabus and other class materials are available in alternative formats on request.

For more information about services available to FSU students with disabilities, please contact:

Student Disability Resource Center
08 Kellum Hall
Florida State University
Tallahassee, FL 32306-4066
Phone: (850) 644-9566

Copyright: Robert van Engelen, Florida State University, 2006.
Last modified: Sunday, November 26, 2006