Class slides (based on slides of Sebesta textbook and modified; note that more exact content focus and examples are done in class on the board):
- Jan 16: Introduction: pl-ch1-2018
- Jan 18: Continued introduction (slides above).
Backus paper: ACM Turing Award Lecture.
Started history of programming languages (part 1):
pl-ch2-2018_part1.pdf
- Jan 23: Continued history of programming languages (part 2):
pl-ch2-2018_part2.pdf
- Jan 25: Describing Syntax (chapter 3, part 1). pl-ch3-2018-part1
- Jan 30: Syntax and Static Semantics:
Knuth_AttributeHistory.pdf
Describing Syntax and static semantics (chapter 3, part 2). pl-ch3-2018-part2
More semantics: pl-ch3-2018-part3
- Feb 1: Continued semantics above; started Names, binding, and scopes (chapter 5): pl-ch5-2018-class
- Feb 6: Continued Names, binding, and scopes.
- Feb 8: Focused on scopes.
Some code links to download, mostly adapted from Sebesta textbook:
Python Jupyter Notebook: See http://jupyter.org/ :
Nonlocal.ipynb
Nonlocal2.ipynb
Nonlocal3.ipynb
Ruby (should have irb command on lab servers) :
scope.rb
Javascript (look at text and double click to open in your browser):
JSscope.html
JSscope2.html
- Feb 13:
Data types, part 1 (chapter 6). pl-ch6_2018_part1.pdf
- Feb 15: continued chapter 6:
pl-ch6-2018_part2.pdf
- Feb 20, 22: finished chapter 6: Part 2 above and:
pl-ch6-2018-typeChecking.pdf
Also started chapter 7.
- Feb 27, March 1: Chapter 7:
pl-ch7_2018.pdf
Also discussed chapter 9 parameter passing methods for subprograms.
- March 6; 8: Started functional languages Chapter 15:
pl-ch15.pdf
- March 20: Guest lecture (Luis Gonzalo Sanchez Giraldo).
Deep learning frameworks and differentiable programming:
DiffProgTF_2018.pdf
- March 22; 27; 29: functional languages continued
(slides above).
See also Scheme code functions based on Sebesta:
scheme
See also ML code examples based on Sebesta:
ML
- April 3: Haskell. Guest lecture by David Grossman:
HaskellSlides
- April 5: Quantum Computing. Guest lecture by Tina Cornely (Bridging Humanity). Article: Will quantum computing level the playing field for humanity?
Q# programming language: Q#
IBM quantum computing: IBM Q Experience
Books: Quantum-Computing-Computer-Scientists
; Foundations-Quantum-Programming ;
Quantum-Computing-since-Democritus-Aaronson ;
Quantum-Computation-Information
- April 10: Elixir and Clojure. Lecture by Michael Davis.
Lecture notes: Why You Should Care About Elixir
Clojure book: Clojure for the Brave and True
Elixir book: Programming Elixir
Phoenix framework: Programming Phoenix
- April 12:
Discussed in previous class functional capabilities of imperative languages.
Python functional capability examples (download and view using jupyter notebook):
PythonLambdaEx.ipynb
PythonMap.ipynb
exampleFilter.ipynb
FunctionalPartial.ipynb
headTail.ipynb
Started Logical languages (chapter 16).
- April 17:
Logical languages and Prolog (chapter 16). pl-ch16.pdf
Instructions for running Prolog: PrologInstructions.pdf
Example simple Prolog files: simple.pl ; likes.pl ; likes2.pl
Prolog in IBM Watson:
IBM_Watson_Prolog.pdf
- April 19:
Continued Prolog.
More example Prolog files: speed.pl ;
lists_simple.pl ;
lists_simple2.pl ;
lists_simple3.pl ;
append.pl
- April 23:
Continued Prolog.
More example Prolog files:
reverse.pl
member.pl
- April 26: Summary: pl-2018-summary.pdf
Some links:
Topics covered include:
- Introduction to Concepts of Programming Languages
- Preliminaries (Sebesta chap 1)
- Evolution of Major Programming Languages (Sebesta chap 2)
- Describing Syntax and Semantic (Sebesta chap 3)
- Names, Binding, and Scope (Sebesta chap 5)
- Data Types (Sebesta chap 6)
- Expressions and Assignment Statements (Sebesta chap 7)
- Functional Programming Languages (Sebesta chap 15)
- Logical Programming Languages (Sebesta chap 16)
|