Course Number: CSE 340 (16266)
Instructor: Prof. Adam Doupé
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: firstname.lastname@example.org
Course TA: Erik Trickel
Office: BYENG 460 AB
Office Hours: 3:15pm–4:15pm Monday, 12:00pm–1:00pm Friday, and by appointment
Course TA: Mohsen Zohrevandi
Office: BYENG 435 AA
Office Hours: 11:00am–12:00pm Tuesday, 11:00am–12:00pm Thursday, and by appointment
Professor/TA Communication: email@example.com
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”.
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:
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: firstname.lastname@example.org. 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.
CSE 230 and CSE 310.
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
|Intro, What is a programming language?|
|What is a PL, Essential Programming Skills||Lexical Analysis||Lexical Analysis|
|Lexical Analysis||Lexical Analysis||Syntax Analysis|
|Project 1 Due||Homework 1 Due|
|Labor Day, no class||Syntax Analysis||Syntax Analysis|
|Project 2 Due|
|Syntax Analysis||Syntax Analysis||Syntax Analysis|
|Homework 2 Due|
|Homework 3 Due|
|Semantics||Semantics||Midterm Exam 1|
|Homework 4 Due|
|Type Systems||Type Systems||Type Systems|
|Project 3 due|
|Fall Break||Hindley-Milner Type Inference||Hindley-Milner Type Inference|
|Homework 5 Due|
|The Runtime Environment||The Runtime Environment||The Runtime Environment|
|The Runtime Environment||The Runtime Environment||Midterm Exam 2|
|Homework 6 Due|
|The Runtime Environment||The Runtime Environment||The Runtime Environment|
|Homework 7 Due|
|Lambda Calculus||Lambda Calculus||Veteran’s Day, no class|
|Project 4 Due|
|Lambda Calculus||Lambda Calculus||Lambda Calculus|
|Midterm Exam 3||Lambda Calculus||Thanksgiving, no class|
|Lambda Calculus||Lambda Calculus||Final Exam Review|
|Project 5 Due|
|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.
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 to eight written homework assignments, which will reinforce the concepts covered in class.
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.
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.
There will be one final exam. This exam will be comprehensive and cover all material in the class.
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:
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
Put your cell phone on silent/vibrate mode while in class.
Students requesting disability accommodations should register with the Disability Resource Center (DRC) and present the instructor with appropriate documentation from the DRC.
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.
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.
© 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.↩