Schedule (Spring 2019)¶

2019-04-16, 18, 23: Language Explore Project Presentations¶

Language Explore Project Presentations in class.

Use this Google Form for filling out feedback:

https://forms.gle/p8cJP7oiywQhHpYa7

2019-04-11: E-Days¶

No class for E-Days.

2019-04-09: Tail Call Optimization¶

Slides: Tail-Call Optimization (4:3 PDF, 16:9 PDF, 16:10 PDF)

Optional reading which may help with HW 3: Symbolic Computation (4:3 PDF, 16:9 PDF, 16:10 PDF)

Exam 2 regrade requests are available on Gradescope until Thursday, April 11.

Homework 3 is assigned. Due May 9th. Starter code is available on

Due Tonight

To Do for Tuesday

2019-04-04: Macros¶

Slides: Macros (4:3 PDF, 16:9 PDF, 16:10 PDF)

Also had time to meet with LEP group in class.

2019-04-02: Lab Day¶

Lab Day held in ALAMODE.

Due Today:

2019-03-21: Lab Day¶

Lab Day held in ALAMODE.

Due Today:

• Homework 2

Note

I have updated the starter code to allow for quasiquotations and unquotes. These features are unnecessary for the assignment, but there is no reason for me to prevent you from using them.

Updated Starter Code:

• SlytherLisp D2

2019-03-19: Exam 2¶

Exam 2 taken in class. (Note was planned for 03-14.)

2019-03-14: Pattern Matching¶

Slides: Racket Pattern Matching (4:3 PDF, 16:9 PDF, 16:10 PDF)

Exam delayed until Tuesday.

To do for Tuesday (10/30):

2019-03-12: Exam 2 Review¶

Reviewed for Exam 2

To Do for Thursday:

2019-03-07: Racket Intro Continue¶

Slides: Finished Racket Intro (4:3 PDF, 16:9 PDF, 16:10 PDF)

To do for Tuesday:

An example of a recursive solution for the function described on the last slide is:

```(define (sin-odd list)
(if (null? list)
list
(if (odd? (car list))
(cons (sin (car list)) (sin-odd (cdr list)))
(sin-odd (cdr list)))))
```

This is quite cumbersome as compared to the version which uses `map` and `filter`:

```(define (sin-odd list)
(map sin (filter odd? list)))
```

In fact, some people would argue that using recursion in a functional programming language (as opposed to utilizing higher order functions) is the functional programming equivalent to the procedural `goto` statement.

2019-03-05: Racket Intro¶

Slides: Racket Intro (4:3 PDF, 16:9 PDF, 16:10 PDF)

Homework 2 is assigned. Due March 21st. Starter code is available on

For this assignment, the time between March 23rd and March 31 (inclusive) will count as a single slip day. (Submitting on Friday the 22nd will cost one slip day, then anytime until the 31st will cost 2 slip days. Submitting on the Monday after break will cost 3 slip days, etc.)

2019-02-28: Parsing¶

Slides: Finished Regular Expressions (4:3 PDF, 16:9 PDF, 16:10 PDF)

To do for Tuesday:

2019-02-26: Regular Expressions and FSA¶

Slides: Regular Expressions (4:3 PDF, 16:9 PDF, 16:10 PDF)

Due Thursday:

• Homework 1 Submit in class on paper, or on Canvas by 23:59.
• No LGA for Thursday
• You may want to get started on SlytherLisp D2 now that we have covered RegExes. You will likely not be able to complete the deliverable until after next class.

2019-02-21: Memory Management¶

Slides: Finished The Lambda Calculus (4:3 PDF, 16:9 PDF, 16:10 PDF)

To do for Tuesday:

No class.

2019-02-14: More Lambda Calculus¶

Slides: The Lambda Calculus (4:3 PDF, 16:9 PDF, 16:10 PDF)

The `lc` tool shown in class can be installed using `pip`:

```\$ python3 -m pip install --user lc
```

Annotated solutions to the examples shown in class: Solutions to λ-Calculus Examples.

2019-02-12: Career Day¶

No class today, good luck at career day. Go get yourself a career!

2019-02-07: Lambda Calculus¶

Slides: The Lambda Calculus (4:3 PDF, 16:9 PDF, 16:10 PDF)

Assigned Homework 1. Due Thursday, 02/26 (was 02/21):

2019-02-05: SlytherLisp Intro¶

Slides: SlytherLisp Introduction (4:3 PDF, 16:9 PDF, 16:10 PDF)

2019-01-31: Exam 1¶

Exam 1 taken in class.

2019-01-29: Exam 1 Review¶

Slides: Finished OOP & Exceptions (4:3 PDF, 16:9 PDF, 16:10 PDF)

Reviewed for Exam 1

To Do for Thursday:

1. Study for Exam 1

2019-01-24: OOP and Exceptions¶

Slides: OOP & Exceptions (4:3 PDF, 16:9 PDF, 16:10 PDF)

Exam 1 Study Guide

To Do for Tuesday:

2019-01-22: More Python¶

Slides: Finished Python Introduction (4:3 PDF, 16:9 PDF, 16:10 PDF)

To Do for Thursday:

2019-01-17: Python Intro¶

To Do for Tuesday:

2019-01-15: Language Evaluation and Typing Systems¶

Topics Covered:

1. Discussed LGA-2
2. Finished Programming Language Concepts
3. Covered Programming Language Evaluation and Typing Systems

2019-01-08: Syllabus and Programming Language Concepts¶

Topics Covered:

1. Met learning groups
2. Covered syllabus

Prework:

1. Read through (or at least skim) the syllabus. It is available online at https://lambda.mines.edu/syllabus.html.

2. We will be doing our first Learning Group Activity (LGA) in class on Tuesday. (I would like to have made this due on Thursday, but apparently Thursday is Monday.) Here is the description for LGA-01:

LGA-01

Define what a programming language is in your own terms. Spend some good time thinking about your definition. Be prepared to discuss your definition with your group on Tuesday.

To Do for Tuesday: