[ General Information
| Lecture Schedule
| Handouts
| Resources
| Requirements
]
Course description: This course is an introduction to programming language design and implementation. From the design point of view, we will study language features as tools for expressing what and how to compute. From the implementation point of view, we will discuss interpreters for understanding language features and discuss compilers as tools for mapping language features onto computer hardware. The course will touch on a variety of languages in different programming paradigms. Rather than dwell on the features of any particular language, we will focus instead on understanding the commonalities and differences among languages, the reasons for them, and the implications of them. Students will do programming assignments, mostly in Python, to better understand language features and language processing. | Prerequisites: CSE219 and CSE220. | Credits: 3. | Official description.
Instructor: Annie Liu | Email: liu@cs.stonybrook.edu | Office: Computer Science 1433 | Phone: 631-632-8463. | Office hours: Mon 12:30-12:55PM and 2:20-2:50PM, Thu 1:10-2PM, Fri 12-12:55PM, email for an appointment, or stop by any time I'm around.
TA: Abbas Razaghpanah | Email: arazaghpanah@cs.stonybrook.edu |
Office hours: Mon Wed 4-4:45PM, Computer Science 2110.
Grader: Cyril Thomas | Email: cyrthomas@cs.stonybrook.edu
Lectures: Mon Fri 1:00-2:20PM, in Computer Science 2120.
Textbook: Programming Language Pragmatics by Michael Scott. Third Edition, Morgan Kaufmann Publishers, 2009. This is an excellent textbook that covers both language design and implementation.
Grading: Lecture critiques, in-class exercises, programming assignments, 2 quizzes, and a final, worth 5%, 10%, 15%, 2 x 20%, and 30%, respectively, of the grade. Extra credit work will be given as appropriate. Partial credit will be given for partial work. Reduced credit for late assignments, 20% off per day.
Course homepage: http://www.cs.stonybrook.edu/~liu/cse307/
Unit 1 (1/27, 2/7): Overview. Ch.1. Assignment 1
Unit 2 (1/31, 2/7): Python. Python Tutorial.
Unit 3 (2/10, 2/21): Syntax. Ch.2. Assignment 2
Unit 4 (2/24, 2/28): Semantics. Ch.4, 14.3.1.
Review (2/28, 3/3). Assignment 2 due
Quiz 1 (3/7): In-class exam. You can prepare one hand-written personal "crib sheet".
Unit 5 (3/10, 3/14): Names. Ch.3. Assignment 3
Unit 6 (3/24): Python. Python Tutorial.
Unit 7 (3/28, 3/31): Control flow. Ch.6. Assignment 4
Unit 8 (4/4, 4/7): Data types. Ch.7.
Review (4/11). Assignment 4 due
Quiz 2 (4/14): In-class exam. You can prepare one hand-written personal "crib sheet".
Unit 9 (4/18, 4/21): Control abstraction and functional languages. Ch.8,10. Assignment 5
Unit 10 (4/25, 4/28): Data abstraction and object-oriented languages. Ch.9.
Unit 11 (5/2, 5/5): Logic languages. Ch.11. Assignment 6
Unit 12 (5/9): Programming in the large. Ch.12, 13.
Final review (5/12). Assignment 6 due.
Final Exam (5/20): 2:15-4:45PM . You can prepare two hand-written personal "crib sheets".
Questionnaire
Lecture Critiques
In-Class Exercises
Assignment 1: Processing data --- Reading and analyzing tables
Assignment 2: Syntax analysis --- Parsing programs
Assignment 3: Semantic analysis --- Analyzing names
Assignment 4: Control abstraction --- Evaluating programs
Assignment 5: Object abstraction --- Organizing everything
Assignment 6: Logic programming --- Adding power
Quiz 1
Quiz 2
Final Exam
Interactive Site of This Course, for students in the class
Computer Science Department Windows Computing Facilities
Learn all information on the course homepage. Check the homepage periodically for announcements and other dynamic contents.
Attend all lectures and take good notes. This is the most efficient way to learn the course materials, because we will both distill and elaborate textbook materials and discuss other important materials. We will start promptly on time, with quick reviews every time, followed by exercises or quizzes. We will have every student participate in solving problems and presenting solutions in class.
Do all course work. The readings are to help you preview and review the materials discussed in the lectures. The assignments are to provide concrete experiences with the basic concepts and methods covered in the lectures. The quizzes are to help check that you are keeping up with the lectures and the assignments. The exams will be comprehensive.
Ask questions and get help. Ask questions in class, visit the TA during office hours, and visit the professor with any remaining questions. Talk with your classmates, and share ideas (but nothing written or electronic).
Academic Integrity: All assignments, quizzes, and exams must be done individually, unless specified otherwise; you may discuss ideas with others and look up references, but you must write up your solutions independently and credit all sources that you used. Any plagiarism or other forms of cheating discovered will have a permanent consequence in your university record.
Each student must pursue his or her academic goals honestly and be personally accountable for all submitted work. Representing another person's work as your own is always wrong. Faculty are required to report any suspected instances of academic dishonesty to the Academic Judiciary. For more comprehensive information on academic integrity, including categories of academic dishonesty, please refer to the academic judiciary website at http://www.stonybrook.edu/uaa/academicjudiciary/
Americans with Disabilities Act: If you have a physical, psychological, medical or learning disability that may impact your course work, please contact Disability Support Services, ECC(Educational Communications Center) Building, Room 128, (631)632-6748. They will determine with you what accommodations, if any, are necessary and appropriate. All information and documentation is confidential.
Critical Incident Management: Stony Brook University expects students to respect the rights, privileges, and property of other people. Faculty are required to report to the Office of University Community Standards any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students' ability to learn. Further information about most academic matters can be found in the Undergraduate Bulletin, the Undergraduate Class Schedule, and the Faculty-Employee Handbook.