Professor: | Chris Gill |
Office Hours: Jolley 514 | by appointment |
Contact Info: | phone: (314) 935-7538, e-mail: cdgill@wustl.edu |
http://www.cse.wustl.edu/~cdgill/courses/cse425/
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.
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).
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 |
|
|
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 |
|
|
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) |
(slides in ppt) |
|
Mon Oct 12 |
|
|
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 |
(slides in ppt) |
|
Wed Nov 25 |
|
|
Mon Nov 30 |
|
|
Wed Dec 2 |
|
|
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 |
open book, open notes (hard copy only, no electronics) |
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:
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.
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:
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 % |
|
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.