CSCI.4430 Programming Languages-- Fall 2024

Instructor:  Carlos Varela
Office:  Lally 308 (x 6912)
WebEx Personal Roomhttps://rensselaer.webex.com/meet/varelc
Office Hours:  Tuesdays and Fridays, 8:30-9:45am; or by appointment

Meeting Place:  Darrin 308.
Meeting Hours:  Tuesdays and Fridays 10:00-11:50am

TAs: Kushal Bhandari, Justin Buergi, Brendan Cross, Aamir Mandviwalla, Ingkarat Rak-amnouykit, Ron Rattanakornphan.
CAs: Chris McCarthy, Itamar Oren-Naftalovich, and Samyuth Sagi.
Mentors: Muhammad Alafifi, Tim Gross, Xiaoxiao He, Max Hutz, Nicholas Pardave, Tarun Rajan, and Shane Stoll.
Instructional Support Coordinator: Meredith Widman.
OFFICE HOURS SCHEDULE
Monday Tuesday Wednesday Thursday Friday
8:30 - 9.45 AM Instructor OH

Prof. Varela

Lally 308
Instructor OH

Prof. Varela

Lally 308
10:00 AM - 12:00 PM OH

TA: Kushal
Mentor(s): Tarun

Carnegie 210
Lecture

Darrin 308
Lecture

Darrin 308
12:00 - 2:00 PM OH

TA: Aamir
Mentor(s): Xiaoxiao (12:30 - 2:00)

Carnegie 210
OH

TA: Aamir
Mentor(s): Xiaoxiao (12:30 - 2:00)

Sage 2715
2:00 - 4:00 PM OH

TA: Brendan
Mentor(s): Max

Carnegie 205
OH

CA: -
Mentor(s): Shane

DCC 235
OH

TA: Brendan
Mentor(s): Max

Sage 2715
OH

TA: Justin
Mentor(s): Nicholas

Sage 4112
4:00 - 6:00 PM OH

TA: Ron
CA: Itamar, Chris
Mentor(s): Tim

Carnegie 205
OH

TA: Ingkarat
Mentor(s): Muhammad

DCC 235
OH

CA: Samyuth
Mentor(s): Shane

J-Rowl 2C22
OH

TA: Ron
CA: Itamar, Chris
Mentor(s): Tim

Sage 2715
6:00 - 8:00 PM OH

TA: Ingkarat
Mentor(s): Muhammad
Xiaoxiao (6:00 - 7:00)

Carnegie 205
OH

TA: Kushal
Mentor(s): Tarun

J-Rowl 2C22

Home pagehttps://www.cs.rpi.edu/academics/courses/fall24/csci4430
Submitty Home Page: https://submitty.cs.rpi.edu/courses/f24/csci4430
Use Submitty to submit your assignments, check your grades, and post/answer questions in the discussion forum.
To contact the instructor, TAs, CAs, mentors, and coordinator about the course, please email:  proglang AT cs DOT lists DOT rpi DOT edu.


Course Description

This course will enable students to understand essential aspects of programming languages --i.e., theoretical foundations, syntax, semantics, data abstraction, control abstraction, types, scope of variables, and expression evaluation mechanisms.  Students will be exposed to different programming paradigms (computation models) including functional programming, concurrent programming, and logic programming. Students will write programming assignments in Haskell, SALSA or Erlang, and Prolog.

Pre-requisites

CSCI.2300 Introduction to Algorithms and CSCI.2600 Principles of Software.

Course Themes

Programming Language Essentials. Functional, Concurrent, and Logic Programming Paradigms.

Learning Outcomes

When students have successfully completed this course, they will be able to:

Programming Assignments


Course Contents

  1. Introduction
  2. Functional Programming
  3. Concurrent Programming
  4. Logic Programming


Tentative Course Syllabus

Date Topic Handouts Chapter/Section
08/30 Introduction to programming languages:  history, essentials, syntax, semantics, paradigms PDCS Chapter 2
09/06 Lambda calculus:  alpha-renaming, beta-reduction, applicative and normal evaluation orders, Church-Rosser theorem, combinators, booleans PDCS Chapter 2
09/10 Lambda calculus: higher order programming, eta-conversion, recursion combinator, numbers, Church numerals
PDCS Chapter 2
09/13 Functional programming: lists, pattern matching, recursion
Programming Assignment 1 Due 09/26
CTM Sections 1.1-1.7, 3.2, 3.4.1-3.4.2, 4.7.2
09/17 Higher order programming: closures, functional abstraction, genericity, instantiation, embedding CTM Sections 3.2 and 3.6.1
09/20 Control abstractions: map, reduce, iterate, fold, filter CTM Sections 1.9, 3.6, and 4.7
09/24 Lazy evaluation, infinite data structures, set comprehensions CTM Sections 1.8 and 4.5
GIH Sections 3.4
09/27 Type checking and type inference, abstract data types EPL Chapter 4, GIH, and CTM Sections 2.8.3 and 3.7
10/01 Review for Exam 1
10/04
Exam 1
10/08 Actors:  a model of concurrent computation
10/11 Actor programming languages (SALSA, Erlang)
10/15 Concurrency control abstractions
Programming Assignment 2 Due 10/28
10/18 Distributed systems abstractions
10/22
Mobility and fault-tolerance abstractions
10/25
Distributed fault-tolerant computing, hot code loading (Erlang)
10/29 Mobile distributed computing, garbage collection, visualization (SALSA)
11/01 Review for Exam 2
11/05
Exam 2
11/08
Predicate calculus, first-order logic, Horn clauses, Clocksin-Mellish procedure
11/12
Terms, resolution, unification, search, backtracking
11/15
Imperative control flow: cut(!), call, fail, not, repeat, findall. Closed-world assumption, generate-and-test. Lists, append relation
Programming Assignment 3 Due 12/04
11/19
Constraint satisfaction problems: propagate-and-search. Natural language parsing: definite clause grammars
11/22 Prolog I/O, equalities, types, operators; Knowledge bases: assert, retract
11/26 Accumulators, difference lists
12/03 Constraint programming: computation spaces
12/06 Review for Exam 3
12/10
Exam 3


Reading Material


Software


Grading

The course consists of three main parts, covering respectively functional, concurrent, and logic programming. Evaluation for each part includes a programming assignment and a partial exam.

For functional programming, we will use Haskell. For concurrent programming, we will use SALSA and Erlang. For logic programming, we will use Prolog. You must understand one language per paradigm to be prepared for exams and programming assignments. You may write your assignments on a different programming language provided you get permission from the instructor one week before the submission date (but do not expect help from the instructor or TAs if you choose your own). Programming assignments can be done either individually or in pairs. Do not show your code to any other group and do not look at any other group's code. Do not put your code in a public directory or otherwise make it public. You are encouraged to use the Submitty Discussion Forum to post questions so that other students can also answer/see the answers. There will be three grace days for late submissions throughout the semester, to be used in any combination of PAs, e.g., PA1 may be one day late and PA3 may be two days late, as long as PA2 was submitted on time. Make sure to have the same number of grace days with your new partner if you switch teams mid-semester. Late assignments beyond the three day grace period will receive a grade of 0.

Students may use for reference during exams: physical textbooks, printed course slides, and one personal crib sheet. No electronics will be allowed. All exam answers must be your own. Exam grades may be curved.

We will use the following weighting scheme for grades: The highest two programming assignment grades will have a total weight of 40% (20% each), while the third one will have a weight of 10%. We will use the same weighting scheme for partial exams: the highest two exam grades will be worth 40% of the total grade while the third one will count for 10% of the total grade. Final letter grades will then be assigned as follows:

Letter Grade Range
A [90-100]
A- [86.67-90)
B+ [83.33-86.67)
B [80-83.33)
B- [76.67-80)
C+ [73.33-76.67)
C [70-73.33)
C- [66.67-70)
D+ [63.33-66.67)
D [60-63.33)
F [0-60)

Academic Integrity

Student-teacher relationships are built on trust. For example, students must trust that teachers have made appropriate decisions about the structure and content of the courses they teach, and teachers must trust that the assignments that students turn in are their own. Acts that violate this trust undermine the educational process. The Rensselaer Handbook of Student Rights and Responsibilities and The Graduate Student Supplement define various forms of Academic Dishonesty and you should make yourself familiar with these. In this class, all assignments that are turned in for a grade must represent the student's own work. In cases where help was received, or teamwork was allowed, a notation on the assignment should indicate your collaboration.

Violations of academic integrity may also be reported to the appropriate Dean (Dean of Students for undergraduate students or the Dean of Graduate Education for graduate students, respectively).

If you have any question concerning this policy before submitting an assignment, please ask for clarification. In addition, you can visit the following site for more information on our Academic Integrity Policy: Student Rights, Responsibilities, and Conduct..


Disability Services

Rensselaer Polytechnic Institute is committed to providing equal access to our educational programs and services for students with disabilities. If you anticipate or experience academic barriers due to a disability, please let me know immediately so that we can discuss your options. To establish reasonable accomodations, please register with The Office of Disability Services for Students. After registration, make arrangements with the Director of Disability Services as soon as possible to discuss your accomodations so that they may be implemented in a timely fashion. DSS contact information: dss@rpi.edu; +1-518-276-8197; 4226 Academy Hall.

Student Health and Wellness


Support Services

RPInfo - contains various links for students, academic resources, support services, and safety & emergency preparedness.

Rensselaer Information Technology and Services


Last modified: Thu Aug 29 13:08:41 EDT 2024