CSCI 512 - Design and Implementation of Computer Programming Languages
Winter 2026
- Time:
- 9:00 AM
- Place:
- CF 224
- Instructor:
- Phil Nelson
- Office/Phone:
- CF473, 650-3035
- Web:
- https://facultyweb.cs.wwu.edu/~phil
- E-mail:
- phil@wwu.edu
- Office Hours:
- 10 AM, others by appointment.
If you send me e-mail, please use plain text (no HTML please)
messages and include ``CSCI 512'' in the subject of your e-mail to
help your e-mail not be classified as spam.
- Web Access:
- I have information for this class on the web as
well as on canvas. Assignments will be on Canvas and some
documents may appear on the web. The class web page is
https://facultyweb.cs.wwu.edu/~phil/classes/w26/512.
Other information, for example lecture slides, will be provided
via the web. If you see something missing from the web site,
please let me know about it via e-mail.
- Text:
- Scott, Aldrich, Programming Language Pragmatics,
Elsevier Inc, 2025.
- Other Texts:
- Other books and other resources, often very old,
will be provided, either by URL or on canvas during the quarter.
- Catalog Description:
- Comprehensive study of the history and
evolution of programming languages with reference to the best and
most influential contributions to the art and science of language
design. Pragmatics of implementing and using programming language
features in view of compilation/interpretation and their mapping
onto computer architectures and run-time environments.
- Outcomes:
- On competition of this course, students will demonstrate:
- Thorough understanding of decisions involved in designing
and implementing a programming language
- Thorough understanding of the run-time environments of
various types of programming languages and how they are
implemented to carry out the semantics of certain language
constructs
- The ability to categorize an unfamiliar language by
determining the answers to a list of questions
- The ability to use proper computer scientist terminology
when describing a programming language
- Thorough understanding of the history and taxonomy of
programming languages
- Working knowledge of a variety of programming languages the
student may not have been previously familiar with
- Graded Work:
- 3 Tests and Assignments.
- Tests:
- The all tests will be given in-person during class time
or the scheduled final time. Test one is on Friday, January 30.
Test two will be given on Friday, February 20. The final will be
given at the regular final time of 8:00 AM on Thursday, March 19,
2026. Each test will be worth 15% of your final grade. To pass
this class you must get at least 50% of the test points.
- Assignments and a project:
- There will be a number of
assignments during the quarter. It is currently unknown how
many assignments there will be. All assignment points will
be grouped together and be worth 45% of your final grade.
There will also be a ``term project'' that will have multiple
turn-in dates, the final one being on the last day of ``prep
week'', March 13, 2026. The final assignment will be dure
during prep week, on Wednesday, March 11. Details
on assignments and the project will be published either on
canvas or the class web site.
- Late Work:
- Work is due at the beginning of class on
the day due. Work will be accepted up to TWO class periods late,
at which time the work will be worth 75% of the original value.
A late final assignment is worth 75% of the original up until the
start of the final test. Canvas will be set up to accept late work
until the deadline.
- Grading:
- Final grading is done by a percentage of the top score.
The following is an example grade scale.
- A:
- 100% - 90%
- B:
- 89% - 80%
- C:
- 79% - 65%
- D:
- 64% - 50%
- Collaboration:
- Each student MUST do their own work.
Original work is required. Assume you should not see the source
code or woark of any other student, past or present. You may
discuss problems using diagrams on scratch paper, but you should not
see source code or solutions. Even helping a fellow student debug
their program so that source code is seen should be avoided.
Students having problems should e-mail me or visit me in my office.
- Cheating:
- Is (obviously) not allowed. If you do cheat and are
caught you will receive an F as your grade for the class. This
includes ALL students knowingly involved in any cheating event.
Not properly protecting your source code may be considered knowingly
involved. I may use mechanical means to compare student work.
These comparisons are used to raise the possibility of
cheating, but all decisions about cheating will be made by me after
inspecting the work of all students involved.
- Final Assignment and Project:
- Your final assignment will be due
on March 11, the Wednesday of prep week. A late final assignment will be worth
75% of its original value until the start of the final test.
Your final due date for the quarter project is March 13, the
last day of prep week. A late project is also worth 75% of the initial
value and may be turned in up to the start of the final test.
- Western Syllabus Policies:
- For generic syllabus
policies of Western, visit
https://syllabi.wwu.edu.
- Outline of Course:
- Expected order:
- Introduction
- Why?
- Kinds of languages
- Translation
- Environments
- History of Programming Languages
- Programming Language Syntax
- REs and Grammars
- Scanning
- Parsing
- Theory
- Names, Scopes, and Bindings
- Binding Time
- Object Lifetime
- Scopes
- Macros
- Separate Compilation
- Semantics
- Abstract Syntax Trees
- Kinds of Semantics
- Semantics of Languages
- Descriptions of Semantics
- Control Flow
- Expression evaluation
- Sequencing
- Selection
- Iteration
- Recursion
- Nondeterminacy
- Type Systems
- Types and Checking
- Polymorphism
- Type Transitions
- Composite Types
- Records
- Arrays
- Strings
- Sets
- Pointers
- Lists
- I/O
- Subroutines and Control Abstraction
- Stacks
- Calling Sequences
- Coroutines
- Events
- Asynchronous Programming
- Object Orientation
- Basic Objects
- Encapsulation and Inheritance
- Initialization and Finalization
- Dynamic Method Binding
- Multiple Inheritance
- Object-Oriented Programming
- Functional Languages
- Core Concepts
- Languages
- Evaluation Order
- Higher-Order Functions
- Theory
- Programming
- Logic Languages
- Core Concepts
- Prolog
- Programming
- Concurrency and Parallelism
- Basic Concepts
- Concurrent Programming and Synchronization
- Language-Level Constructs
- Message Passing
- Parallel Constructs
- Compiler Directives
- Systems and Languages
- Scripting
- Scripting Basics
- Problem Domains
- WWW
- Kernel Level Scripting
- Unique Features
- Building programs
- Compiler Back-end
- Intermediate Forms
- Code Generation
- Address Space Organization
- Assembly
- Linking and Dynamic Linking
- Run-time Management
- Virtual Machines
- Late Binding
- Inspection/Introspection
Phil Nelson
2026-01-05