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:
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
- GitLab: https://gitlab.com/sumner/hw-3-starter-code
- As a
.tar.gz
here
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-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:
- GitLab: https://gitlab.com/sumner/hw-2-starter-code
- As a
.tar.gz
here
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):
- Study for Exam 2
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
- GitLab: https://gitlab.com/sumner/hw-2-starter-code
- As a
.tar.gz
here
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) |
---|
Also: Shift Reduce Example (shown in class)
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:
- Homework 1 is due at 23:59.
- LGA-06: Memory Management
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) |
---|
- SlytherLisp Project assigned. Please find partners (use Piazza as a resource) and get started on the first deliverable.
- Language Explore Project available. Start thinking about your group/language.
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:
- Study for Exam 1
2019-01-24: OOP and Exceptions¶
Slides: | OOP & Exceptions (4:3 PDF, 16:9 PDF, 16:10 PDF) |
---|
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¶
Slides: | Finished PL Evaluation and Typing Systems (4:3 PDF, 16:9 PDF, 16:10 PDF) |
---|
To Do for Tuesday:
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:
- Discussed LGA-2
- Finished Programming Language Concepts
- 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:
- Met learning groups
- Covered syllabus
Prework:
Read through (or at least skim) the syllabus. It is available online at https://lambda.mines.edu/syllabus.html.
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: