Home CPSC 401

CPSC 401: Organization of Programming Languages

Meeting Times:Section 1: Tuesday and Thursday, 8:00 - 9:15, Farmer B7
Section 2: Tuesday and Thursday, 9:30 - 10:45, Farmer B7
Instructor:Ian Finlayson
Office:Farmer B47
Office Phone:540-654-1714
Office Hours:Monday & Wednesday 10-12, Tuesday & Thursday 11-12, or by appointment.

Course Description

A course in programming language construction and design emphasizing the run-time behavior of programs. Alternative implementations of programming language constructs are considered. Techniques for language definition may also be discussed.

Course Goals & Objectives


Grading Policy

Your grade will be determined as follows: The grading scale used for this course is as follows:

There is a 10% per day late penalty on assignments that are not turned in on time. Final grades will not be rounded up, and no extra credit opportunities will be given on an individual basis.

The University provides the opportunity to provide grading feedback midway through the semester. This will take into account your score on the mid-term exam and the programming projects submitted up to that point. Any student receiving less than a 65% on either of these will receive a "U" for their mid-semester grade. If this happens to you, please don't hesitate to talk with me about how we can improve your performance in this class.


Student Conduct


Honor Policy

Students are expected to conduct themselves in a manner consistent with the letter and spirit of the Honor Constitution. You may discuss the assignments with other students, but all of your work must be your own. You must yourself type and understand every line of code in each assignment you submit. It is an honor code violation to copy code directly from another student either by copy and paste or by transcription. For more information, please refer to the computer science department policy or contact me.

Disability Statement

The Office of Disability Services has been designated by the University as the primary office to guide, counsel, and assist students with disabilities. If you already receive services through the Office of Disability Services and require accommodations for this class, make an appointment with me as soon as possible to discuss your approved accommodations needs. Please bring your accommodation letter with you to the appointment. I will hold any information you share with me in the strictest confidence unless you give me permission to do otherwise. If you have not contacted the Office of Disability Services and need accommodations, I will be happy to refer you. The office will require appropriate documentation of disability. Their phone number is 540-654-1266. The office is located in Seacobeck Hall.

Tentative Schedule

Date Topic Assignment Due
January 13 Introduction & Preliminaries  
January 15 Evolution & Types of Languages  
January 20 Lexical Analysis  
January 22 Using Flex  
January 27 Snow Day  
January 29 Bindings & Scope  
February 3 Syntax Analysis  
February 5 Using Bison Lexical Analysis
February 10 Data Types  
February 12 No class  
February 17 Snow Day  
February 19 Racket Programming  
February 24 Racket Programming Continued  
February 26 Snow Day  
March 3 Spring Break
March 5 Spring Break
March 10 Racket Programming Continued Syntax Analysis
March 12 Expressions & Control Structures  
March 17 Functions Midterm Exam Due
March 19 Implementing Functions Racket Assignment
March 24 Haskell Programming  
March 26 Haskell Programming Continued  
March 31 Haskell Programming Continued Final Paper Draft Due
April 2 Functional Reactive Programming  
April 7 Compilation & Optimizations  
April 9 Garbage CollectionInterpreter Due
April 14 Prolog Programming  
April 16 No class Haskell Assignment Due
April 21 Object-Oriented Programming  
April 23 Review & Wrap-up Final Paper Due
April 28 8:30 - 11:00, Section 1 Final Exam
April 30 8:30 - 11:00, Section 2 Final Exam

Copyright © 2022 Ian Finlayson | Licensed under a Attribution-NonCommercial 4.0 International License.