General Information
Instructor: Arthur Azevedo de Amorim E-mail: aaavcs at rit.edu Office hours: GOL-3547 Mo 3pm–4pm We 11am – 12pm or by appointment Lectures: Section 01 MWF 2:00pm – 2:50pm; SLA-2150 Website: http://arthuraa.net/teaching/20235/plc http://mycourses.rit.edu
Course Description
This course is a study of the syntax and semantics of a diverse set of high-level programming languages. The languages chosen are compared and contrasted in order to demonstrate general principles of programming language design and implementation. The course emphasizes the concepts underpinning modern languages rather than the mastery of particular language details. Programming projects will be required.
Enrollment Requirements
- (CSCI-243: The Mechanics of Programming or SWEN-250: Personal Software Engineering or IGME-309: Data Structures and Algorithms for Games and Simulations II)
and (MATH-190: Discrete Mathematics for Computing or MATH-200: Discrete Mathematics and Introduction to Proofs)- or permission of instructor
Course Goals
Although students who have had the introductory sequence have a solid background in basic algorithmic and object-oriented techniques, their perspective is narrow and their understanding of programming languages uncritical. The main goal of this course is to widen students’ perspectives by learning the power of alternative paradigms. Students become more critical and self-aware as software designers and thereby are better able to choose the appropriate paradigm and language for the problem at hand. The second goal is to expose the students to the decisions, both in design and in implementation, that go into developing new programming languages.
Course and Program Outcomes
Course learning outcomes:
- Students will be able to learn new programming paradigms and languages on their own.
Program outcome(s): 1
Evaluation: homework, projects, presentations, or exams- Students will be able to describe programming language syntax formally and semantics informally.
Program outcome(s): 1
Evaluation: homework, projects, or exams- Students will be able to identify appropriate programming languages to use to address the specific needs of a stated problem.
Program outcome(s): 1
Evaluation: homework or exams- Students will be able to explain and apply basic constructs and concepts used in common programming languages.
Program outcome(s): 1
Evaluation: homework, projects, or examsProgram Outcomes:
- (CS Undergraduate Program Outcome 1) Demonstrate fluency in high-level programming languages, environments, and tools for computing.
Grades
Grades will be assigned based on the following grading scheme:
Attendance & Participation (lectures): 5% Attendance & Participation (recitations): 5% Reading Quizzes (≈ 13): 10% Programming Assignments (≈ 8): 65% Final Exam: 15% Final letter grades will be assigned based on the following grading scale:
Letter grade Numeric grade A [93,∞) A- [90,93) B+ [87,90) B [83,87) B- [80,83) C+ [77,80) C [73,77) C- [70,73) D [60,70) F [0,60)
Important Dates
May 01 (Wed.): Final Exam (10:45am – 1:15pm; SLA-2150)
Text Books
Required: Title: Programming Languages: Build, Prove, and Compare (draft) Author: Norman Ramsey Publisher: Cambridge University Press ISBN: 978-1107180185 (print), 978-1316852989 (etext) Website: https://www.cambridge.org/highereducation/books/programming-languages/6606FE71C29E106582D743FB9DC9257F#overview Website: https://www.build-prove-compare.net/ (includes supplementary materials)
Course Policies
Attendance & Participation
Students are required to attend and expected to participate in class. Participation means being an engaged student, not simply attending class. During lectures, asking and answering questions is the primary means of participation; during recitations, contributing to group problem solving and presenting solutions are the primary means of participation.
The use of cell phones and audio players is prohibited during class meetings. If you must take a phone call, please leave the classroom immediately and do not return until you have ended the phone call.
The use of a laptop is permitted during class only for the purpose of taking notes or working on recitation problems. Persistent use of a laptop for other activities will result in 0 credit for your Attendance & Participation grade.
Assigned readings should be completed before the lecture section. You are responsible for the material in assigned readings, whether covered during lecture or not.
Final Exam
There will be a final exam; see above for the date. The final will be comprehensive and will cover material from the entire course, including readings, lectures, and assignments.
The final exam must be taken at its scheduled time. Any exam conflicts must be reported to the instructor by the end of Week 10 (see the RIT Final Examination Policies).
Late Policy
Assignments are to be submitted on time. However, to accommodate the occasional difficulty with meeting an assignment due date, each student begins the term with three “extension tokens.” Using an extension token grants a 24-hour extension on a single programming assignment (no extensions for reading quizzes). An extension token is automatically applied to “Late Submissions” on myCourses (work submitted after the “Due Date” but before the “End Date”); an extension token cannot be used after the assignment’s “End Date” has passed. Only one extension per assignment will be granted. After using three extension tokens, late submissions will not be accepted. The instructor will not discuss or answer questions about a programming assignment after the assignment’s “Due Date” has passed.
For extraordinary difficulties, contact an appropriate administrative staff member (e.g., the Dissability Services Office (DSO), assistant or associate dean for student success or academic services, or academic advisor) and ask that they contact the instructor, who will make special arrangements suited to the situation.
Regrading
After a graded exam or assignment has been returned, you have one week to bring any questions about grading to the instructor’s attention. No grade adjustments will be made after this time.
Academic Integrity
As with all courses, the RIT Honor Code and the Student Academic Integrity Policy apply. See the RIT Academic Integrity website for more details.
In this course, all submitted work must be your own work (i.e., written or programmed by you alone, unless explicitly stated otherwise) and must include acknowledgments of any collaborators or sources (other than course text books or handouts) used to produce your submission.
You are encouraged to discuss course material with other students. Discussion of assignments is also allowed, but sharing solutions or code is not allowed.
Health and Wellbeing
The academic demands in this course and your other classes can be understandably difficult. It is normal to feel anxious about your academic ability, especially when unexpected life events emerge. I want to invite you to connect with me about any difficulties you have in this course as soon as possible. Your success is important. I want you to get the additional assistance needed before the challenges become too much.
Please reach out to me by e-mail or attend office hours (in person or Zoom) if there is anything about the course or your academics, no matter how small, that you wish to discuss. While aspects of the course material are meant to be challenging, know that I want your time spent on the “interesting” parts. If you find yourself struggling for over an hour without making progress, then put the work aside for a time and make a plan to seek guidance.
Disclaimer
The instructor reserves the right to make any changes to the syllabus deemed necessary throughout the course. Minor changes, such as assignment due dates, will be announced orally during class and posted on the course mailing list and home page. Major changes, such as grading percentages, will additionally be provided in writing.
Acknowledgements
Portions of this course material based upon similar courses offered at Tufts University (Norman Ramsey, Samuel Guyer, Kathleen Fisher).