Expand on CSC 270 by examining the theory and implementation behind common programming-language constructs. Topics may include scanning and parsing, parameter passing, variable binding, scoping, static and dynamic types, type inference, lazy vs. eager evaluation, tail recursion, concurrency, higher-order functions, implementation of OOP techniques, etc.
None
Students will understand the principles of programming language design and implementation as well as understanding the key decisions that must be made when designing a new programming language.
Grade of C- or better in CSC 270 and 271
Concepts of Programming Languages, 11th edition by Robert W. Sebesta, Addison-Wesley, 2016.
Lecture handouts are available online on the course website (see above). When possible they may be distributed in class. Where available, lecture videos may be posted online. The assigned videos will be listed on the web site and should be viewed before coming to class.
Classtime will be spent on lecture material and activities relevant to course material. We will examine a few languages to see what certain design decisions were made, and we will design a language and/or translator of our own.
While there will be opportunities to use class time for assigned work, this will be mainly limited to debugging and other assistance that students require in class. One should expect to spend 4-6 hours outside class working on programming assignments for this class.
Each programming assignment will be graded with a base grade of 90%, with points added to reflected areas in which the assignment exceeded specified requirements and/or points deducted to show areas where the assignment is deficient.
Late penalties may be assessed of 2 points per class after the due date.
The final average will be weighted (based on the following ratio:
Midterm Exam | 40% |
Final Exam | 40% |
Assignments | 20% |
The final average will translate to a letter grade according to the following table:
Final Average | Course Grade |
---|---|
A | 90 - 100 |
A- | 87.5 - 89.9 |
B+ | 83.3 - 87.4 |
B | 80.0 - 83.2 |
B- | 77.5 - 79.9 |
C+ | 73.3 - 77.4 |
C | 70.0 - 73.2 |
C- | 67.5 - 69.9 |
D+ | 63.3 - 67.4 |
D | 60.0 - 63.2 |
F | 0.0 - 59.9 |
The following is the Adelphi University General Attendance Policy:
Only students who are registered for courses, and whose name appears on the Official Class Roster may attend courses at the University. Adelphi students make a commitment to be active participants in their educational program; class attendance is an integral part of this commitment. Attendance requirements for each course will be announced by the faculty member at the beginning of each term. Students are expected to be present promptly at the beginning of each class period, unless prevented by illness or by other compelling cause. In the event of such absence, students may request that faculty members be notified by the Office of Academic Services and Retention. Students are responsible for completing course work missed through absences. Students should wait a reasonable length of time for an instructor in the event that the instructor is delayed.
Additionally, you are also responsible for whatever work is covered in class whether or not you are there. Absence from the final exam will be excused only for a good and well-documented reason. The decision to allow a make-up exam will be made in accordance with the policies of Adelphi University.
NB: I will not be available on Wednesday, April 12 or Monday, April 17. There will be lab on both days with attendance taken; we will make up both class meetings on Monday, May 8 11:00-11:50 and 2:25-3:40 in our usual rooms with attendance taken. Students are encouraged to take advantage of the time to complete programming assignments.
If the University is closed for more than two days due to an emergency, go the home page for this course site each day for instructions and assignments. Student instructions materials can be found at http://home.adelphi.edu/~siegfried/cs272
Date | Topic | Assignment due |
---|---|---|
January 23 | Intro to Programming Languages | |
January 25 | Intro to Programming Languages | |
January 27 | Intro to Programming Languages | |
January 30 | History of Major Programming Languages | |
February 1 | History of Major Programming Languages | Assn #1 - p. 31-32/ Problem set 2, 3, 4, 8, 13 |
February 3 | History of Major Programming Languages | |
February 6 | History of Major Programming Languages | |
February 8 | Formal Descriptions of a Programming Language | |
February 10 | Formal Descriptions of a Programming Language | Assn #2 - p. 105-106/ Problem set 5, 6, 7, 13 |
February 13 | Formal Descriptions of a Programming Language | |
February 15 | Formal Description of a Programming Language | |
February 17 | Language Translation Issues | |
February 20 | Language Translation Issues | Assn #3 - p. 157/ Problem set 2e, 3, 4, 6 |
February 22 | Language Translation Issues | |
February 24 | Language Translation Issues | |
February 27 | Names, Bindings, Type Checking and Scopes | |
March 1 | Names, Bindings, Type Checking and Scopes | Assn #4 - p. 193/ Problem set 1, 5 |
March 3 | Names, Bindings, Type Checking and Scopes | |
March 6 | Review for Midterm Exam | Assn #5 - p. 229-231/ Problem set 7, 9, 10 |
March 8 | Midterm Exam | |
March 10 | Data Types | |
March 20 | Data Types | |
March 22 | Data Types | |
March 24 | Data Types | |
March 27 | Data Types | |
March 29 | Data Types | |
March 31 | Expressions and Assignment Statements | |
April 3 | Expressions and Assignment Statements | |
April 5 | Expressions and Assignment Statements | Assn #6 - p. 298/ Problem set 2, 3, 7 |
April 7 | Expressions and Assignment Statements | |
April 10 | Control Structures | |
April 12 | Control Structures | Assn #7 - p. 326/ Problem set 4, 5, 7 |
April 14 | Control Structures | |
April 17 | Control Structures | |
April 19 | Subprograms | |
April 21 | Subprograms | |
April 24 | Subprograms | Assn #8 - p. 361/ Problem set 4 & "What is wrong with the GOTO?" |
April 26 | Subprograms | |
April 28 | Implementing Subprograms | |
May 1 | Implementing Subprograms | Assn #9 - p. 414-9/ Problem Set 2, 5, 7 |
May 3 | Implementing Subprograms | |
May 5 | Implementing Subprograms | |
May 8 | Review for Final Exam | |
May 12 | Review for Final Exam | Assn #10 - p. 413/ Problem Set 1, 5, 7, 14 |
May 17 | Final Exam (10:30AM . 12:30 PM) |
If you have a disability that may significantly impact your ability to carry out assigned coursework, please contact the Student Access Office (SAO) at 516-877-3806 or send an email to sao@adelphi.edu. The staff will review your concerns and determine, with you, appropriate and necessary accommodations. Please allow for a reasonable time frame for requesting ASL Interpreters or Transcription Services.
Students enrolled in this course are expected to abide by the Adelphi University Honor Code. The purpose of the Honor Code is to protect the academic integrity of the University by encouraging consistent ethical behavior in assigned coursework by students. Following is excerpted from the Student Honor Code:
The code of academic honesty prohibits behavior, which can broadly be described as lying, cheating, or stealing. Violations of the code of academic honesty will include, but are not limited to, the following:
During the last two weeks of the class, you will receive notification, via mail and eCampus, that the course evaluation is available for your input electronically. Availability will end at the start of the final examination period. Your feedback is valuable and I encourage you to respond. Please be assured that your responses are anonymous and the results will not be available to the instructor until after the end of the semester and therefore after course grades have been submitted.
Tear off this and return with information required below: STUDENT ACKNOWLEDGEMENT: I HAVE RECEIVED AND READ THE SYLLABUS FOR [INSERT COURSE NUMBER AND SECTION]. SIGNED: __________________________________________ PRINT NAME: _________________________________________ DATE: ___________________________ Warning ? This page must be signed and returned to the instructor to receive a complete grade in this course.