Principles of Programming Languages - F15

CSE 340


Course Info

Course Number: CSE 340 (82243)
Instructor: Prof. Adam Doupé
Office: BYENG 472
Office Hours: Monday 3pm–4pm (except 11/9: 5pm–6pm), Wednesday 12pm–1pm, Friday 10am–11am (No office hours 9/25, 10/14, 10/16, or 11/13), and by appointment
Meeting Times: Monday and Wednesday, 1:30pm–2:45pm (PSF 166)
Course Mailing List:

Course Lead TA: Mohsen Zohrevandi
Office: BYENG 435 AA
Office Hours: Tuesday 3pm–5p, Thursday 11am–1pm (except Thursday 9/24 will be 3–5pm), and by appointment

Course TA: Sai Chandramouli
Office: BYENG 423
Office Hours: Monday 12pm–1pm, Wednesday 3pm–4pm, Friday 2pm–3pm, and by appointment

Office Hours

The TA’s and I have arranged the office hours so that the office hours are distributed throughout the week. Each day there are two hours of office hours, so please take advantage of this opportunity. However, please make the best use of our time and your time, so we expect you to come prepared.

If you have questions about the course material, we expect that you have read the relevant sections from the book or reviewed the relevant lecture materials.

If you have questions about the homework problems, we expect that you have made a serious effort to solve the problem (and we will ask you what you have tried/attempted).

If you have questions about the programming project, we expect that you have made a serious effort to solve the problem on your own. If the answer to your question can be found by googling the error message, that is not enough effort. There is a great essay from Eric Raymond on “How to Ask Questions the Smart Way”.

Course Communication

All announcements and communications for the class will take place through the class mailing list. Students are required to subscribe to the class mailing list:

Studenty may use the class mailing list to ask questions or clarifications, and the TAs, Instructor, or other students can answer. Note that following the advice in “How to Ask Questions the Smart Way” will increase the chances of getting your questions answered. While I highly encourage students to help each other on the mailing list, please do not go overboard and send your fellow student code (this will be considered cheating). It is better to point out their mistake or direct them to a resource that can help solve their problem, rather than giving them the answer. Note that sharing solutions or answers is expressly prohibited and will result in academic sanctions.

Also, please if at all possible use the mailing list for communication to me or the TAs (unless the communication is private). This way, the entire class will benefit from your question. Note that if we deem it necessary and helpful, we will CC the class mailing list when replying to direct emails.


CSE 230 and CSE 310.

Recommended Textbook

Programming Languages: Principles and Practice 3rd edition.
The second edition can also be used and is much cheaper.
Kenneth C. Louden and Kenneth A. Lambert
ISBN: 9781111529413

Important Dates and Tentative Lecture Topics

Monday Wednesday
8/24 8/26
Introduction + Lexical Analysis Lexical/Syntax Analysis
8/31 9/2
Syntax Analysis Syntax Analysis
Project 1 Due  
9/7 9/9
Labor Day No Class Syntax Analysis
  Homework 1 Due
  Project 2 Due
9/14 9/16
Basic Semantics Basic Semantics
9/21 9/23
Basic Semantics Basic Semantics
  Homework 2 Due
9/28 9/30
Exam Review Midterm Exam 1
10/5 10/7
Type Systems Type Systems
  Project 3 Due
10/12 10/14
Fall Break No Class Type Systems
10/19 10/21
Expressions and Statements Expressions and Statements
  Homework 3 Due
10/26 10/28
Abstract Data Types and Modules Abstract Data Types and Modules
  Project 4 Due
11/2 11/4
Procedures and Runtime Environment   Procedures and Runtime Environment
11/9 11/11
Procedures and Runtime Environment Veteran’s Day No Class
11/16 11/18
Exam Review Midterm Exam 2
Homework 4 Due  
11/23 11/25
Lambda Calculus Lambda Calculus
11/30 12/2
Lambda Calculus Lambda Calculus / Final Review
  Project 5 Due
  Homework 5 Due
Final Exam 12:10pm–2pm

Exam dates are fixed and will not change. If an exam date conflicts with a religious holiday (in accordance with ACD 304-04) or other university sanctioned activities (in accordance with ACD 304-02) you should let me know at least 2 weeks before the exam date to schedule a makeup exam. Absence for an exam due to medical reasons should be properly documented by a physician.


This is a demanding class that requires consistent effort on your part.

You will write thousands of lines of code in this class, and you will have to read and understand our code. This is different from most of what you have been exposed to so far.

You will understand non-trivial abstract concepts, new programming paradigms, and complex implementation issues. This requires consistent effort on your part.


Students will be evaluated on their performance on homework, midterm exams, programming projects, and final exam.


There will be five written homework assignments, which will reinforce the concepts covered in class.

Midterm Exams

There will be two midterm exams. The exams will cover the material discussed from the lectures and the homework. No notes or outside material/devices will be allowed.

Programming Projects

There will be 5 programming projects. These projects will involve applying and implementing the concepts discussed in class. All projects are to be done individually.

Final Exam

There will be one final exam. This exam will be comprehensive and cover all material in the class.


Area Weight %
Homework 20
Midterm Exams 25
Programming Projects   35
Final Exam 20

Grading weight for Programming Projects will be given as the higher of:

  • Projects 1–5 equal weight (7% each)
  • Projects 1 and 2 worth 8.75% total (4.375% each), and projects 3, 4, and 5 worth 26.25% (8.75% each)

The preliminary thresholds for assigning a letter grade are the following:

Letter Grade     Threshold
A+ 97
A 93
A- 89
B+ 86
B 82
B- 78
C+ 74
C 70

I reserve the right to curve the grades (by lowering the thresholds), depending on the circumstances.

Homework Due Dates

Homework must be submitted online by 11:59:59pm MST on the date that they are due. No late homework will be accepted.

Project Due Dates

For each day a project is late, a 30% deduction will be assessed. The number of days is rounded up to the nearest integer. Thus, if a project is due at 11:59:59pm, a submission at 12:00:00am is late and will receive a 30% deduction.

If you have a documented medical emergency of a duration that can affect your ability to finish a project, I will consider giving an extension. Note that there are usually several weeks for each project (other than the first two), so not feeling well for a day or two is not sufficient duration that affects your ability to finish a project.

Recorded Class Lectures

I will attempt to record the audio of the class lectures and post them online on the class website. However, this is not guaranteed, and you are responsible for all material covered in the class.1

Cell Phones

Put your cell phone on silent/vibrate mode while in class.

Special Accommodations

Students requesting disability accommodations should register with the Disability Resource Center (DRC) and present the instructor with appropriate documentation from the DRC.

Plagiarism and Cheating

Plagiarism or any form of cheating in homework, projects, or exams is subject to serious academic penalty. To understand your responsibilities as a student read: ASU Student Code of Conduct and ASU Student Academic Integrity Policy.

There is a zero tolerance policy in this class: any violation of the academic integrity policy will result in a zero on the assignment and a lowered letter grade in the course, and the violation will be reported to the Dean’s office.

Examples of academic integrity violations include (but are not limited to):

  • Sharing code with a fellow student (even if it’s only a few lines).

  • Collaborating on code with a fellow student.

  • Submitting another students code as your own.

  • Submitting a prior student’s code as your own.

Posting your projects online is expressly forbidden, and will be considered a violation of the academic integrity policy. If you want to impress employers with your coding abilities, create an open-source project that is done outside of class.

Syllabus Update

Information in the syllabus may be subject to change with reasonable advance notice.


This syllabus content was adapted from Prof. Rida Bazzi, and is used with permission.

  1. © Copyright 2015 Adam Doupé as to this syllabus, all lectures, and course-related written materials. During this course students are prohibited from making audio, video, digital, or other recordings during class, or selling notes to or being paid for taking notes by any person or commercial firm without the express written permission of the faculty member teaching this course.