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
-
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.
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.
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
|
|
|
|
|
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.
|