15-150 Principles of Functional Programming 15-150 - COURSE PROFILECourse 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:RecursionSpecifications and Correctness ProofsWork and Span AnalysisParallelismPolymorphismHigher-order FunctionsModular ProgrammingBasic 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 providedSample Assignment:http://www.cs.cmu.edu/~15150/assign.htmlHomework (35%)Labs (10%)Midterms (30%)Final (25%)Sample Exam: None providedSample Lecture Recording: Typically no recorded lecturesMost Recent Syllabus: http://www.cs.cmu.edu/~15150 Course Goals/Objectives:Write well-typed functional programs using the language MLDevelop 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, RelatedNotesLecture Notes by the course instructorsPiazza forum for Q&A and discussionsgit to distribute homeworksThere 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-112Corequisites: NonePrerequisite for: 15-210Anti-requisites: NoneCross-Listed: NoneSubstitutes: 15-122 for 15-112, 21-127 for 15-151, 21-128 for 21-127, 15-151 for 21-127Related Courses: 15-210Reservations: Priority given to undergraduatesNoneDepartment Website:College Website:Updated November 2017https://www.csd.cs.cmu.eduhttps://www.cs.cmu.edu/ Back to Course Profile List