CS245: Principles of Programming Languages

Bryn Mawr College, Fall 2014

Overview

An introduction to a wide range of topics relating to programming languages with an emphasis on abstraction and design. Design issues relevant to the implementation of programming languages are discussed, including a review and in-depth treatment of mechanisms for sequence control, the run-time structure of programming languages and programming in the large. The course has a strong lab component where students get to construct large programs in at least three different imperative programming languages.

General information:

Course website: http://cs.brynmawr.edu/cs245
Class: Monday and Wednesdays, 2:40pm-4:00pm, Park Science Building, Room 336
Lab: Thursdays 10:10am-12:00pm, Park Science Building, Room 230
Professor: Douglas Blank, http://cs.brynmawr.edu/~dblank/
Email: dblank@cs.brynmawr.edu
Office: Park Science, Room 248
Office phone: (610)526-6501
Office hours: TBA
Course Management System: https://moodle.brynmawr.edu/course/view.php?id=3232

1. Resources

We will use the following resources for this course:

  1. Jupyter on Athena at Bryn Mawr College, https://athena.brynmawr.edu
  2. The Scheme Programming Language, fourth edition, by Kent Dybvig. Also available online.
  3. Handouts and outside readings that will be distributed in class and through Moodle

2. Schedule

     September              October               November              December        
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  
    1  2  3  4  5  6            1  2  3  4                     1      1  2  3  4  5  6  
 7  8  9 10 11 12 13   5  6  7  8  9 10 11   2  3  4  5  6  7  8   7  8  9 10 11 12 13  
14 15 16 17 18 19 20  12 13 14 15 16 17 18   9 10 11 12 13 14 15  14 15 16 17 18 19 20  
21 22 23 24 25 26 27  19 20 21 22 23 24 25  16 17 18 19 20 21 22  21 22 23 24 25 26 27  
28 29 30              26 27 28 29 30 31     23 24 25 26 27 28 29  28 29 30 31           
                                            30                                          
Week Dates Topic For Class
1 9/2, 9/4 Overview, Introduction to Scheme For Thursday, read 00 Jupyter Notebooks and do Assignment 00
2 9/9, 9/11 Scheme Programming Language Read Chapters 1 and 2 from The Scheme Programming Language. Do Assignment 01.
3 9/16, 9/18 Advanced Scheme Read Chapters 4 and 5 from The Scheme Programming Language. Do Assignment 02.
4 9/23, 9/25 Scheme Exam Assignment 03
5 9/30, 10/2 Creating our first programming language: calc Assignment 04
6 10/7, 10/9 Fall break! no assignments
7 10/14, 10/16 Adding global and local variables Read Google Chart in Scheme and do Assignment 05
8 10/21, 10/23 Adding functions, recursion, and the y-combinator Read Fibonacci, recursion, and memoization in Scheme and do Assignment 06
9 10/28, 10/30 Continuations, and Continuation Passing Style Calc without Closures
10 11/4, 11/6 Midterm Review: Continuations and CPS
11 11/11, 11/13 Tail Calls Tail Calls
12 11/18, 11/20 Streams and infinite data Scheme Streams
13 11/25, 11/27 Language comparisons Hy Lisp - and video rubric
14 12/2, 12/4 Implementing Scheme in Python Scheme in Python
15 12/9, 12/11 Project Presentations, and Review Final Projects Plogs

Videos:

Important dates:

  • End of Add/Drop Period (at 4pm) - Wednesday, September 10, 2014
  • 5th Course Drop Ends - Friday, September 19, 2014
  • CR/NC Deadline for Semester Classes (5pm) - Friday, October 10, 2014
  • Fall Break Starts (after last class) - Friday, October 10, 2014, through Sunday, October 19, 2014
  • Last Day of Classes- Thursday, December 11, 2014

3. Grading

Final grades will be calculated as a weighted average of all grades according to the following weights:

  • Scheme Exam: 10%
  • Midterm Exam: 15%
  • Final Exam: 25%
  • Labs: 25%
  • Project: 25%