Course contents at a glance
This Collection of learning materials is constructed to provide a flexible network of theory and examples for Organization of Programming Languages as part of ISPeL, an Interactive System for Personalized Learning.The ISPeL System Project is funded by the NSF as part of PPSE, Programmers to Professional Software Engineers Program, at ECU .
The site is designed to be a reference for essential definitions, concepts, examples and practice problems in an environment that allows each learner to personalize their experience within a non-course-centric curriculum. To the extent possible, prerequisites for topics have been integrated within the topic’s development. Your collaboration is welcomed with the aim to make this site a valuable learning resource. The notes are still under construction and are developed with the intention of providing an open resource for both educators and learners. The content is not without typos, and the authors have done their best to present quality information. If you see areas for improvement, please let us know or submit a pull request with your fixes to our GitHub repository.
Introduction
Introduction to Python
- Part 1: Language basics, collections, and hardware-software interface
- Part 2: Functions, file I/O, classes, and extension modules
Introduction to Prolog
- Part 1: Language basics (clauses, database, and queries; resolution and unification)
- Part 2: Backward chaining & resolution principle; equality and arithmetic in Prolog; subgoal ordering; and functions vs. predicates
Introduction to Haskell
- Part 1: Introduction, types and classes
- Part 2: Defining functions, list comprehensions, and recursive functions
- Part 3: Higher-order functions, functional parsers, and interactive programs
- Part 4: Declaring types and classes, the countdown problem, and lazy evaluation
Scanning and parsing
- Part 1: Scanning, regular expressions, finite automata
- Part 2: Parsing, context-free grammars, push-down automata
Formal semantics
- Operational semantics: Transition and natural semantics
Lambda-calculus
- Lambda-calculus: Computing using \(\lambda\)-calculus