< COP 4020

Syllabus, lectures, and other materials — Fall 2019

Syllabus and schedule

Fall 2019: Syllabus for COP4020

Reading Schedule

Paper and presentation

Paper and presentation requirements

Acceptable programming languages


List of Final Projects


1: GCD Assembly assignment (Due by Sunday, September 15, 11:59pm)

2: Flex assignment (Due by Sunday, September 22, 11:59pm)

3: Bash regex assignment (Due by Sunday, September 29, 11:59pm)

4: Recursive descent parsing for calculator language assignment (Due by Sunday, September 29, 11:59pm)

5: Recursive generation (Due by Sunday, October 13, 11:59pm)

6: Recursive generation, part II (Due by Sunday, October 20, 11:59pm)

7-9: The Rho assignments (Due by Sunday, October 27, 11:59pm)

Class Notes

I will be talking about material in Chapter 2 that explores many traditional ideas in lexing and parsing; I will also throw out some other ideas. In addition, if you like to watch video, there is a video at Microsoft that throws some interesting light on where Anders Hejlsberg is going with compilation.

Here's a link to see interesting comments from Rob Pike about using regular expressions in lexing.

Here's a link to some additional material on recursive descent and Scott's 2.15 "calculator language."

Other Material

Language Rankings

IEEE's 2018 list of popular languages

IEEE's 2019 list of popular languages


Redmonk Popularity Index for June 2019

Programming Language General Interest Links

Lambda the Ultimate

The Semicolon Wars

Rust Once, Run Everywhere

Swift Versus Objective C

2015-05-14: Content Addressable Memory (CAM). Please consider what implications it would have for programming languages to be able to easily access CAM. (Interesting paper on the architecture is here.)

2015-05-14: A Case Against the GOTO Statement

2015-05-18: There are a number of versions of "The Evolution of a Programmer"; one that is particularly amusing is this one: The Evolution of a Haskell Programmer

2015-05-21: The Chomsky Hierarchy

2015-06-01: The recursive descent parser from GCC 5.1

2016-05-09: The recursive descent parser from GCC 6.1

2015-06-01: Intel's MPX extensions

2015-06-10: Design Principles Behind Smalltalk

2015-07-09: SICP

2015-07-09: Scheme from Scratch

2015-07-09: Learn You a Haskell for Great Good!

2015-07-21: Amusing use of a declarative language: Postgresql for Mandelbrot

2016-05-23: Compiler technology comes to databases

2016-06-01: Optimization? In what sense?

2016-06-13: Intel's newest stack scheme

2016-06-15: The classic negative formulation as to what types are: Types are not sets (1973, Morris)

2016-06-15: Dynamic typing in Haskell

2016-06-27: A Rationale for Pyret

2016-07-08: Translation from C to Rust via Haskell

2016-07-15: Reference counts from another perspective

2016-07-18: Larry Wall interview

2016-07-20: Implementing functional languages: a tutorial

2016-07-20: The Implementation of Functional Programming Languages

2016-07-20: The language of logic? 200 terabyte maths proof is largest ever

2016-07-25: Backpatching in C: Closures with value capture in C

2016-07-25: Curry On Conference

2017-08-30: Making V8 fast

2017-09-18: Web Assembly

2017-09-19: What Next?

2017-09-27: High Level Assembler Reference Guide

2017-09-27: Why We Chose Rust
    And Hacker News Discussion of Said Choice

2017-10-02: Diminishing Returns of Static Typing

2017-10-05: GCC archaeology

2017-11-08: Write Yourself a Scheme in 48 Hours (using Haskell)

2017-11-08: A DoS attack against the C# compiler

2019-08-26: Video: The future of systems programming languages (LangNext 2014)

2019-09-09: Lean
2019-09-09: Lean Tutorial

2019-09-09: Overview of the Go compiler

2019-09-09: Example of real-world GCD assembly code from the GMP project.

2019-09-10: We Should Stop Saying "Language Independent" Since We Don't Know How To Do That

2019-09-10: Alloy Language

2019-10-04: The grand C++ error explosion competition

2019-10-07: EWONTFIX

2019-10-07: Perl extinction?

2019-10-14: The Ugliest C feature: tgmath.h

2019-10-16: ISPC, a specialized form of C for SIMD

2019-10-18: Free Pascal now has a web assembly back-end

2019-10-18: COBOL in 2019

2019-10-22: Software written in Haskell

2019-11-15: LLVM tutorial

Obligatory xkcd: