CSE 425S: Programming Systems and Languages

Professor: Chris Gill
Office Hours: Jolley 514 by appointment
Contact Info: phone: (314) 935-7538, e-mail: cdgill@wustl.edu

Fall 2015

This page is available through: http://classes.cec.wustl.edu/~cse425/
and through: http://www.cse.wustl.edu/~cdgill/courses/cse425/

Final Exam:
Mon Dec 14, 10:30am-12:30pm, in Lab Sciences 250


  1. Course Description
  2. Prerequisites
  3. Times and Locations
  4. Discussions/Sessions
  5. Labs
  6. Textbooks and Other Resources
  7. Grading
  8. Cheating

Course Description

This course will expose you to a systematic study of the principles, concepts, and mechanisms of computer programming languages: their syntax, semantics, and pragmatics; the processing and interpretation of computer programs; programming paradigms; and language design.

Although the studio and lab exercises will be completed in C++ (a multi-paradigm programming language), illustrative examples are selected from a variety of programming language paradigms, and comparisons of how different programming languages treat similar features will be an imporant theme in this course. Studio exercises provided in the course are intended allow familiarization with and exploration of the different features, which will then be applied and your mastery of them evaluated in graded lab assignments and exams.


Times and Locations

Mondays and Wednesdays 10-11:30am in Urbauer 218

Each class meeting, except for the midterm exam (which will be held in a location to be announced), will be held in Urbauer 218.

Except for on the days of the initial course introduction, midterm review, midterm exam, and semester review, each class meeting will consist of an initial presentation and discussion of the main issues to consider for that day's topic, followed by a hands-on studio session for the remaining time that day. Studios will be completed in small groups, and especially for more complex topics may require the group to meet outside of class to finish up any studio exercises that could not be completed during class.

The review sessions prior to the midterm and final exams also will be held in Urbauer 218, but will occupy most to all of the session (and there will not be any studio exercises assigned on those days).


In addition to class meeting dates and topics, page numbers for assigned material in the textbook will be provided as we go through the semester. Please be sure to read the assigned pages prior to the session that covers that material, and reading ahead is encouraged as well.

Although the sequence of topics listed is a good guide to the course content overall, it may be adjusted somewhat as the semester progresses to emphasize, de-emphasize, or inter-relate certain topics depending on the progress and interests of the students in the course. If you are finding a given topic very easy or very difficult, please let your professor know.

Date Topic Assigned Readings
Mon Aug 24
Course introduction and syllabus overview
Wed Aug 26 Intro to Programming Languages and their Design
(slides in ppt)
(studio exercises in pdf)
Scott Chapter 1
LLM Chapter 1.2 (optional - C++ input and output)
LLM Chapter 3.3 (optional - C++ vector)
LLM Chapter 10.3 (optional - C++ algorithms that take callable objects)
LLM Chapter 14.8 (optional - C++ function call operator)
Mon Aug 31 Syntax I
(slides in ppt)
(studio exercises in pdf)
Scott Chapter 2.1-2.2
LLM Chapter 3.2 (optional - C++ string)
LLM Chapter 8.3 (optional - C++ string streams)
LLM Chapter 17.3 (optional - C++ regular expressions library)
Wed Sep 2

Lab 0
(assigned Wed Sep 2, due 11:59pm Tue Sep 15)
Syntax II
(slides in ppt)
(studio exercises in pdf)
Scott Chapter 2.3-2.5
Mon Sep 7
Labor Day Holiday (no classes)
Wed Sep 9 Basic Semantics I
(slides in ppt)
(studio exercises in pdf)
Scott Chapter 3.1-3.3
LLM Chapter 2 (optional - basic data types)
Mon Sep 14 Basic Semantics II
(slides in ppt)
(studio exercises in pdf)
Scott Chapter 3.4-3.9
LLM Chapter 5.2 (optional - C++ statement scopes)
LLM Chapter 14 (optional - C++ operator overloading)
Wed Sep 16
Lab 1
(assigned Wed Sep 16, due 11:59pm Tue Oct 6)
Semantic Analysis
(slides in ppt)
(studio exercises in pdf)
Scott Chapter 4
Mon Sep 21

Target Machine Architecture
(slides in ppt)
(studio exercises in pdf)
Scott Chapter 5
LLM Chapter 2.1.1 (optional - C++ Arithmetic Types)
Wed Sep 23
Control Flow I
(slides in ppt)
(studio exercises in pdf)
Scott Chapter 6.1-6.4
LLM Chapter 5.1-5.3 (optional - Simple and Conditional Statements)
Mon Sep 28 Control Flow II
(slides in ppt)
(studio exercises in pdf)
Scott Chapter 6.5-6.8
LLM Chapter 5.4-5.5 (optional - Iterative and Jump Statements)
Wed Sep 30 Data Types I
(slides in ppt)
(studio exercises in pdf)
Scott Chapter 7.1-7.2, 7.10
LLM Chapter 2.5 (optional - basic type operations)
LLM Chapter 4.11 (optional - type conversions)
LLM Chapter 6.3.3 (optional - pointers to arrays)
LLM Chapter 6.7 (optional - pointers to functions)
Mon Oct 5 Data Types II
(slides in ppt)
(studio exercises in pdf)
Scott Chapter 7.3-7.9, 7.11
LLM Chapter 7 (optional - structs and classes)
LLM Chapter 16 (optional - templates and generic programming)
LLM Chapter 19.3 (optional - enumerations)
LLM Chapter 19.6 (optional - unions)
Wed Oct 7 Lab 2
(assigned Wed Oct 7, due 11:59pm Tue Oct 27)
Review for Midterm Exam
(slides in ppt)
Mon Oct 12
Midterm Exam 10-11:30am, Simon Hall, Room 023 (downstairs)
Wed Oct 14
Subroutines and Control Abstraction I
(slides in ppt)
(studio exercises in pdf)
Scott Chapter 8.1-8.4
Mon Oct 19
Subroutines and Control Abstraction II
(slides in ppt)
(studio exercises in pdf)
Scott Chapter 8.5-8.8
Wed Oct 21 Object-Oriented Programming I
(slides in ppt)
(studio exercises in pdf)
Scott Chapter 9.1-9.3
Mon Oct 26 Object-Oriented Programming II
(slides in ppt)
(studio exercises in pdf)
Scott Chapter 9.4-9.7
Wed Oct 28
Lab 3
(assigned Wed Oct 28, due 11:59pm Fri Dec 4: please note new deadline)
Functional Programming I
(slides in ppt)
(studio exercises in pdf)
Scott Chapter 10.1-10.3
LLM Chapter 10.3 (optional - C++ lambdas)
Mon Nov 2 Functional Programming II
(slides in ppt)
(studio exercises in pdf)
Scott Chapter 10.4-10.8
Wed Nov 4 Logic Programming I
(slides in ppt)
(studio exercises in pdf)
Scott Chapter 11.1-11.2
Mon Nov 9
Logic Programming II
(slides in ppt)
(studio exercises in pdf)
Scott Chapter 11.3-11.5
Wed Nov 11 Concurrency I
(slides in ppt)
(studio exercises in pdf)
(sample Makefile for compiling with g++ on Linux)
Scott Chapter 12.1-12.2
Mon Nov 16
Guest lecturer: David Ferry
Concurrency II
(slides in ppt)
(studio exercises in pdf)
(sample Makefile for compiling with g++ on Linux)
Scott Chapter 12.3
Wed Nov 18 Concurrency III
(slides in ppt)
(studio exercises in pdf)
(sample Makefile for compiling with g++ on Linux)
Scott Chapter 12.4-12.4.3
Mon Nov 23

Semester summary and review for Final Exam
(slides in ppt)
Wed Nov 25
No classes (Thanksgiving Holiday)
Mon Nov 30
Open Studio/Lab Time (optional)
Wed Dec 2
Open Studio/Lab Time (optional)
Fri Dec 4

Last day to post answers to studio exercises for participation credit, by 11:59pm
Last day of Engineering School classes
Mon Dec 14
Final exam 10:30am-12:30pm, in Lab Sciences 250
open book, open notes (hard copy only, no electronics)


There will be four lab assignments in this course. The labs will increase in difficulty and value throughout the semester. Labs may be completed in teams of 2 or 3 people, though you also may complete and submit any of them individually if you prefer - in any case please make sure to note the names and e-mail addresses of everyone who worked on the lab in the writeup, when you submit it.

Labs are to be submitted electronically, and will be graded and returned to you electronically as well. Each lab submission requires a separate file containing a lab report writeup. Each assigment web page will describe the procedure for submitting the lab, along with the report format and content requirements. Use of this process is required.

You should please submit your code and a lab report for each lab sufficiently ahead of its advertised due date and time (shown on the lab assignment web page) that normal e-mail delays etc. do not result in your lab being received late (according to the time stamp put on the e-mail by the CEC e-mail server used by the cse425 account).

Labs received within 24 hours after the posted deadline will be accepted with a 10% penalty up front, and labs submitted between 24 and 48 hours after the posted deadline will be accepted with a 20% penalty up front. Labs submitted after that will not be graded, except in the case of documented extenuating circumstances.

Extensions may be granted in advance on a case-by-case basis as long as the circumstances warrant an extension and the request is made sufficiently ahead of the deadline. Extensions will not be granted after the deadline except in very special cases (such as documented medical emergencies).

You may discuss general questions related your projects with other students in lecture and labs, during lecture and lab hours respectively, and on the message board. While you are encouraged to post and ask for help on particular problems you may encounter during a project, your team must design and implement your own solutions, and prepare your own reports. In particular, while posting small code fragments related to specific questions is allowed and encouraged, direct sharing, viewing, or other "reuse" of complete code files between teams (especially if done covertly) is strictly forbidden. If you're not sure whether or not sharing a given section of code is ok, please ask your professor's permission before doing so.

The following labs have been assigned so far in the course:

Textbooks and Other Resources

Page numbers for assigned readings in the following required textbook are shown for each of the class meetings.

If you are looking for references on the C++ language, the following optional textbook may be helpful.

The following on-line references may be helpful as well.


As a rough guideline, 90-100 is likely to be the A range, 80-89 the B range, and so on, though depending on the complete distribution the specific grade division points (and addition of + or - qualifiers to the grades near the boundaries) may vary.

See the Labs section for a discussion of the labs and how they will be graded.

The Midterm and Final Exams will be comprehensive: each will cover the material up to that point in the course. The best way to study for the exams is to keep up with the studio exercises and programming assignments during the semester, and to ask lots of questions in the classroom, studios, and on the message board throughout the semester.

The last grading component is an evaluation of your participation in the class, and of your application of the tools and techniques discussed in class and labs. This component is separated out to:

  1. broaden the evaluation criteria,
  2. reduce the weight of the exams a bit, and
  3. encourage active participation in discussions/sessions, labs, etc.

Percentage completion of the studio exercises (including posting answers to them) will be used as the baseline for evaluating participation grades, though other factors such as attendance and engagement in class, studio, and lab sessions also may be considered if they differ significantly.

Labs 50 %
   Lab 0:  5 %
   Lab 1:  10 %
   Lab 2:  15 %
   Lab 3:  20 %
Midterm Exam 15 %
Final Exam 25 %
Participation   10 %


Cheating is the misrepresentation of someone else's work as your own, or assisting someone else in cheating, and will not be tolerated in this course.

For this course, examples of cheating include but are not limited to:

This is a very serious matter. Anyone found cheating will at a minimum lose points equal to the assigned value for the assignment in question (for example if an assignment were worth 10% of the course grade then -10% of the course grade would be assigned), or possibly receive an F for the course. Further action may be taken in extreme cases, possibly including referral to the School of Engineering and Applied Science's formal academic integrity review process.

Furthermore, our policy is that we will make the final determination on what constitutes cheating. If you suspect that you may be entering an ambiguous situation, it is your responsibility to clarify it before we detect it. If in doubt, please ask.

To ensure this policy is implemented consistently and fairly, and that any problems are detected and addressed as early as possible, we may make use of automated similarity checkers to assess uniqueness and independence of submitted program solutions and/or exams.