CS 314: Principles of Programming Languages Sections 5 & 6, Spring 2023
Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit
CS 314: Principles of Programming Languages
Sections 5 & 6, Spring 2023
Instructor
John-Austen Francisco <deymious\at/yahoo\dot/com>
Please prepend “[CS314]” to the subject line of all course-related email.
Objectives
Primary: Learn new ways of thinking about problems and programs.
Secondary: Make it easier to learn new languages by learning principles that apply to many languages.
Tertiary: Learn some interesting languages.
Prerequisites
CS 205, CS 211
Java; the memory model of C, including pointers; predicate calculus
Technology Requirements
Students will need access to Racket and SWI-Prolog. Racket is available free online and can be installed on most popular personal computers. SWI-Prolog is already installed on several Instructional Lab (iLab) machine clusters. Students will need appropriate remote-access software, such as SSH, to access it. Installation instructions are available through the department web site and will be linked from Canvas.
Please visit the Rutgers Student Tech Guide at https://it.rutgers.edu/technology-guide/students/ for resources available to all students. If you do not have the appropriate technology for financial reasons, please e-mail the Dean of Students <[email protected]> for assistance. If you are facing other financial hardships, please visit the Office of Financial Aid at https://financialaid.rutgers.edu/ .
Books
Required: NONE .
Recommended: Michael L. Scott, Programming Language Pragmatics, 3rd edition > The textbook does not cover all of the material for this course and is not a substitute for attending class. < > The published slides are only a basis for the course content and are not a substitute for attending class.<
Grading
Your course grade is based on homework, quizzes projects and a final, with the following tentative weighting: Homework/Quizzes (all together): 20%
Projects (all together): 40%
Midterm Exam: 20%
Final Exam: 20%
Letter grades will not be given for individual assignments and tests. Final course grades will be determined according to overall scores. The mapping from course score to letter grade will be determined after all assessments are graded. There are no expectations that some number of students must pass or fail; if everyone does well, everyone can get an 'A'. Do as well as you can on all assessments in order to succeed in the course.
Assessments
Homework will be either be brief practical coding exercises, questions about course content or related documents, or a combination of the previous submitted through the Assignments tool on Canvas. Quizzes will be short practical evaluations delivered through the Canvas Quizzes tool. Projects will be more extensive programming exercises submitted through the Canvas Assignments tool.
All exams are cumulative up to the exam date and are in person in class or (in the case of the final) at a time and place scheduled by the University.
Canvas will be the judge of when an assessment is submitted. Be aware that, like any web site, Canvas may become less responsive under load. Students are advised to submit at least several hours before the deadline, for safety. Submissions received after the deadline will be graded with a penalty of up to 50%. Scheduling and policies for the final exam will be announced during the semester.
No submissions will be accepted more than six hours after the deadline (barring documented emergencies).
Your work is evaluated based on its performance and other posted guidlines, not how long or how hard you worked on it.
Poor grades / Emergencies
If you get less than 70% on an assessment please contact a TA or visit your instructor's office hours. If you suffer an injury or have emergency please contact the instructor immediately. Do not wait until the semester is over and your final grade is announced to contact the instructional staff about an issue. Once the semester is over there is no work you can submit or modify in order to raise your grade. The earlier you contact us the more chance we can be of help.
Topics
The following list is organized by topic, not necessarily by chronological order of coverage .
0. Formal Languages
Context free grammars
Regular grammars
Finite state automata
Regular expressions
Using all of the above to define a language
1. Functional Programming Scheme
Repetition through recursion, not iteration
Stateless programming
Closures
2. Logic Programming Prolog
3. Scripting Python
4. Principles
Types and type inference
Scope & binding, lexical and dynamic
Parameter passing modes
Academic Integrity Policy
Summary: http://nbacademicintegrity.rutgers.edu/home/academic-integrity-policy/
Resources: http://nbacademicintegrity.rutgers.edu/home/for-students/
Students are expected to maintain the highest level of academic integrity. You should be familiar with the university policy on academic integrity. Violations will be reported and enforced according to this policy.
Use of external website resources such as Chegg.com, coursehero.com or others to obtain solutions or guidance on any assessment is cheating and a violation of the University Academic Integrity policy. Cheating in the course may result in grade penalties, disciplinary sanctions or educational sanctions. Posting course documents and content, such as homework assignments or exams, to external sites without the instructor's express permission may be a violation of copyright law and constitute the facilitation of dishonesty, which may result in the same penalties as cheating.
Handling Emergencies, Issues and Accessability
Counseling, ADAP & Psychiatric Services (CAPS)
(848) 932-7884 / 17 Senior Street, New Brunswick, NJ 08901
http://health.rutgers.edu/medical-counseling-services/counseling/
CAPS is a University mental health support service that includes counseling, alcohol and other drug assistance, and psychiatric services staffed by a team of professionals within Rutgers Health services to support students’ efforts to succeed at Rutgers University. CAPS offers a variety of services that include: individual therapy, group therapy and workshops, crisis intervention, referral to specialists in the community, and consultation and collaboration with campus partners.
Crisis Intervention
http://health.rutgers.edu/medical-counseling-services/counseling/crisis-intervention/
Report a Concern
http://health.rutgers.edu/do-something-to-help/
Violence Prevention & Victim Assistance (VPVA)
(848) 932- 1181 / 3 Bartlett Street, New Brunswick, NJ 08901
The Office for Violence Prevention and Victim Assistance provides confidential crisis intervention, counseling and advocacy for victims of sexual and relationship violence and stalking to students, staff and faculty. To reach staff during office hours when the university is open or to reach an advocate after hours, call 848-932-1181.
Disability Services
(848) 445-6800 / Lucy Stone Hall, Suite A145, Livingston Campus,
54 Joyce Kilmer Avenue, Piscataway, NJ 08854
Rutgers University welcomes students with disabilities into all of the University's educational programs. In order to receive consideration for reasonable accommodations, a student with a disability must contact the appropriate disability services office at the campus where you are officially enrolled, participate in an intake interview, and provide documentation: https://ods.rutgers.edu/students/documentation-guidelines . If the documentation supports your request for reasonable accommodations, your campus’s disability services office will provide you with a Letter of Accommodations. Please share this letter with your instructors and discuss the accommodations with them as early in your courses as possible. To begin this process, please complete the Registration form on the ODS web site at: https://ods.rutgers.edu/students/registration-form .
2023-02-09