Programming Languages

Schedule

  1. Getting Started with Programming Languages Last day to Add is Friday 2025-01-27 Last day to Drop is Sunday 2025-02-10
    • <2025-01-20 Mon> [Before Start of Term]
    • <2025-01-22 Wed>
      • What is a programming language?
        • Precise language to describe algorithms.
        • Language processor.
        • How can you study programming languages?
          • Survey many programming languages
          • Compilers lite.
      • Administration
        • Our Textbook: Sebesta
        • Assignment Types
        • Grading
      • How to read.
      • How to program.
      • Homework: h001- Quadratic Formula REPL
    • <2025-01-24 Fri>
      • Read: Edwards, P. How to Read a Book, v5.0
      • Read: Sebesta, 1.1, 1.5, 1.7
      • Compilation/Interpretation
      • The Computer
        • Digital
        • Binary
        • General-purpose
      • Recursion and Activation Records
      • Homework: h002- Some Lists
  2. Scheme and Tools Last day of Add
    • <2025-01-27 Mon>
      • Read: Scheme for Java Programmers
      • map and reduce
      • Recursion
      • LIst Processing System = LISP
      • Quoting in Scheme
      • car~/~cdr~/~cons
      • if~/~null?~/~zero?
      • define
      • Homework: h003- YAST
      • Due: h001 - Quadratic Formula
      • Due: h002 - Some Lists
    • <2025-01-29 Wed>
      • Software Development Tools
      • Version Control
      • Build Tools
    • <2025-01-31 Fri>
      • Scheme and Higher-order Functions
      • Using git
      • Homework: h003 - Building and Drawing Lists
  3. Syntax/Semantics
    • <2025-02-03 Mon>
      • Read: Sebesta, Sections 3.1 - 3.3
      • Describing syntax and semantics
      • Phases of language processing
      • Describing tokens: regular expressions
      • Describing languages: Backus-Naur Grammars
      • Describing semantics: attribute grammars
    • <2025-02-05 Wed>
    • <2025-02-07 Fri>
      • Group Work: gParseTrees
  4. Names, Bindings, Scope Last day of Drop
    • <2025-02-10 Mon>
      • Read: Sebesta, Sections 5.1-5.4
      • Variable Names
      • Lifetimes
      • Scope
      • Scheme BankAccount Data Type
      • Due: p001 - SansCommentFilterReader
      • Homework: h004- Association Lists
    • <2025-02-12 Wed>
      • Read: Sebesta, Sections 5.5-5.8
      • Global, Stack Local, Stack Non-Local
      • Define Token for Scheme
    • <2025-02-14 Fri>
      • Nested Scopes
      • Environments
  5. Static/Dynamic, Types
    • <2025-02-17 Mon> [Snow Day]
    • <2025-02-19 Wed>
      • Creating a Token type
    • <2025-02-21 Fri>
      • When Can the Computer Know?
      • Variable Attributes
      • Static/Lexical Scoping
      • Dynamic Scoping
      • Program: p002 - Tokenizing
  6. Types, x001
    • <2025-02-24 Mon>
      • Read: Sebesta, Section 6.1-6.4
      • Simple Types
      • Abstraction
    • <2025-02-26 Wed>
      • Read: Sebesta, Section 6.5, 6.11
      • Composite Types
        • Arrays
        • Pointers/References
        • Classes/Records
      • Type Equality
    • <2025-02-28 Fri>
      • x001 - Scheme, Syntax, Semantics, Tokenizing
  7. Expressions
    • <2025-03-03 Mon>
      • Read: Sebesta 7.1-7.3
      • Getting Started with Expressions
      • Symbol Tables and Scheme Environments
    • <2025-03-05 Wed>
      • The Parsing Problem
      • Due: p002 - Tokenizing
    • <2025-03-07 Fri>
      • Recursive Descent Parsing
  8. Spring Break
    • <2025-03-10 Mon> [Spring Break]
    • <2025-03-12 Wed> [Spring Break]
    • <2025-03-14 Fri> [Spring Break]
  9. Statements Last day to Withdraw 2025-04-07
    • <2025-03-17 Mon>
      • Group Work: Scheme dictionary data type
      • assoc list
    • <2025-03-19 Wed>
      • Read: Sebesta 7.1-7.5
      • Infix -> post-fix expression
    • <2025-03-21 Fri>
      • Calculator: Thoughts
      • Abstract Syntax Tree
  10. Statements Last day to Withdraw 2025-04-07
    • <2025-03-24 Mon>
      • Read: Sebesta 8.1-8.4
      • Programming Structures
        • Sequence
        • Selection
        • Iteration
        • Abstraction
      • More AST
    • <2025-03-26 Wed>
      • Scheme Classes
      • Scheme Polymorphism
    • <2025-03-28 Fri>
      • Variable Resolution
        • Compile Time
        • Run Time
      • Symbol Tables
  11. Environments, Scheme, x002 Last day to Withdraw 2025-04-07
    • <2025-03-31 Mon>
      • Watch: Nielsen, Environment Diagrams
      • Note for Environment Diagrom video: the double circles are cons cells; left circle is car, right circle is cdr.
        • Scheme Stuff
          • set! and Siblings
          • eval and apply
    • <2025-04-02 Wed>
      • What is a Scheme lambda?
    • <2025-04-04 Fri>
      • x002 - Variables and Types and Expressions
  12. Subprograms, Rules, Parameters Last day to Withdraw
    • <2025-04-07 Mon>
      • Read: Sebesta Sections 9.1-9.4
      • Subprogram Rules [Computation Model]
        • Named unit of computation
        • Explicit call
        • Immediate transfer of control
        • Caller suspended until callee returns
        • Callee halts upon return
    • <2025-04-09 Wed>
      • Read: Sebesta, Section 9.5-9.6
      • Pass by value
      • The same and different
        • Pass by value/return
        • Pass by reference
      • Pass by name
        • Scheme special forms
      • What could go wrong?
        • Aliasing
    • <2025-04-11 Fri> Last day to Withdraw, Elect S/U
      • Read: Sebesta, Section 9.12-9.13
      • Closures
      • Functions as first-class objects
      • SchemING's Symbol Table…
  13. Implementing Subprograms and Parameters
    • <2025-04-14 Mon>
      • Group Work: Parameter Passing, Environments, etc.
    • <2025-04-16 Wed>
      • Read: Sebesta, Section 10.1-10.5
      • Why a stack?
      • Hardware assistance?
      • Implementation of subprograms
        • Calling stack
          • Dynamic link
        • Static scope resolution
          • Static link
    • <2025-04-18 Fri> [April Break]
  14. Subprogram Implementation
    • <2025-04-21 Mon>
      • Beyond the Stack
        • Closures
          • Environments
        • Function Variables (Thunks)
    • <2025-04-23 Wed>
      • Relaxing Subprogram Rules [Model of Computation]
        • *Un*Named unit of computation
          • lambda (all over the place)
        • No Explicit call
          • Exception handler
          • Termination handler
        • Delayed transfer of control
          • Event handler (Event-driven Programming)
        • Caller continues while callee runs
          • Threads
        • Callee waits after return
          • Coroutines
          • Generators
    • <2025-04-25 Fri>
      • More relaxing
  15. Subprograms, Interpreter
    • <2025-04-28 Mon>
      • Still more relaxing
    • <2025-04-30 Wed>
      • Read: Sebesta Sections 12.1-12.3
      • Polymorphism
      • OOP
    • <2025-05-02 Fri>
      • Reviewing the Interpreter
  16. Reviewing what we Learned
    • <2025-05-05 Mon>
      • Scheme
        • REPL
        • Lambda
        • Environment
        • Evaluator
    • <2025-05-07 Wed>
      • Programming Language Considerations
        • Dynamic/Static
        • Local/Non-local/Global
        • Scope/Holes or Shadowing/Lifetime
      • Subprograms
        • Parameters and Passing Methods
        • Subprogram Calling Conventions
        • Calling Stack
        • Relaxing Conventions
    • <2025-05-09 Fri>
      • The Parsing Problem
        • Syntax/Semantics
        • Phases of Parsing
      • Finish up the Review List
  17. Final Exam
    • <2025-05-15 Thu 10:15-12:15>

Dr. Ladd's Weekly Schedule

  Monday Tuesday Wednesday Thursday Friday  
0800 CIS 205 CS III (PAC 403)   CIS 205 CS III (PAC 403)   CIS 205 CS III (PAC 403) 0800
0900 Office   Office     0900
1000 Office   Office     1000
1100 Office   Office     1100
1200 CIS 443 Programming Languages (PAC 403)   CIS 443 Programming Languages (PAC 403)   CIS 443 Programming Languages (PAC 403) 1200
1300 CIS 371 Security in CS (PAC 403)   CIS 371 Security in CS (PAC 403)   CIS 371 Security in CS (PAC 403) 1300
1400           1400
1500           1500

Dr. Ladd's Exam Schedule

  Monday Tuesday Wednesday Thursday Friday  
  20250512 20250513 20250514 20250515 20250516  
0800   CIS 371 (PAC 403)       0800
1015       CIS 443 (PAC 403)   1015
1230       CIS 205 (PAC 403)   1230
1445           1445

Date: Spring 2025

Author: Brian C. Ladd

Created: 2025-03-18 Tue 12:27

Validate