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

Memory Management (4:3 PDF, 16:9 PDF, 16:10 PDF)

To do for Tuesday:

2019-02-19: President’s Day

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:

  1. LGA-05: Exam 1 Questions

2019-01-22: More Python

Slides:

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

More Python (4:3 PDF, 16:9 PDF, 16:10 PDF)

To Do for Thursday:

  1. LGA-04: Object Oriented Programming

2019-01-15: Language Evaluation and Typing Systems

Slides:

Finished Programming Language Concepts (4:3 PDF, 16:9 PDF, 16:10 PDF)

PL Evaluation and Typing Systems (4:3 PDF, 16:9 PDF, 16:10 PDF)

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

Slides:

Welcome to Programming Languages! (4:3 PDF, 16:9 PDF, 16:10 PDF)

Started Programming Language Concepts (4:3 PDF, 16:9 PDF, 16:10 PDF)

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:

  1. LGA-02: Language Scavenger Hunt