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

www.vpva.rutgers.edu

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

https://ods.rutgers.edu/

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 .