Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Add final lecture videos

...

Instructors

Dr. Nick Vrvilo (2σ)

Dr. Corky Cartwright

Graduate TAs
  • Yao-Hsiang Yang
  • Weixi Zhu
Undergraduate TAs
  • Nate Kim

Lectures

MEL 251 (Mechanical Laboratories)

Lecture Times

4pm–5:15pm TR

Course Email?{nick.vrvilo,cork}@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. There will also be a final exam, as described in the syllabus.

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
NickBy AppointmentAvailable after class--
Corky

Wednesday

Tuesday, Thursday

2pm-4pm2pm–4pm

9:15am-1015am–10:30am

DCH 3110

DCH 3104

TATAs-Check Piazza--
Textbooks
Online Videos
Development Environment

 

...

Week

Day

Date

Topic

Work AssignedWork Due

1

Tu

Aug 22

Overview, Motivation

  
 ThAug 24What are Types, Core ScalaHwk 0 

2

Tu

Aug 3029

  
 ThursThSep 01Aug 31  

3

Tu

Sep 0605

Doubles, Programming with Intention, The Design Recipe

  
 ThurThSep 0807Functions on Ranges, Point Values, Compound Datatypes*  

4

Tu

Sep 1312

Methods, Grading, DrScala*

  

 

Th

Sep 1514

Static Type Checking, Abstract Datatypes*

Hwk 1 

5

Tu

Sep 2019

Abstract Datatypes 2, Recursively Defined TypesSubtyping of Arrow Types, Exceptions*

  

 

Th

Sep 2221

Abstract Datatypes 2, Recursively Defined Types *2, Functions as Values

  

6

Tu

Sep 2726

1st-Class Functions, Imports, Variable & Named Args Recursively Defined Types 2, Functions as Values*

  

 

Th

Sep 29 Higher-Order Functions* 28

Exceptions, String Formatting, Generic Types

Hwk 2Hwk 1

7

Tu

Oct 0403

Covariance and Contravariance, ...Functions as Values, Parametric Types*  

 

Th

Oct 0605

... Currying, Fold, Flatmap, and For Expressions "Growing a Language," Guy L. Steele, Jr.*

  

8

Tu

Oct 1110

MIDTERM RECESS

  

 

Th

Oct 1312

CurryingType Hierarchy, FoldOverrides, Flatmap, and For Expressions*Exceptions, Operators

Hwk 3Hwk 2

9

Tu

Oct 1817

For Expressions, Monads, The Environment Model* 

 

Th

Oct 2019

Scala Collections Classes, Traits*

  

10

Tu

Oct 2524

Call-by-Name, Type Environments, Generative Recursion*

  

 

Th

Oct 2726

Strategies for Generative Recursion*

Hwk 4Hwk 3

11

Tu

Nov 01Oct 31

Accumulators*

  

 

Th

Nov 0302

Functional Data Structures*

  

12

Tu

Nov 0807

Streams, State, Mutation*

  

 

Th

Nov 1009

Mechanical Proof Checkin, The Curry-Howard Isomorphism*

Hwk 5Hwk 4

13

Tu

Nov 1514

The State Monad*

  

 

Th

Nov 1716

Additional Scala Features, Extractors, Parser Combinators*

 Hwk 5 
14TuesTuNov 2221More Parser Combinators, Actors and Concurrency*Hwk 6 (Optional)Hwk 5 

 

Th

Nov 2423

THANKSGIVING

  

15

Tu

Nov 28

Functional Distributed Computing*

  
 ThurThDec 01Nov 30Videos: What to Leave Implicit and ImpromptuCourse Wrap Up Hwk 5 & 6
16TuDec 05Study Days (no classes)  

 

F

Dec 08

Final Exam (DH 1064 at 2pm)

  

* Lectures slides not yet updated from last year are marked with an asterisk.