Welcome to Programming Languages!


These slides are also available in PDF format: 4:3 PDF, 16:9 PDF, 16:10 PDF.

Who are you?


(and you should call me “Jack”)

Absolutely not my name:

  • Professor Rosenthal (Insulting to actual professors)
  • Dr. Jack (I am NOT a doctor)
  • Dr. Rosenthal (Who?)
  • Captain Jack (I am not a pirate)
  • Jack Attack (What are you? 12?)

What is this course?

  • Programming Language Design & Implementation:
    • What makes a good programming language?
    • What are the common trade-offs in programming language design?
    • What techniques are used to implement programming languages?
    • We’re even going to implement our own programming languages!

Why take a PL course?

  • If you’re going to be a software engineer:

    • As we work in a rapidly evolving industry, you’ll be able to learn new languages quicker, and make the right choices for your next software design
    • You’ll learn practical skills, such as parsing complex inputs, even if the skills aren’t applied to making a programming language
  • If you’re going to be a computer scientist:

    • Thru programming languages, you will experience a very practical application of computational theory
    • We will cover the mathematical foundations of programming languages
  • If you’re going to do something else:

    Quote from a student last semester

    “I didn’t realize how useful PL would be until I wrote an assembler for my internship this past summer!”

    (this student was in EE department)

What goes into this PL course?

  • Programming:
    • Python (serving as a multi-paradigm OO-language)
    • Racket (serving as a first step into language oriented programming)
    • One language of your choice (Language Explore Project)
    • Many more
  • Theory:
    • Parsing
    • Typing systems
    • Memory management
    • Lambda calculus
    • Regular expressions and finite state machines
    • Much more

Assignments & Projects

Homework:You’ll be given both programming and theory-related homework assignments
Explore Project:
 You’ll be given the chance to study a language of your choice an submit some example programs that your wrote in this language
SlytherLisp:You’ll implement a programming language interpreter for a Scheme-like programming language over the course of the semester


  • Prerequisite: CSCI 306 (Software Engineering)
  • Basic Linux skills are a must; CSCI 274 recommended
  • All of your code is expected to run on ALAMODE (BB 136 Linux lab) machines
  • Familiarity with C (or C++) will be helpful

Linux Support

The Mines Linux Users Group can help you install, setup, and learn about Linux. They have meetings open to the campus Thursdays at 6 PM.

Sign up for the mailing list for more info: https://lug.mines.edu/mailinglist

Learning Groups

You may notice you are seated with a Learning Group:

  • Please sit with them each lecture
  • You will be given assignments to complete with your group outside of lecture
  • We will change groups every few weeks

Group Quiz Scores

7% of your grade will be composed of your group’s quiz average (significant outliers removed). You’ll be given time in class before each quiz to study with your group and help teach concepts. This portion of your grade acts as an evaluation of this teaching.

Grading Policy

Learning Group Participation 5%
Homework 25%
Quizzes (Individual Grade) 28%
Quizzes (Learning Group Average) 7%
Language Explore Project 11%
SlytherLisp Project 24%

The course uses the plus/minus grading scale.

Late Policy

You can turn in homework and deliverables on projects using the slip day system. Here’s how it works:

  1. You currently have 8 slip days.
  2. For each 24-hours you turn in an assignment late, it will cost you one slip day.
  3. Note the number of slip days you are spending when you turn in.
  4. You cannot spend more than 5 slip days on a single assignment without asking for instructor permission.

Missed Quiz Policy

  • If you cannot make a quiz: email the instructor in advance and schedule a makeup. This does not count towards the below policy.
  • If you forget a quiz (e.g., overslept alarm) you may contact the instructor within 24-hours of the missed quiz once and schedule a makeup.

(the exception to the above rule is for extenuating circumstances)


Have you heard about the puzzle challenge?