Versions Compared

Key

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

...

Instructor

Dr. Eric Allen

Dr. Corky Cartwright

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

Sağnak Taşırlar

  

Lectures

DCH 1075

Lecture Times

8:00AM - 9:50AM TR

Course Emailcomp311@rice.eduOnline DiscussionPiazza -- Rice Comp 311

 

Description

This class provides an introduction to concepts, principles, and approaches of functional programming. Functional programming is a style of programming 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. It has become increasingly popular in recent years because it offers important advantages in designing, maintaining, and reasoning about programs in modern contexts such as web services, multicore programming, and 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.


...

Week

Day

Date

Topic

Work AssignedWork Due

1

Tues

Aug 2523

Overview, Motivation, Core Scala

 Hwk 0 
 ThurAug 2725The Nature of Doubles, The Design Recipe  Hwk 0

2

TuesSep

01Aug 30

Type Checking, Conditional Functions, Compound Datatypes

  
 ThursSep 0301Grading, DrScala, Tests, Binary Methods, OperatorsHwk 1 

3

Tues

Sep 0806

Abstract Datatypes, Exceptions

  
 ThurSep 1008

Exceptions, Overloading

 Hwk 1

4

Tues

Sep 1513

Recursively Defined Datatypes

  

 

Thur

Sep 1715

First-Class Functions

Hwk 2 

5

Tues

Sep 2220

Functions as Values, Parametric Types, Covariance

  

 

Thurs

Sep 2422

Checking Variance, For-Expressions

  

6

Tues

Sep 2927

Translating For-Expressions, The Environment Model

  

 

ThurOct

01Sep 29

Lexical vs Dynamic Scoping, Call-by-Name, Traits 1

Hwk 3Hwk 2

7

Tues

Oct 0604

Traits 2, Generative Recursion

  

 

Thurs

Oct 0806

More Generative Recursion, Accumulators

  

8

Tues

Oct 1311

MIDTERM RECESS

  

 

Thur

Oct 1513

More Accumulators, Tail Recursion

Hwk 4Hwk 3

9

Tues

Oct 2018

Leftist Heaps, Functional Red-Black Trees

  

 

Thur

Oct 2220

Red Black-Trees Continued, Stream Processing

  

10

Tues

Oct 2725

Guest Lecture: Shams Imam: Coroutines Scala-ProjectTBD

  

 

Thur

Oct 2927

Variable Assignment and Environments

  

11

Tues

Nov 0301

Mutable Objects, Equality, Memoization 

  

 

Thur

Nov 0503

The State Monad, Mechanical Proof Checking

Hwk 5Hwk 4

12

Tues

Nov 1008

Programs as Proofs and the Curry Howard Isomorphism

  

 

Thur

Nov 1210

Additional Scala Features, Extractors, Parser Combinators

  

13

Tues

Nov 1715

More Parser Combinators, Actors and Concurrency

  

 

Thur

Nov 1917

Tactical Theorem Proving

Hwk 6Hwk 5
14TuesNov 2422Guest Lecture: Robert "Corky" Cartwright: The Y CombinatorTBD  

 

Thur

Nov 2624

THANKSGIVING

  

15

TuesDec

01Nov 28

Functional Distributed Computing

  
 ThurDec 0301Course Wrap Up Hwk 6
   Homework 6 Survey Results