Jupyter at Bryn Mawr College |
|||
Public notebooks: /services/public/dblank / CS245 Programming Languages / 2016-Fall |
Bryn Mawr College, Fall 2016
Department of Computer Science
Professor Douglas Blank
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.
Focus this semester: the course will be divided into these goals:
Course website: http://cs.brynmawr.edu/cs245
Class: Mondays and Wednesdays, 2:40pm-4:00pm, Park Science Building, Room 336
Lab: Thursdays 10:10am-11: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: Tuesdays, 10am-noon
Course Management System: https://moodle.brynmawr.edu/course/view.php?id=3230
We will use the following resources for this course:
To access the lab assignments, you need to do this once, in a notebook:
%%file nbgrader_config.py
c = get_config()
c.NbGrader.course_id = "cs245"
c.TransferApp.exchange_directory = "/opt/nbgrader/exchange/"
and this:
! nbgrader extension activate
At that point, an Assignments tab will open up in the Jupyter dashboard.
October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 1 2 3 4 5 1 2 3
2 3 4 5 6 7 8 6 7 8 9 10 11 12 4 5 6 7 8 9 10
9 10 11 12 13 14 15 13 14 15 16 17 18 19 11 12 13 14 15 16 17
16 17 18 19 20 21 22 20 21 22 23 24 25 26 18 19 20 21 22 23 24
23 24 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 31
30 31
Date | Topic |
---|---|
Week 1 | |
Aug 29, Mon | Introductions and Overview |
Aug 31, Wed | Chapter 2: Python |
Sep 1, Thu | Lab: Lab01: Python |
Week 2 | |
Sep 5, Mon | Labor Day: No classes |
Sep 7, Wed | Python. Introduction to Python |
Sep 8, Thu | Lab: Python Exam; assign Lab02: Scheme |
Week 3 | |
Sep 12, Mon | Scheme. Thinking Recursively |
Sep 14, Wed | Scheme. Summary of Basic Scheme |
Sep 15, Thu | Lab: No lab meeting (Doug out of town); Scheme Exam; assign Lab03 |
Week 4 | |
Sep 19, Mon | Adding Functions and Variables to S-Calc |
Sep 21, Wed | Compare and Contrast |
Sep 22, Thu | Lab: Lab04 |
Week 5 | |
Sep 26, Mon | Implementing Scheme in Python. Derivation of the Y-Combinator |
Sep 28, Wed | Implementing Scheme in Python |
Sep 29, Thu | Lab: Lab05 |
Week 6 | |
Oct 3, Mon | Implementing Python in Scheme |
Oct 5, Wed | Implementing Python in Scheme Adding Functions and Variables to S-Calc |
Oct 6, Thu | Lab: Lab06 |
Week 7: Fall Break | |
Oct 10, Mon | No class |
Oct 12, Wed | No class |
Oct 13, Thu | Lab: No lab meeting |
Week 8 | |
Oct 17, Mon | Calysto Scheme |
Oct 19, Wed | Type Inference |
Oct 20, Thu | Lab: Lab07 |
Week 9 | |
Oct 24, Mon | SLLGen Parser |
Oct 26, Wed | Parsing in Python |
Oct 27, Thu | Lab: Lab08: Project proposals |
Week 10 | |
Nov 7, Mon | Exam |
Nov 9, Wed | Work on project |
Nov 10, Thu | Lab: Lab09 |
Week 11 | |
Nov 14, Mon | Hand back exams. Dynamic vs. Lexical Scope |
Nov 16, Wed | Lexical Address |
Nov 17, Thu | Lab: work on project |
Week 12 | |
Nov 21, Mon | Continuation-Passing Style |
Nov 23, Wed | No class |
Nov 24, Thu | Lab: No lab meeting |
Week 13 | |
Nov 28, Mon | Streams |
Nov 30, Wed | Tail-Call Optimization |
Dec 1, Thu | Lab: work on project |
Week 14 | |
Dec 5, Mon | Project Presentations |
Dec 7, Wed | Project Presentations |
Dec 8, Thu | Lab: no lab meeting |
Final grades will be calculated as a weighted average of all grades according to the following weights: