CS 331 Spring 2025: Programming Languages
CS 331 Spring 2025
Programming Languages
Department:
Computer Science,
UAF
Instructor:
Glenn G. Chappell
Office: 539 Duckering
Office Hours:
In person 1–2 pm MWF,
3:30–4 pm MW
on spring 2025 class days,
or by appointment;
private Zoom meetings available on request
E-mail:
ggchappell@alaska.edu
Announcements
- [Apr 27] Exam Review Problems Posted
I have posted 3 more sets of exam review problems, for a total of 6 sets. See Week 15, below. - [Apr 24] Final Exam Fri, May 2
The Final Exam will be given on Friday, May 2, 1–3 pm in the classroom. It will be comprehensive, covering all course material. Collaboration or use of books or electronic devices will not be permitted on the exam. Limited use of notes will be permitted, as it was for the Midterm Exam. Each student may bring one handwritten sheet of notes (a sheet has 2 sides) on standard-sized paper: US Letter, US Legal, ISO A4.
Course Materials
Materials are listed with the most
recent at the top.
Week | Class Meetings | Readings & Homework |
Handouts & Code
See
Git repository
for code
|
---|---|---|---|
Week 15 & Finals Apr 28–May 2 |
|
|
|
Week 14 Apr 21–Apr 25 |
|
|
|
Week 13 Apr 14–Apr 18 |
|
|
|
Week 12 Apr 7–Apr 11 |
|
|
|
Week 11 Mar 31–Apr 4 |
|
|
|
Week 10 Mar 24–Mar 28 |
|
|
|
Week 9 Mar 17–Mar 21 |
|
|
|
Spring Break Mar 10–Mar 14 |
|||
Week 8 Mar 3–Mar 7 |
|
||
Week 7 Feb 24–Feb 28 |
|
|
|
Week 6 Feb 17–Feb 21 |
|
|
|
Week 5 Feb 10–Feb 14 |
|
|
|
Week 4 Feb 3–Feb 7 |
|
|
|
Week 3 Jan 27–Jan 31 |
|
|
|
Week 2 Jan 20–Jan 24 |
|
|
|
Week 1 Jan 13–Jan 17 |
|
|
Links
External links last checked 2025-03-23.
Version Control
- Git
- Git is the the version-control software used in this class. This site includes downloads and a helpful tutorial.
- Learn Git Branching
- An excellent tutorial. If you are familiar with the Git operations clone, pull, push, add, and commit, but you are having trouble wrapping your head around branching, then this is for you.
- Class Git Repository
- Source code for the class will be kept in this repository.
Stuff Mentioned in Class
- C++ language and library references
- A collection of useful links on the cppreference.com site. It includes a link to the final working draft for each of the recent C++ Standards. Strictly speaking, this draft is not the actual Standard, but it might as well be.
- C++ 2023 Standard Final Working Draft [PDF] warning: over 2000 pages long
- The final working draft for the 2023 ISO C++ Standard. The only significant difference between this document and the official published C++ Standard is that the latter has the “working draft” wording removed.
- Haskell 2010 Language Report [PDF]
- The official published Standard for the Haskell programming language.
- Python Full Grammar Specification
- The parsing expression grammar that specifies the syntax of the latest version of the Python programming language.
- Python Lexical Structure
- The official documentation on the lexical structure of Python.
- Lua 5.2 Reference Manual
- The official Lua reference manual. At the bottom of the page is a grammar for Lua.
Readings
Links to supplemental readings will be posted here as they are assigned.
Links to these will also be in the “Readings & Homework”
column of the Course Materials section, above.
- Compilers and Interpreters
- A short article I wrote about the different kinds of programs that allow us to execute code.
- LuaTutorial
- A nice tutorial on the Lua programming language. Part of the Lua-Users Wiki, a site chock full of information about Lua. The assigned reading is the first 9 sections: LuaTypesTutorial through ScopeTutorial. However, the whole tutorial is worthwhile, I think.
- A Primer on Type Systems
- My introduction to type systems, types, and associated concepts.
- Learn Haskell in 10 minutes
- A short introduction to Haskell, for people who already know something about programming, from HaskellWiki.
- Identifiers, Values, and Variables
- My introduction to programming-language identifiers, values, and related terminology.
- Reflection in Programming
- My very short introduction to reflection.
- A Quick Introduction to Scheme
- My introduction to the Scheme programming language. This uses DrRacket.
- Programming-Language Execution Models
- What task drives the execution of a program? What strategy is used to complete this task? This is a look at the answers to these questions for various PLs, including Prolog.
- A Quick Introduction to Prolog
- My introduction to the Prolog programming language. This uses SWI-Prolog.