Principles of Programming Languages - F16

CSE 340

Syllabus

Course Info

Course Number: CSE 340 (16266)
Instructor: Prof. Adam Doupé
Email: doupe@asu.edu
Office: BYENG 472
Office Hours: Wednesday 4:00pm–4:45pm, Thursday 3:00pm–4:00pm, and by appointment
Meeting Times: Monday, Wednesday, and Friday, 2:00PM–2:50PM (NEEB 105)
Course Mailing List: cse340-f16@googlegroups.com

Course TA: Erik Trickel
Email: Erik.Trickel@asu.edu
Office: BYENG 460 AB
Office Hours: 3:15pm–4:15pm Monday, 12:00pm–1:00pm Friday, and by appointment

Course TA: Mohsen Zohrevandi
Email: mohsen@asu.edu
Office: BYENG 435 AA
Office Hours: 11:00am–12:00pm Tuesday, 11:00am–12:00pm Thursday, and by appointment

Professor/TA Communication: cse340f16@asu.edu

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-f16

Students may use the class mailing list to ask questions or clarifications, and the TAs, professor, 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.

Questions meant for the professor and/or TAs should be addressed to the following email address: cse340f16@asu.edu. This email address is sent to the professor and TAs, and this will ensure that your email is addressed in a timely manner.

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

Recitation Sections

There are seven recitation sections, and the recitation sections will cover material from class, in-depth project discussions, and midterm reviews. You may attend any recitation section. Attendance is not required, but attending recitation sections will be critical to success in this class.

  • Monday 10:45am–11:35am, BYAC 260 led by Mohsen
  • Monday 4:35pm–5:25pm, BYAC 260 led by Erik
  • Tuesday 9:00am–9:50am, BYAC 260 led by Erik
  • Wednesday 8:35am–9:25am, BYAC 260 led by Erik
  • Wednesday 10:45am–11:35am, BYAC 260 led by Mohsen
  • Thursday 9:00am–9:50am, BYAC 260 led by Erik
  • Friday 10:45am–11:35am, BYAC 260 led by Mohsen

Important Dates and Tentative Lecture Topics

Monday Wednesday Friday
    8/19
    Intro, What is a programming language?
     
8/22 8/24 8/26
What is a PL, Essential Programming Skills       Lexical Analysis Lexical Analysis
     
     
8/29 8/31 9/2
Lexical Analysis Lexical Analysis Syntax Analysis
Project 1 Due   Homework 1 Due
     
9/5 9/7 9/9
Labor Day, no class Syntax Analysis Syntax Analysis
    Project 2 Due
     
9/12 9/14 9/16
Syntax Analysis Syntax Analysis Syntax Analysis
Homework 2 Due    
     
9/19 9/21 9/23
Syntax Analysis Semantics Semantics
Homework 3 Due    
     
9/26 9/28 9/30
Semantics Semantics Midterm Exam 1
Homework 4 Due    
     
10/3 10/5 10/7
Type Systems Type Systems Type Systems
    Project 3 due
     
10/10 10/12 10/14
Fall Break Hindley-Milner Type Inference     Hindley-Milner Type Inference
    Homework 5 Due
     
10/17 10/19 10/21
The Runtime Environment The Runtime Environment The Runtime Environment
     
     
10/24 10/26 10/28
The Runtime Environment The Runtime Environment Midterm Exam 2
Homework 6 Due    
     
10/31 11/2 11/4
The Runtime Environment The Runtime Environment The Runtime Environment
    Homework 7 Due
     
11/7 11/9 11/11
Lambda Calculus Lambda Calculus Veteran’s Day, no class
Project 4 Due    
     
11/14 11/16 11/18
Lambda Calculus Lambda Calculus Lambda Calculus
     
     
11/21 11/23 11/25
Midterm Exam 3 Lambda Calculus Thanksgiving, no class
     
11/28 11/30 12/2
Lambda Calculus Lambda Calculus Final Exam Review
    Project 5 Due
     
12/5
Final Exam    
2:30PM–4:20pm    
NEEB 105 (Same room as classroom)    

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 five to eight 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 five 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.

You are allowed to use code snippets that you find online (StackOverflow or otherwise) provided that you provide, as part of a comment in your source code, the source of the code. This snippets should not constitute a significant part of your code. Using another students' code, past or present, even with a citation is a violation of the 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 23 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. Note that this includes working out of a public Github repo. The Github Student Developer Pack provides unlimited private repositories while you are a student. 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.