COP4020 Programming Langages introduces the fundamentals of 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, implementation, and analysis.


Course Web Site
Professor Robert van Engelen
engelen AT cs DOT fsu DOT edu
Office: 160 LOV
Phone: 645-0309
Office Hours
Tuesdays 10:00 AM to 12:00 PM (subject to change) and by appointment.
COP4530 (co-requisite)
Working knowledge of the UNIX/Linux environment
Proficiency in C or C++.
Room 103 LOV on Tuesdays and Thursdays from 12:30 PM to 1:45 PM. Class attendance is required.
Section 1: Room 301 LOV on Mondays from 1:25 PM to 2:15 PM.
Section 2: Room 301 LOV on Wednesdays from 2:30 PM to 3:20 PM.
Recitation time also includes student presentations. Recitation attendance is required.
Course Material
Textbook: Michael Scott, Programming Language Pragmatics, 3rd Edition, Morgan Kaufmann
Textbook Web site:
Lecture notes: see the course schedule
Other material: class handouts (also made available online).
Teaching Assistant
Yue Qiu, grader.
Projects, Assignments, Exams, and Grading
See the grading policy below. You need a CS 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.
Zero Tolerance for Cheating!
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 implemented code listings to provide evidence of creative work. Students are expected to uphold the Honor Code, see also below. Any student involved in cheating is in violation of the Honor code. Consult the "Student Handbook" for more details on the Honor code.


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

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

To receive a passing grade for the overall course, you must earn a passing 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 at Blackboard.

Programming Projects and Homework

All assignments are mandatory and part of the final grade. There are several programming projects in this course. You are expected to work individually on these projects. The programming project assignments and their due dates can be found in 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 in the course schedule.


In all submissions of homework and projects you must include your name with your FSUID and identify the homework by HOMEWORK # (for example HOMEWORK 5) and projects by PROJECT # in the email subject line or in Blackboard drop box content.

Homework can be submitted on paper or electronically. Electronic submissions of homework and projects should be done through email to the instructor or uploaded to the Blackboard dropbox (preferred). For projects, please submit only one file (zip or tarball) that includes all sources of your programming assignment, the input and output files (when applicable), and a Makefile when applicable. Use the tar utility to compress and archive the material for inclusion as an attachment in the email message (preferably use tar to avoid zipped files from being filtered). Use the email subject line "PROJECT #" for projects and "HOMEWORK #" for homework, where # is the homework/assignment number.

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 assignments should be turned in before midnight at the due date. When turned in late, 5% will be deducted from the project grade per day until the submission has been received, with a maximum extension of five days.


A paper and classroom presentation is required, see the presentation schedule. The paper should describe the topic in sufficent depth and include references to publications. References to web sites are allowed. The presentation will take place during recitation hours and attended by the class and instructor. After the presentation the paper and presentation material should be submitted in hardcopy or in electronic form for grading, preferably the same day but no later than the official day of the last class.


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

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

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

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:

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.

Date Lecture notes Reading material Other useful resources Assignments due Date
1/4 Introduction Chapter 1 (1.1 to 1.3, 1.5 and 1.7) The Language List n/a 1/4
1/6 The Semicolon Wars - Quiz1 results (HW1) 1/6
1/11 Functional Programming Chapter 10 (10.1 to 10.3, 10.5 and 10.7) - - 1/11
1/13 - Scheme
HW2 1/13
1/18 - Recitation Example - 1/18
1/20 Logic Programming Chapter 11 (11.1 to 11.2, 11.4 and 11.5) - - 1/20
1/25 - - - 1/25
1/27 - Recitation Example HW3 1/27
2/1 Compilers and Interpreters Chapter 1 (1.4 and 1.6) - - 2/1
2/3 Syntax Chapter 2 (2.1 to 2.3.2, 2.5) Parser demo - 2/3
2/8 - - - 2/8
2/10 - - HW4 2/10
2/15 Semantics Chapter 4 (4.1 to 4.3, and 4.7) - - 2/15
2/17 - - - 2/17
2/22 - - HW5 2/22
2/24 - - - 2/24
3/1 Review - ANTLR
- 3/1
3/3 Midterm Exam n/a n/a Project1 3/3
3/8 Spring break n/a n/a n/a 3/8
3/10 n/a n/a n/a 3/10
3/15 Axiomatic Semantics Handout (up to page 408) - - 3/15
3/17 - - - 3/17
3/22 Names, Scopes, and Bindings Chapter 3 - - 3/22
3/24 - - HW6
submission extended to 3/28
3/29 - - - 3/29
3/31 Control Flow Chapter 6 (6.1 to 6.6, and 6.8) - - 3/31
4/5 Subroutines and Parameter Passing Chapter 8 (8.1, 8.2 up to but not including 8.2.1, 8.3, 8.4, 8.7) - - 4/5
4/7 - - - 4/7
4/12 - - - 4/12
4/14 Exception Handling Chapter 8 (8.5) - HW7 4/14
4/19 Handouts - - 4/19
4/21 Review - - Project2
Presentation papers are due
4/29 Final Exam 7:30-9:30 AM n/a n/a n/a 4/29

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


First class attendance is mandatory. Attendance during exams is also mandatory. For the remaining duration of the course roll is not taken, but you are responsible for obtaining all material delivered in class, including verbal communications.

Excused absences include documented illness, deaths in the immediate family and other documented crises, call to active military duty or jury duty, religious holy days, and official University activities. Accommodations for these excused absences will be made and will do so in a way that does not penalize students who have a valid excuse. Consideration will also be given to students whose dependent children experience serious illness.

Academic Honor Policy

The Florida State University Academic Honor Policy outlines the University’s expectations for the integrity of students’ academic work, the procedures for resolving alleged violations of those expectations, and the rights and responsibilities of students and faculty members throughout the process.  Students are responsible for reading the Academic Honor Policy and for living up to their pledge to “. . . be honest and truthful and . . . [to] strive for personal and institutional integrity at Florida State University.”  (Florida State University Academic Honor Policy, found at


Students with disabilities needing academic accommodation 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 accommodation and what type. This should be done during the first week of class.

This syllabus and other class materials are available in alternative format upon request.

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

Student Disability Resource Center
97 Woodward Avenue, South
108 Student Services Building
Florida State University
Tallahassee, FL 32306-4167
(850) 644-9566 (voice)
(850) 644-8504 (TDD)

Copyright: Robert van Engelen, Florida State University, 2011.
Last modified: Monday, April 4, 2011