Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

NOTE: This page is for an old offering of the course. To find the latest course offering, please visit https://comp311.rice.edu/.

COMP 311: Functional Programming (Fall

...

2016)

  times

Instructor

Dr. Eric Allen

Dr. Corky Cartwright

Graduate TAs
  • Arghya "Ronnie" Chatterjee
  • Lechen Yu
Co-Instructor

Dr. Sağnak Taşırlar

Undergraduate TAs
  • Chris Brown
  • Cannon Lewis
  • Jake Nyquist

Lectures

Herzstein Hall 210DCH 1075

Lecture

Times

T Th 28:3000AM - 39:4515AM TR

Course Email comp311_staff@rice.eduOnline Discussionhttps://piazza.com/class/ibslot8j6un5p6Piazza -- Rice Comp 311

 

Description

Description

 

This class provides an introduction to concepts, principles, and approaches of functional programming. Functional programming is a style of programming where in which the key means of computation is the application of functions to arguments (which themselves can be functions). This style of programming has a long history in computer science, beginning with the formulation of the Lambda Calculus as a foundation for mathematics and computer science. It has become increasingly popular in recent years because it offers important advantages in designing, maintaining, and reasoning about programs in many modern contexts such as web services, multicore programming, and cluster distributed computing. Course work consists of a series of programming assignments in the Scala programming language and various extensions.

Grading, Honor Code Policy, Processes, and Procedures
 

Grading will be based on your performance on weekly programming assignments. All work in this class is expected to be your own, and you are expected not to post your solutions or share your work with other students, even after you have taken the course. Please read the Comp 311 Honor Code Policy for more details on how you are expected to work on your assignments.

All students will be held to the standards of the Rice Honor Code, a code that you pledged to honor when you matriculated at this institution. If you are unfamiliar with the details of this code and how it is administered, you should consult the Honor System Handbook. This handbook outlines the University's expectations for the integrity of your academic work, the procedures for resolving alleged violations of those expectations, and the rights and responsibilities of students and faculty members throughout the process.

 
Accommodations for Students with Special Needs
 

Students with disabilities are encouraged to contact me during the first two weeks of class regarding special needs. Students with disabilities should also contact Disabled Student Services in the  Ley Student Center  and the  Rice Disability Support Services .


General Information

 

Course Syllabus 
Homework Submission Guide
Office Hours
EricBy Appointment--
Corky

Wednesday

Tuesday, Thursday

2pm-4pm

9:15am-10:30am

DCH 3110

DCH 3104

SagnakThursday9:15am - 11:15amDCH 2062
LechenWednesday1pm - 2pmDCH 2069
ChrisTuesday1pm - 3pmDuncan Commons
CannonMonday3pm - 5pmJones Commons
JakeWednesday1:55pm - 3:55pmWill Rice Commons
Lectures
Tuesdays and Thursdays 2:30PM-3:45PM
Grading
Coursework will consist of a series of small weekly programming assignments in Scala
Textbooks
Online Videos
Development Environment

 

Lecture Schedule

...

(Subject to Change Without Notice)

Conditional Functions on Ranges, Point Values, and Compound Datatypes

Semantics of Type Checking, Binary Methods, Abstract Datatypes

For Expressions, Monads, The Environment Model of Reduction

Call-by-Name, Environment Model of Type Checking, Generative Recursionlec36-slides 

Assigned Reading 25Topic 1.1 Lecture, Topic 1.1 Demonstration lec1-slidesThurs 27  3 8Thurs 10 15Thurs 17Lecture & demo quizzes for topics 2.2, 3.1, 3.2, 3.3, 3.4 22 24Lecture & demo quizzes for topics 3.5, 3.6, 4.5 29 lec15-slides  6  8 13  20  22 27Thurs 29 Topic 7.1 Lecture 3  5 10   17 24 lec36-slidesThurs 26   3

Week

Day

Date

Topic

Assigned Videos (Quizzes due by Friday of each week)

SlidesWork AssignedWork Due

1

Tues

Aug

 

Module 1: Sections 0.1, 0.2, 1.1

23

Overview, Motivation

  
 ThurAug  Module 1: Section 1.4Topic 1.4 Lecture, Topic 1.4 Demonstrationlec3-slidesHomework 1Lecture & demo quizzes for topics 1.1, 1.2, 1.3, 1.425What are Types, Core ScalaHwk 0 

2

Tues

Aug 30

Doubles, Programming with Intention, The Design Recipe

2

Tues

Sep 1

 

  

  
 ThursSep

 

Module 1: Section 1.6 (self-study), Section 2.1Topic 1.6 Lecture, Topic 1.6 Demonstration, Topic 2.1 Lecture,  Topic 2.1 Demonstrationlec5-slides Lecture & demo quizzes for topics 1.5, 1.6, 2.101Functions on Ranges, Point Values, Compound Datatypes 

3

Tues

Sep

06

Methods, Grading, DrScala

 

Module 1: Section 2.3Topic 2.3 Lecture , Topic 2.3 Demonstration  lec6-slides  
 ThurSep 08 Abstract DatatypesModule 1: Sections 2.5, 2.6Topic 2.5 Lecture ,  Topic 2.5 Demonstration, Topic 2.6 Lecture ,  Topic 2.6 Demonstration  lec7-slidesHomework 2Homework 1Hwk 1

4

Tues

Sep

13

Subtyping of Arrow Types, Exceptions

 

Module 1: Section 2.2Topic 2.2 Lecture ,  Topic 2.2 Demonstrationlec9-slides  

 

Thur

Sep

 

Module 1: Section 3.4Topic 3.4 Lecture , Topic 3.4 Demonstrationlec11-slides 

15

Abstract Datatypes 2, Recursively Defined Types

  

5

Tues

Sep

20

Recursively Defined Types 2, Functions as Values

 

 

Module 1: Sections 3.5, 3.6Topic 3.5 Lecture, Topic 3.5 Demonstration, Topic 3.6 Lecture,  Topic 3.6 Demonstration  lec12-slides 

 

 

Thurs

Sep

 

Module 1: Section 4.5Topic 4.5 Lecture,  Topic 4.5 Demonstrationlec14-slides

Homework 3

hw_3.zip

22

Higher-Order Functions

Hwk 2Hwk 1

6

Tues

Sep

27

Functions as Values, Parametric Types

  

 

Thur

 

Thurs

Oct 1

 

Module 1: Sections 4.2, 4.3Topic 4.2 Lecture,  Topic 4.2 Demonstration, Topic 4.3 Lecture,  Topic 4.3 Demonstrationlec16-slides

Sep 29

Currying, Fold, Flatmap, and For Expressions

  

7

Tues

Oct

04

For Expressions, Monads, The Environment Model

 

 Topic 4.6 Lecture,  Topic 4.6 Demonstrationlec18-slides 

 

Thurs

Oct

06

"Growing a Language," Guy L. Steele, Jr.

Hwk 3Hwk 2

 

  lec19-slidesExam 1 

8

Tues

Oct

11

MIDTERM RECESS

  

 

 

 

 

Thurs

Oct 15

 

Module 1: Sections 3.5, 3.6Topic 5.1 Lecture, Topic 5.1 Demonstration, Topic 5.2 Lecture, Topic 5.2 Demonstration, Topic 5.3 Lecture, Topic 5.3 Demonstration lec20-slides

Thur

Oct 13

Scala Collections Classes, Traits

  

9

Tues

Oct

18

Call-by-Name, Type Environments, Generative Recursion

 

  lec21-slides 

 

Thur

Thurs

Oct

20

Strategies for Generative Recursion

Hwk 4Hwk 3

 

 Topic 6.1 Lecture, Topic 6.1 Demonstration, Topic 6.2 Lecture, Topic 6.2 Demonstration, Topic 6.3 Lecture, Topic 6.3 Demonstration lec23-slides

 

 

10

Tues

Oct

25

Accumulators

 

 Topic 6.6 Lecture, Topic 6.6 Demonstration lec24-slides  

 

Thur

Oct

27

Functional Data Structures

 lec26-slides 

 

11

Tues

Nov

01

Streams, State, Mutation 

 

 

 Topic 7.2 Lecturelec27-slides 

 

Thur

Thurs

Nov

03

Mechanical Proof Checkin, The Curry-Howard Isomorphism

Hwk 5Hwk 4

 

 Topic 7.5 Lecturelec29-slides

 

 

12

Tues

Nov

08

The State Monad

  

 

 Lecture & demo quizzes for topics 7.5, 7.6

Thur

Nov 10

Additional Scala Features, Extractors, Parser Combinators

 

Thurs

Nov 12

  lec31-slides 

 

13

Tues

Nov

15

More Parser Combinators, Actors and Concurrency  

  lec33-slides

 

Homework 4 (now due by 11:59pm on April 12th)

 

Thurs

Nov 19

 

  lec34-slides

Homework 5

hw_5_boruvka.zip

 

 

Thur

Nov 17

Tactical Theorem Proving

Hwk 6Hwk 5
14TuesNov 22Project Fortress  

 

Thur

Nov

24

THANKSGIVING

  lec37-slides

 

 

15

Tues

Dec 1

Nov 28

Functional Distributed Computing 

  lec38-slides
 

 

ThurThursDec 01      

Grading, Honor Code Policy, Processes and Procedures

Grading will be based on your performance on five homeworks (weighted 40% in all), two exams (weighted 20% each), weekly lab exercises (weighted 10% in all), and class participation including worksheets, in-class Q&A, Piazza participation, and online quizzes (weighted 10% in all).

The purpose of the homeworks is to train you to solve problems and to help deepen your understanding of concepts introduced in class. Homeworks are due on the dates and times specified in the course schedule. Please turn in all your homeworks using the subversion system set up for the class. Homework is worth full credit when turned in on time. A 10% penalty per day will be levied on late homeworks, up to a maximum of 6 days. No submissions will be accepted more than 6 days after the due date.

As in COMP 321, all students will be given 3 slip days to use throughout the semester. When you use a slip day, you will receive up to 24 additional hours to complete the assignment. You may use these slip days in any way you see fit (3 days on one assignment, 1 day each on 3 assignments, etc.). The only requirement for use of your slip days is that you e-mail the instructors prior to the time the assignment is due. On group projects, each student in the group must use a slip day in order to extend the deadline for the assignment.  When slip days are used, you should clearly indicate so at the beginning of the assignment writeup.  Other than slip days, no extensions will be given unless there are exceptional circumstances (such as severe sickness, not because you have too much other work). Such extensions must be requested and approved by the instructor (via e-mail, phone, or in person) before the due date for the assignment. Last minute requests are likely to be denied.

You will be expected to follow the Honor Code in all homeworks and exams.  All submitted homeworks are expected to be the result of your individual effort. You are free to discuss course material and approaches to homework problems with your other classmates, the teaching assistants and the professor, but you should never misrepresent someone else’s work as your own. If you use any material from external sources, you must provide proper attribution ( as shown here).  Exams 1 and 2 test your individual understanding and knowledge of the material. Exams are closed-book, and collaboration on exams is strictly forbidden. Finally, it is also your responsibility to protect your homeworks and exams from unauthorized access. 

Graded homeworks will be returned to you via email, and exams as marked-up hardcopies. If you believe we have made an error in grading your homework or exam, please bring the matter to our attention within one week.

Accommodations for Students with Special Needs

...

Course Wrap Up Hwk 6