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 discusses program translation, formal type systems, and formal semantics.


Course Web Site
Professor Robert van Engelen
engelen AT cs DOT fsu DOT edu
Office: 168 LOV
Phone: 645-0309
Office Hours
Wednesday 11:30 AM to 1:00 PM (subject to change) and by appointment.
COP4530 (co-requisite)
Working knowledge of the UNIX/Linux environment
Proficiency in C and/or C++.
Room 103 HCB on Mondays, Wednesdays, and Fridays from 10:10 AM to 11:00 AM. Please note that lecture attendance is required.
Recitations and Presentations
Class Section 1: Room 301 LOV on Mondays from 2:30 PM to 3:20 PM.
Class Section 8: Room 301 LOV on Mondays from 12:20 PM to 1:10 PM.
Class Section 9: Room 301 LOV on Mondays from 11:15 AM to 12:05 PM.
Class Section 10: Room 301 LOV on Mondays from 1:25 PM to 2:15 PM.
Recitation time also includes student presentations, so please note that recitation attendance is required.
Course Material
Textbook: Michael Scott, Programming Language Pragmatics, 4th Edition, Morgan Kaufmann
Textbook Web site:
Lecture notes: see the course schedule below
Other material: class handouts (wil be made available online).
Teaching Assistant
Michael Stokes Office hours: Mondays 12:10 PM to 1:10 OM in 301LOV and Mondays 3:30 PM to 4:30 PM in 301LOV
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 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. See the Attendance statement below.
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 the Academic Honor Policy statement below. Any student involved in cheating is in violation of the Honor code. Consult the Student Handbook for more details on the Honor code.
See the ADA statement below.


Homework can be submitted on paper or electronically (Blackboard dropbox). Projects should be submitted electronically (Blackboard dropbox). 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 zip or tar utility to compress and archive your submitted material. Identify the submission with "PROJECT #" for projects and "HOMEWORK #" for homework, where # is the homework/assignment number.

Copying program listings and homework from other persons or from the web 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 each 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. The final exam is not comprehensive.

A list of past exams (without solutions):

Year Midterm Final
2011 PDF PDF
2010 PDF PDF
2006 PDF PDF


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.

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.

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 schedule with PDF lecture notes is shown below (refresh this page if necessary). The instructor reserves the right to modify the schedule and will announce any such change in class and on Blackboard. You are encouraged to download and print the notes as handouts to take to class. Project and homework assignments can be downloaded by selecting the link in the "Assignments due" column.

Links to PDF notes may be non-active (HTTP 404 error) until a week before the lectures cover that topic.

Date Lecture notes Reading material (4th ed) 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 Functional Programming Chapter 11: 11.1 to 11.3, 11.5 (11.5.1 only), 11.6 to 11.8 Scheme  
Scheme Example  
9/7   Haskell  
9/9   Monica demo FP language  
9/12 Logic Programming Chapter 12: 12.1 to 12.2, 12.4 and 12.5 SWI-prolog  
9/14 Prolog Example  
9/19     HW1
9/21 Compilers and Interpreters Chapter 1: 1.4 and 1.6 Parser demo  
9/23   Flex
Bison & Yacc
Calc.g Example

9/26 Syntax Chapter 2: 2.1 to 2.3, and 2.5 HW2
10/3 Semantics Chapter 4: 4.1 to 4.4, and 4.7    
10/10 Axiomatic Semantics Handout (read up to page 408)   HW3
10/17 Review     PR1
10/19 Midterm Exam      
10/21 Axiomatic Semantics Handout (read up to page 408)    
10/28 Names, Scopes, and BindingsChapter 3: 3.1 to 3.7, and 3.9    
11/9 Control Flow Chapter 6: 6.1 to 6.6, and 6.8    
11/21 Subroutines and Parameter Passing Chapter 7: 7.1 to 7.2, and 7.3.1    
11/28 Chapter 9: 9.1, 9.2 intro only (not 9.2.1-4), 9.3, 9.5 to 9.7    
12/2     HW4
12/5 Exception Handling Chapter 9: 9.4 and handouts    
12/7     PR2
12/9 Review     Presentation papers are due
12/14 Final Exam 12:30-2:30 PM      


First class attendance is mandatory.

Recitation attendance is mandatory.

Exam attendance is mandatory.

Class lectures should be attended to keep up with the pace. You should not skip more than three lectures unless the absence is officially excused. If you skip a class lecture then please be advised that you are responsible for collecting the material and notes delivered in the lecture.

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.

See FSU's General Bulletin.

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, 2016. Last updated Monday, October 10, 2016