Lecture Notes: Theory (and Practice) of Programming Languages
COMP 371/471 | Department of Computer Science | Loyola University Chicago
You have reached the home of the Programming Languages course (COMP 371/471) in the Computer Science Department of Loyola University Chicago.
Welcome! Willkumme! ¡Bienvenidos/as! Benvenuti/e!
Warning
These notes are still being written, so expect a few rough edges. But we’re getting closer!
Build Status
This book is written using the Python Sphinx documentation tool. It automatically builds and deploys using GitHub Actions (a continuous integration system). All commits trigger a rebuild of the book and, if successful, a deployment to GitHub pages.
- Book Web Site
- Book PDF (Latest Relase)
github.com/lucproglangcourse/lucproglangcourse.github.io/releases/latest/download/proglang.pdf
- Book Source Code
How to Contribute
Your contributions are highly welcome! Please submit issues and pull requests.
Contents
Todo
Ensure proper structural mapping from Sphinx to LaTeX
- 1. Overview
- 2. Context and Background
- 3. The Imperative Programming Paradigm
- 3.1. Core elements
- 3.2. Solving problems using built-in types and behaviors
- 3.3. Options for running Scala code
- 3.4. Techniques for testing Scala code
- 3.5. The role of command-line applications
- 3.6. The role of logging
- 3.7. The importance of constant-space complexity
- 3.8. Making command-line applications testable
- 4. The Object-Oriented Programming Paradigm
- 5. The Functional Programming Paradigm
- 6. Program Representation and Interpretation
- 7. The Concurrent Programming Paradigm
- 8. The Logic Programming Paradigm
- 9. Other Important Programming Paradigms
- 10. Summary
- 11. Appendix: Programming Language Design Principles
- 12. Appendix: Resources
- 13. Appendix: Course Software
- 14. Appendix: Course Syllabi
- 14.1. Course: COMP 371/471 Programming Languages
- 14.2. Section: 001 Fall 2025
- 14.3. Section: 001 Fall 2024
- 14.4. Section: 001 Fall 2023
- 14.5. Section: 001 Fall 2022
- 14.6. Section: 001 Fall 2021
- 14.7. Sections: 001/002 Fall 2020
- 14.8. Section: 001 Fall 2019
- 14.9. Section: 001 Fall 2018
- 14.10. Section: 001 Spring 2018
- 14.11. Section: 001 Spring 2017
- 14.12. Detailed Course Outline
- 14.13. Key Resources
- 15. Appendix: TODO
Indices and tables
Todo
add sample projects, activities, tests, and (tiered) master list for presentations
Todo
add stuff from https://trello.com/c/kAMGZ4uf/28-add-in-next-iteration
Note
AI Disclosure: This text contains a mix of original writing and programming with strategic use of ChatGPT via intentional prompting. Some examples will be available in our repository with an appropriate build configurations and tests. We may also make some prompts and analyses available, similar to what my colleagues have done for their recent ongoing study of ChatGPT and Systems Programming. See https://doi.org/10.6084/m9.figshare.22257274.