Principles of Programming Languages - S16

CSE 340

Syllabus

Course Info

Course Number: CSE 340 (16266)
Instructor: Prof. Adam Doupé
Email: [email protected]
Office: BYENG 472
Office Hours: Wednesday 12pm–12:30pm and Thursday 3pm–4pm, and by appointment
Meeting Times: Monday, Wednesday, and Friday, 9:00am–9:50am (COOR 174)
Course Mailing List: [email protected]

Course TA: Ankur Chowdhary
Email: [email protected]
Office: BYENG 485AB
Office Hours: Monday 12:30pm–1:30pm, Tuesday 10:30am–11:30am, Friday 4pm–5pm, and by appointment

Office Hours

The TA’s and I will arrange the office hours so that the office hours are distributed throughout the week, 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:
https://groups.google.com/d/forum/cse340-s16

Students 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.

Prerequisites

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

Imporant Dates and Tentative Lecture Topics

Monday Wednesday Friday
1/11 1/13 1/15
Introduction Essential Programming Skills   Lexical Analysis
     
1/18 1/20 1/22
Martin Luther King Day Lexical Analysis Syntax Analysis
No Class   Project 1 due
     
1/25 1/27 1/29
Syntax Analysis Syntax Analysis Syntax Analysis
Homework 1 due   Project 2 due
     
2/1 2/3 2/5
Semantics Semantics Semantics
    Homework 2 due
     
2/8 2/10 2/12
Semantics Exam Review Midterm Exam 1
     
2/15 2/17 2/19
Semantics Semantics Semantics
     
2/22 2/24 2/26
Type Systems Type Systems Type Systems
    Homework 3 due
     
2/29 3/2 3/4
Type Systems Type Systems Type Systems
    Project 3 due
     
3/7 3/9 3/11
Spring Break, Woo! Spring Break, Woo! Spring Break, Woo!
     
3/14 3/16 3/18
Expressions and Statements Expressions and Statements Abstract Data Types and Modules
    Homework 4 due
     
3/21 3/23 3/25
Abstract Data Types and Modules   Exam Review Midterm Exam 2
     
3/28 3/30 4/1
The Runtime Environment The Runtime Environment The Runtime Environment
    Project 4 due
     
4/4 4/6 4/8
The Runtime Environment Procedures Procedures
     
4/11 4/13 4/15
Lambda Calculus Lambda Calculus Lambda Calculus
    Homework 5 due
     
4/18 4/20 4/22
Lambda Calculus Exam Review Midterm Exam 3
     
4/25 4/27 4/29
Lambda Calculus Real-world Compilers Final Exam Review
    Project 5 due
     
5/2 5/4 5/6
  Final Exam  
  7:30am–9:20am  

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.

Workload

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.

Assessment

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

Homework

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

Midterm Exams

There will be three 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.

Grading

Area Weight %
Homework 15
Midterm Exams 30
Programming Projects   40
Final Exam 15

Grading weight for Programming Projects will be Projects 1 and 2 5% weight each and Projects 3–5 10% weight 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 20% 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 20% 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. Plagiarism is taken very seriously in this course. To date, the professor has issued 20 academic integrity policy violations.

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.

Credit

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


  1. © Copyright 2016 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.