15-150 Principles of Functional Programming


Course Level:UndergraduateUnits: 12Special Permission Required: No
(if yes, please see Notes)

Frequency Offered: Generally offered every Fall & Spring, some summers - confirm course offerings for upcoming semesters by accessing the university Schedule of Classes.

Course Relevance (who should take this course?): Intro level course to functional programming.

Course Website: http://www.cs.cmu.edu/~15150/
Key Topics:Background Knowledge:Assessment Structure:
  • Recursion
  • Specifications and Correctness Proofs
  • Work and Span Analysis
  • Parallelism
  • Polymorphism
  • Higher-order Functions
  • Modular Programming

Basic mathematical background such as ability to do proof by induction, and familiarity with the core mathematical structures of Computer Science, such as sets, relations, graphs, and trees.

Sample class notes: None provided

Sample Assignment:

  • Homework (35%)
  • Labs (10%)
  • Midterms (30%)
  • Final (25%)

Sample Exam: None provided

Sample Lecture Recording: Typically no recorded lectures

Most Recent Syllabus: http://www.cs.cmu.edu/~15150 
Course Goals/Objectives:
  • Write well-typed functional programs using the language ML
  • Develop specifications and prove program correctness using rigorous techniques  
  • Apply equational, evaluational, and compositional reasoning techniques, and use mathematical and structural induction in proofs  
  • Analyze sequential and parallel running time of programs using the concepts of work and span  
  • Develop cost graphs and recurrences from programs, and use them to derive asymptotic bounds on work and span  
  • Use abstract types and modules to structure code with clear and well-designed interfaces  
  • Identify opportunities for parallelism in code and exploit parallelism by choosing appropriate data structures and function designs 
Learning ResourcesPre-reqs, Cross list, RelatedNotes
  • Lecture Notes by the course instructors
  • Piazza forum for Q&A and discussions
  • git to distribute homeworks
  • There are also well-known textbooks on introduction to functional programming in ML for those who seek additional resources.
  • Prerequisites Required: (15-151 or 21-127 or 21-128) and (15-112 or 15-122)
  • Minimum Grades in Prereqs:
    C in 15-151, C in 21-127, C in 15-112
  • Corequisites: None
  • Prerequisite for: 15-210
  • Anti-requisites: None
  • Cross-Listed: None
  • Substitutes: 15-122 for 15-112, 21-127 for 15-151, 21-128 for 21-127, 15-151 for 21-127
  • Related Courses: 15-210
  • Reservations: Priority given to undergraduates
Department Website:College Website:Updated November 2017
https://www.csd.cs.cmu.eduhttps://www.cs.cmu.edu/ Back to Course Profile List