NOTE: From March 24, we will have classes on Zoom at the regular class time.
I have sent out an email with the link to the zoom location. Notes and
links to the code will be posted on the class website.
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):
Revised syllabus updated March 2020: Overall syllabus plan (exact topic per lecture might change)
- Jan 14: Introduction: pl-ch1-2020
- Jan 16: Continued introduction (slides above).
Backus paper: ACM Turing Award Lecture.
Started history of programming languages (part 1):
pl-ch2_part1.pdf
- Jan 21: Continued history of programming languages (part 2):
pl-ch2_part2.pdf
- Jan 23: Describing Syntax (chapter 3, part 1). pl-ch3-2020-part1
- Jan 28: Syntax and Static Semantics:
unionEBNF.pdf
Knuth_AttributeHistory.pdf
Describing Syntax and static semantics (chapter 3, part 2). pl-ch3-part2
- Jan 30: Continued semantics.
pl-ch3-part3
- Feb 4: Started Names, binding, and scopes (chapter 5): pl-ch5-2020-class
- Feb 6: Continued Names, binding, and scopes. Focused on scopes.
- Feb 11:
Continued scopes from previous class.
Some code links to download, mostly adapted from Sebesta textbook:
Python Jupyter Notebook: See http://jupyter.org/ :
Nonlocal.ipynb
Nonlocal2.ipynb
Nonlocal3.ipynb
Javascript (look at text and double click to open in your browser):
JSscope.html
JSscope2.html
- Feb 13: Quiz 1 on intro material and BNF/EBNF (first two assignments). After quiz, data types, part 1 (chapter 6). pl-ch6_2020_part1.pdf
- Feb 18: continued chapter 6:
pl-ch6-2020_part2.pdf
- Feb 20: finished chapter 6: Part 2 above and:
pl-ch6-2020-typeChecking.pdf
- Feb 25: Chapter 7:
pl-ch7_2020.pdf
- Feb 27: Guest lecturer: John (Jack) McKeown. Python and Cython.
- March 3: Quiz 2 on imperative languages. Material includes chapters 5 and 6, and assignment 3.
- March 5: Discuss chapter 9 parameter passing methods for subprograms.
- March 10; 12; 17; 19 Extended spring break.
- March 24: Introduction to functional languages:
PL_ch15_part1.pdf
- March 26: Scheme 1:
PL_ch15_part2.pdf
- March 31: Scheme 2:
PL_ch15_part3.pdf
- April 2: Scheme 3:
PL_ch15_part4.pdf
- April 7: Scheme 4 and ML:
PL_ch15_part5.pdf
- April 9: ML and Haskell:
PL_ch15_part6.pdf
- April 14: Functional languages in imperative; motivating logical:
PL_ch15_part7.pdf
Prolog in IBM Watson:
IBM_Watson_Prolog.pdf
- April 16:
Logical languages, formal logic (chapter 16). PL_ch16_part1
- April 21:
Logical languages, part 2 (started Prolog). PL_ch16_part2
Instructions for running Prolog: PrologInstructions.pdf
To use the lab computers ssh onto johnston, and then ssh onto one of the lab computer hosts.
Example simple Prolog files: simple.pl ; simple2.pl
- April 23:
Logical languages, part 3 (Prolog continued). PL_ch16_part3
likes.pl ; likes2.pl
speed.pl ;
lists_simple.pl ;
lists_simple2.pl ;
lists_simple3.pl
- April 28:
Logical languages, part 4 (Prolog continued). PL_ch16_part4.pdf
append.pl
- April 30:
Logical languages, part 5 (Prolog continued). PL_ch16_part5.pdf
More example Prolog files:
reverse.pl ;
member.pl
- May 5:
Summary logical (and versus functional) languages. PL_summary_2020.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)
|