CSci 555: Functional Programming
Spring Semester 2016
Syllabus


Course Times and Places

Classroom:
235 Weir, Tuesday-Thursday, 9:30 - 10:45 p.m.
Spring break:
14-18 March
Final exam:
Thursday, 12 May, 8:00 a.m.
Home page:
http://www.cs.olemiss.edu/~hcc/csci555/
Blackboard:
Use for gradebook, submission of digital materials, and possibly other purposes

Course Staff

Instructor: Dr. H. Conrad Cunningham, Professor
Email: hcc@cs.olemiss.edu
Office: 211 Weir Hall -- 662-915-5358
Office hours: Monday-Wednesday, 1:00-3:00 p.m. (or by arrangement at other times)

Catalog Description

The principles and techniques of programming with functions. Purely functional programming languages; recursion; higher-order functions; reduction models; strictness; type systems; list operations; infinite data structures; program synthesis and transformation.

Prerequisites

Either CSci 211 and Math 301 or graduate standing.

Anyone who does not have a mature understanding of programming in an imperative language (e.g., Java, C/C++, or Python), of basic algorithms and data structures (e.g., sorting, searching, lists, stacks, and trees), and of basic discrete mathematics (e.g., sets, relations, functions, induction, and simple algebraic concepts) should contact the instructor before enrolling in the course. Successful completion of CSci 111, 112, and 211 and Math 301 should give sufficient background.

Course Outcomes

Upon successful completion of the course, students:
  1. know and understand the fundamental concepts, techniques, and terminology of the functional programming paradigm, including functional abstraction, recursive functions, higher-order functions, first-class functions, lists, streams, and algebraic data types
  2. know and understand the basic syntax, semantics, and pragmatics of the polymorphically statically typed, hybrid object-functional programming language Scala
  3. can analyze problems and apply functional programming concepts and techniques to develop appropriate Scala programs to solve the problems
  4. can evaluate alternative Scala programs to determine which are better according to selected criteria

Source Materials

Required Textbook:
Paul Chiusano and Runar Bjarnason. Functional Programming in Scala, Manning Publications, 2015. ISBN: 978-1617290657. [Manning book page]

Optional Textbook:
Dean Wampler and Alex Payne. Programming Scala: Scalability = Functional Programming + Objects, Second Edition, O'Reilly Media, 2015. ISBN: 978-1-491-94985-6.

Software:
The examples and assignments will use either the Scala Programming language version 2.11. See http://www.scala-lang.org.

Readings:
Various journal and conference articles, research reports, Web documents, and book excerpts as appropriate.

Course Topics (Subject to Refinement)

  1. Programming paradigms. Functional programming concepts.
  2. Introduction to Scala (for Java programmers)--functions, recursion, objects, classes, case classes, pattern matching, traits, generics.
  3. Functional programming. Referential transparency. Recursion. Higher-order functions. First-class functions. Polymorphism. Programming patterns.
  4. Type-driven design
  5. Functional data structures.
  6. Error handling.
  7. Strictness and laziness. Infinite streams.
  8. Purely functional state.
  9. Functional API design.
  10. Functional game programming.
  11. Advanced topics.

Campus Emergencies

The campus Emergency website http://emergency.olemiss.edu informs us about campus-related emergencies arising from weather or other circumstances. It helps us know what we should do in the event of an emergency. All should read the RebAlert text messages and emails and then respond accordingly. RebAlerts enable the University to communicate essential information to the campus community when a disaster occurs.

Class Attendance

The instructor expects all students to participate regularly by attending class; participating in classroom discussions, quizes, and examinations; and submitting homework assignments by their due dates. The instructor will track attendance using various measures. According to University policy (and Federal requirements), the instructor must verify that every student participates in the course during the first two weeks. Any student not participating during that period will be dropped from the course.

Student Disabilities Services

It is University policy to provide, on a flexible and individual basis, reasonable accommodations to students who have disabilities that may affect their ability to participate in course activities or meet course requirements. Students with disabilities are encouraged to contact their instructors to discuss their individual needs for accommodations.

Students should contact the Office of Student Disability Services (http://sds.olemiss.edu/) in 234 Martindale to inquire about the services available and how to request them. Students must submit an Instructor Notification of Classroom Accommodation form to each instructor before direct classroom accommodations will be provided. This must be done on a timely basis so that appropriate accommodations can be arranged.

Professional Conduct

As a student in CSci 555, you are expected to conduct yourself in a professional and ethical manner according to the policies, procedures, and expectations of the Department of Computer and Information Science, School of Engineering, Graduate School, University of Mississippi, and discipline of computer science.

The academic discipline policy of the University of Mississippi will be strictly followed in this course. Violation of the policy may result in anything from failure on an assignment to expulsion from the course, depending on the severity of the violation. The student should refer to the "M" book for general definitions of academic misconduct.

Grading

The grading scale for this class is A [90..100], B [80..90), C [70..80), D [60..70), and F [0..60). However, the instructor will use the +/- grading scale, as appropriate, to provide more fine-grained grading within these ranges.

60 percent of the grade will come from the exam average and 40 percent for the programming and other assignments.

Assignments and Projects

Examinations


UP to CSCI 555 root document?


Copyright © 2016, H. Conrad Cunningham
Last modified: Tue Jan 26 11:18:16 CST 2016