Programming Languages
Schedule
- Getting Started with Programming Languages
Last day to Add is Friday 2025-01-27
Last day to Drop is Sunday 2025-02-10
- [Before Start of Term]
- 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
- What is a programming language?
- 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
- Scheme and Tools
Last day of Add
- Read: Scheme for Java Programmers
map
andreduce
- 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
- Software Development Tools
- Version Control
- Build Tools
- Scheme and Higher-order Functions
- Using
git
- Homework: h003 - Building and Drawing Lists
- Syntax/Semantics
- 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
- Watch: Potsdam
git
Videos - Read/Do: Interactve git Tutorial First Five Lessons
- Grammars and Parse Trees
- Scheme Grammar
- An infix Expression Grammar
- Token Streams
- Watch: Potsdam
- Group Work: gParseTrees
- Names, Bindings, Scope
Last day of Drop
- Read: Sebesta, Sections 5.1-5.4
- Variable Names
- Lifetimes
- Scope
- Scheme
BankAccount
Data Type - Due: p001 - SansCommentFilterReader
- Homework: h004- Association Lists
- Read: Sebesta, Sections 5.5-5.8
- Global, Stack Local, Stack Non-Local
- Define Token for Scheme
- Nested Scopes
- Environments
- Static/Dynamic, Types
- [Snow Day]
- Creating a
Token
type
- Creating a
- When Can the Computer Know?
- Variable Attributes
- Static/Lexical Scoping
- Dynamic Scoping
- Program: p002 - Tokenizing
- Types, x001
- Read: Sebesta, Section 6.1-6.4
- Simple Types
- Abstraction
- Read: Sebesta, Section 6.5, 6.11
- Composite Types
- Arrays
- Pointers/References
- Classes/Records
- Type Equality
- x001 - Scheme, Syntax, Semantics, Tokenizing
- Expressions
- Read: Sebesta 7.1-7.3
- Getting Started with Expressions
- Symbol Tables and Scheme Environments
- The Parsing Problem
- Due: p002 - Tokenizing
- Recursive Descent Parsing
- Spring Break
- [Spring Break]
- [Spring Break]
- [Spring Break]
- Statements
Last day to Withdraw 2025-04-07
- Group Work: Scheme dictionary data type
- assoc list
- Read: Sebesta 7.1-7.5
- Infix -> post-fix expression
- Calculator: Thoughts
- Abstract Syntax Tree
- Statements
Last day to Withdraw 2025-04-07
- Read: Sebesta 8.1-8.4
- Programming Structures
- Sequence
- Selection
- Iteration
- Abstraction
- More AST
- Scheme Classes
- Scheme Polymorphism
- Variable Resolution
- Compile Time
- Run Time
- Symbol Tables
- Variable Resolution
- Environments, Scheme, x002
Last day to Withdraw 2025-04-07
- Watch: Nielsen, Environment Diagrams
- Note for Environment Diagrom video: the double circles are
cons
cells; left circle iscar
, right circle iscdr
.- Scheme Stuff
set!
and Siblingseval
andapply
- Scheme Stuff
- What is a Scheme
lambda
?
- What is a Scheme
- x002 - Variables and Types and Expressions
- Subprograms, Rules, Parameters
Last day to Withdraw
- 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
- 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
- Read: Sebesta, Section 9.12-9.13
- Closures
- Functions as first-class objects
- SchemING's Symbol Table…
Last day to Withdraw, Elect S/U
- Implementing Subprograms and Parameters
- Group Work: Parameter Passing, Environments, etc.
- Read: Sebesta, Section 10.1-10.5
- Why a stack?
- Hardware assistance?
- Implementation of subprograms
- Calling stack
- Dynamic link
- Static scope resolution
- Static link
- Calling stack
- [April Break]
- Subprogram Implementation
- Beyond the Stack
- Closures
- Environments
- Function Variables (Thunks)
- Closures
- Beyond the Stack
- 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
- *Un*Named unit of computation
- Relaxing Subprogram Rules
[Model of Computation]
- More relaxing
- Subprograms, Interpreter
- Still more relaxing
- Read: Sebesta Sections 12.1-12.3
- Polymorphism
- OOP
- Reviewing the Interpreter
- Reviewing what we Learned
- Scheme
- REPL
- Lambda
- Environment
- Evaluator
- Scheme
- 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
- Programming Language Considerations
- The Parsing Problem
- Syntax/Semantics
- Phases of Parsing
- Finish up the Review List
- The Parsing Problem
- Final Exam
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 |