CS 301 - Principles of Programming Languages, Spring 2016

Instructor: Ge (Frank) Xia
Lectures: MWF 10:00 am - 10:50 am, AEC 500
Office: AEC 506
Phone: 610-330-5415
Office hours: MWF 11:00 am - 11:50 am


[Announcements] [Textbook] [Grading] [Schedule] [Resources]


Lab Assignments


Announcements

  • For most exercises and assignments you'll need to run the interpreters for R&K's micro-languages. The interpreters can be found in ~gexia/public/CS301/software/bin/. They should run on either our 64-bit Linux servers or on most recent 32-bit Linux workstations. To run an interpreter, for example an interpreter of impcore, you can put the directory ~gexia/public/CS301/software/bin/ in your PATH and then simply enter impcore, or enter the full path name explicitly, like this:

    ~gexia/public/CS301/software/bin/impcore          

    Unless otherwise directed, you should keep all the programs for each assignment in one directory. To hand in your assignments, create a tar file and email it to me. Be careful when creating the tar file, because erroronous tar command may erase your files.

  • Course website: http://www.cs.lafayette.edu/~gexia/cs301/


Course Description

This course is an introduction to the theory of the design and implementation of contemporary programming languages. Topics include the study of programming language syntax and semantics, translators, and imperative, functional, logic and object-oriented language paradigms.

Learning outcomes:

After completing the course, the student should be able to

  • understand and use the fundamental principles and paradigms of modern programming languages, and
  • understand and use the different styles of programming languages.
Prerequisite: CS202 and CS203.

Textbook

  • A preprint of Ramsey and Kamin, Programming Languages: an Interpreter-Based Approach. The text is available to the students in the College Bookstore.


Supplemental Readings


Grading Policy

The grades will be based on a combination of assignments and exams. The distribution of the course grade is shown below:

  • Assignments -- 10%
  • Midterm Exam 1 -- 30%
  • Midterm Exam 2 -- 30%
  • Final Exam -- 30%

The final letter grades will be assigned based on criteria specified in the Student Handbook.

All assignments are to be submitted on Moodle at 11:55pm on the due date. Each student is allowed a one-time lateness of up to 48 hours. Beyond this, no exceptions will be made on late or missing assignments unless the student has an allowed excuse. An allowed excuse is an approved Dean's excuse or the instructor's permission. The final letter grades will be assigned based on criteria specified in the Student Handbook.


Academic Honesty

Discussion of concepts with others is encouraged, but all assignments must be done on your own, unless otherwise instructed. If you use any source other than the text, reference it/him/her, whether it is a person, a book, a solution set, a web page or whatever. You MUST write up the solutions in your own words. Copying is strictly forbidden.

The Student Handbook of Lafayette College has a section on Principles of Intellectual Honesty that defines academic dishonesty to include:

  • Use of other persons' writings without proper acknowledgment,
  • Use of reference material without properly crediting sources used,
  • Use of other students' work, with or without revision,
  • Collaboration beyond the limits established by the instructor,
  • Submission of the same work in more than one course

A student who commits academic dishonesty is subject to Disciplinary actions including suspension or expulsion.


Attendance

Students are expected to attend classes unless there is a reasonable excuse. A reasonable excuse is a previously approved Dean's excuse or the instructor's prior permission.


Tentative Schedule

The lecture notes will be posted below. They are adapted from lecture notes by Penny Anderson.

Changes will be made according to the progress of the course.

Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Week 1
Ch 1
Introduction
  Ch 2
An imperative core language
  Ch 2
An imperative core language
 
Week 2
Ch 3
Functional Programming
  Ch 3
Programming in Scheme

Ch 3
Applicative Programming
Deadline for Dropping Courses
 
Week 3
Ch 3
First-class Functions
  Ch 3
Higher-order Functions

Ch 3
Polymorphism
 
Week 4
Ch 5
ML Programming
  Ch 5
Recursion in ML

Ch 5
Reference Types
 
Week 5
Ch 5
Interpreters
  Ch 5
Operational Semantics

Ch 5
Interpreter in ML
 
Week 6
Ch 5
Type Systems
  Ch 6
Types for Arrays



Ch 6
Type Soundness
 
Week 7
Ch 6
Polymorphic Type Systems
  Ch 6
Typed micro-Scheme

Ch 6
Midterm
 
  Spring Break
--
--
--
Spring Break
 
Week 8
Ch 7
Micro-ML
  Ch 7
Micro-ML
Midterm grades due

Ch 7
Micro-ML

Week 9
Ch 7
ML Type System
  Ch 7
ML Type System

Ch 7
Type Inference

Week 10

Ch 7
Type Inference

 

Ch 7
Type Inference



Ch 9
Smalltalk

 

 
Week 11
Ch 9
Smalltalk

 
Ch 9
Smalltalk



Ch 9
Smalltalk Interpreter
 
Week 12

Midterm


Last Day to Withdraw from Courses



Ch 9
Smalltalk Interpreter


Ch 10
Prolog
 
Week 13
Ch 10
Prolog

Ch 10
Prolog
  Ch 10
Prolog Interpreter
 

Week 14 Ch 10
Prolog Interpreter

  Programming in the Large
Parallel Processing
Last Day of Classes
 
  Final Exam period begins          
  Final Exam period ends
Final Grades Due to Registrar by 12 Noon

       


Web Resources



Federal Credit Hours:

The student work in this course is in full compliance with the federal definition of a four [two or one as appropriate for half and quarter unit courses] credit hour course. Please see the Registrar’s Office web site (http://registrar.lafayette.edu/additional-resources/cep-course-proposal/) for the full policy and practice statement.