Concepts of Programming Languages (CSC419)
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 15: Introduction: pl-ch1-2019
- Jan 17: Continued introduction (slides above).
Backus paper: ACM Turing Award Lecture.
Started history of programming languages (part 1): pl-ch2-2019_part1.pdf - Jan 23: Continued history of programming languages (part 2): pl-ch2-2019_part2.pdf
- Jan 25: Describing Syntax (chapter 3, part 1). pl-ch3-2019-part1
- Jan 29: Syntax and Static Semantics:
Knuth_AttributeHistory.pdf
Describing Syntax and static semantics (chapter 3, part 2). pl-ch3-2019-part2 - Jan 31: Continued semantics. pl-ch3-2019-part3
- Feb 5: Started Names, binding, and scopes (chapter 5): pl-ch5-2019-class
- Feb 8: Continued Names, binding, and scopes. 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 12: Data types, part 1 (chapter 6). pl-ch6_2019_part1.pdf
- Feb 14: continued chapter 6: pl-ch6-2019_part2.pdf
- Feb 19: Guest lecturer: Luis Gonzalo Sanchez Giraldo. diff_programming_boolean_func.ipynb
- Feb 21: Guest lecturer: John (Jack) McKeown. Python. PythonIntroTalk.ipynbNumpyLeastSquaresTalk.ipynb CythonTalk.ipynb
- Feb 23: finished chapter 6: Part 2 above and: pl-ch6-2019-typeChecking.pdf
- Feb 28: Chapter 7: pl-ch7_2019.pdf
- March 5: completed chapter 7 above.
Also discussed chapter 9 parameter passing methods for subprograms. - March 7: Started functional languages Chapter 15.
- March 19; 21; 26; 28: functional languages Chapter 15: pl-ch15.pdf
Emphasis on Scheme. See Scheme code functions based on Sebesta: scheme - April 2: ML language; start Haskell.
ML code examples based on Sebesta: ML
Haskell - April 4: Haskell. Guest lecture: David Grossman: prog-lang-haskell
- April 9: Functional capabilities of imperative languages. Python functional capability examples (download and view using jupyter notebook): PythonLambdaEx.ipynb PythonMap.ipynb exampleFilter.ipynbFunctionalPartial.ipynb headTail.ipynb
Started Logical languages (chapter 16). - April 11: 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 16: Continue Prolog. More example Prolog files: speed.pl ; lists_simple.pl ; lists_simple2.pl ;lists_simple3.pl ; append.pl
- April 18: Guest lecture: Elixir and Clojure. By Michael Davis.
- April 23: Continue Prolog. More example Prolog files: reverse.pl ; member.pl
- April 26: Review class.
Some links:
- Programming Languages timeline.
- Rosetta code: Solutions to same tasks with many different languages.
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