CSci 555: Functional Programming
Spring Semester 2019
Syllabus

H. Conrad Cunningham

23 January 2019

Course Overview

Catalog Description

CSci 555, Functional Programming:
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.

I expect students to have previous programming experience and knowledge similar to completion of the CSci 111-112-211 sequence (which uses object-oriented programming in Java). I also expect students to have a basic understanding of discrete mathematics (e.g. sets, relations, functions, induction, and simple algebraic concepts) similar to completion of Math 301.

Position in Curricula

CSci 555, Functional Programming, is an elective course for the BA, BSCS, MS, and PhD programs in computer science. It can satisfy the programming intensive requirement of the MS and PhD emphases in computer science.

Course Goals

  1. This course enables graduate and upper-division undergraduate students to develop nontrivial computer programs within the functional programming paradigm using the chosen language. The programs should correctly meet their requirements, be algorithmically efficient, be robust and flexible, and be developed using appropriate design and programming methods.

  2. The students should learn to think and to solve problems using the concepts of functional programming and be able to apply those concepts in languages other than the chosen language for the course.

For the Spring 2019 semester, this course will use the polymorphically statically typed, hybrid object-functional programming language Scala.

Course Student Outcomes

Upon successful completion of the course, students will be able to:

  1. describe the concepts of the functional programming paradigm (BSCS outcome 6)

  2. recognize syntactically and semantically correct functional programs written in the chosen language (BSCS outcome 6)

  3. analyze complex computing problems and identify the requirements for functional programming solutions (BSCS outcome 1)

  4. develop (i.e. design, implement, execute, and test) functional programs written in the chosen language that satisfy their requirements (BSCS outcomes 2, 6)

  5. evaluate alternative functional programs to determine which are better according to selected criteria (BSCS outcomes 2, 6)

  6. relate the concepts and methods for functional programming in the chosen language to their previous programming knowledge and experiences (BSCS outcomes 2, 6)

  7. be more confident as computer programmers using a variety of languages and techniques (BSCS outcomes 1, 2, 6)

  8. appreciate the ability to exploit the abstraction and mathematical properties of a purely functional programs and languages (BSCS outcome 6)

  9. study and learn a programming paradigm and language with which they previously had little knowledge (BSCS outcomes 2, 6)

  10. use and construct libraries that abstract recurring program aspects using features the chosen language (BSCS outcomes 2, 6)

Students taking the course for graduate credit must demonstrate the ability to analyze scientific literature on functional programming or related topics.

Spring 2018 Section Details

Time and Place

11:00-11:50 a.m. Monday-Wednesday-Friday; Hume Hall 110

Instructor

Dr. H. Conrad Cunningham Professor, Computer and Information Science
Office: 211 Weir Hall
Telephone: (662) 915-5358
Email:
Web: http://www.cs.olemiss.edu/~hcc
Office hours: Monday-Wednesday 1:00 - 3:00 p.m. (or by arrangement)

Teaching Assistant

None for the Spring 2019 semester

Communication Policy

Students may contact the instructor by telephone or email or meet him during his office hours. He will attempt to respond to email and telephone messages within 24 hours during the work week. Emails or telephone calls arriving outside the 8:00 a.m. to 5:00 p.m., Monday-Friday workday may be deferred until the next workday.

When needed, the instructor uses Blackboard’s announcement feature to send messages to the entire class. This feature sends emails to the class members and archives them on Blackboard’s course announcement page.

Methods of Instruction

The instructional methods used in this course include readings from the textbooks and other course material; classroom lectures, discussions, and activities; programming and other assignments, quizzes, and a semester project.

Course Materials

I will maintain a CSci 555 course website at:

http://www.cs.olemiss.edu/~hcc/csci555/csci555.html

Most of the course materials will be linked to the Lecture Notes page. Any restricted access materials will be posted to the course’s Blackboard site.

There is no required textbook, but I submitted the following as a recommended reference book on Scala:

Other materials I have used in the past for my Scala-based courses:

For some material, we will use selected chapters or sections of:

Hardware

The course does not require any special hardware. Students may use the Department’s Adler lab facilities or servers or use their own desktop or laptop systems to complete the programming assignments.

Software

To complete the course, students need the following software available on the computer at which they will do their work:

Technical Support

Contact the instructor concerning any issues related to installation and use of the language software or if access is needed to Department of Computer and Information Science computing facilities.

Course Topics

The course is expected to cover many of the following topics. Of course, this list is subject to refinement as the semester progresses.

Course Expectations and Attendance Policy

The instructor expects each student to attend class and participate during each scheduled class period and to complete the required out-of-class assignments by the stated deadlines.

All students are expected to study the relevant portions of the course materials in conjunction with the class discussions (i.e. before coming to class). Explicit reading assignments will not always be given. If in doubt on what you need to read, please ask the instructor.

Grading

Component Weight
Assignments 45
Quizzes 30
Semester Project 15
Class Participation 10

Assignments and Projects

Examinations and Quizzes

University of Mississippi Policies

Disability Access and Inclusion

The University of Mississippi is committed to the creation of inclusive learning environments for all students. If there are aspects of the instruction or design of this course that result in barriers to your full inclusion and participation, or to accurate assessment of your achievement, please contact the course instructor as soon as possible. Barriers may include, but are not necessarily limited to, timed exams and in-class assignments, difficulty with the acquisition of lecture content, inaccessible web content, and the use of non-captioned or non-transcribed video and audio files.

If you are approved through Student Disability Services (SDS), you must log in to your Rebel Access portal at https://sds.olemiss.edu to request approved accommodations. If you are NOT approved through SDS, you must contact Student Disability Services at 662-915-7128 so the office can:

  1. determine your eligibility for accommodations,
  2. disseminate to your instructors a Faculty Notification Letter,
  3. facilitate the removal of barriers, and
  4. ensure you have equal access to the same opportunities for success that are available to all students.

Any student requesting accommodation under this policy should present the instructor with the required documentation early in the semester and make arrangements in advance for each examination or assignment.

Copyrighted Materials

Materials used in connection with this course may be subject to copyright protection under Title 17 of the United States Code. Under certain Fair Use circumstances specified by law, copies may be made for private study, scholarship, or research.

Students should not share electronic copies of copyrighted materials with unauthorized users. Violations of copyright laws could subject individuals to federal and state civil penalties and criminal liability as well as disciplinary action under University policies.

Appropriate Use of Information Technology

The Information Technology (IT) Appropriate Use Policy sets forth the privileges of and restrictions on students, faculty, staff, and other users with respect to the computing and telecommunications systems offered by the University of Mississippi (UM). This policy is designed to protect the University community from illegal or damaging actions by individuals, either knowingly or unknowingly. Inappropriate use exposes the University to risks, including virus attacks, compromise of network systems and services, and legal issues. This policy directly addresses copyright issues related to illegal downloads and peer-to-peer file sharing.

For questions about the Appropriate Use Policy, send an email to aup@olemiss.edu.

Academic Integrity

The University of Mississippi seeks to support and sustain a safe and scholarly community of learning dedicated to nurturing excellence inside and outside the classroom. The University expects all students to familiarize themselves with the values and standards reflected in its policies and to honor those values and standards in their conduct as individuals and groups. These policies are outlined in the M Book. The University Policy Directory gives a complete listing of the policies.

As a student in Computer Science Senior Project, 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 and College of Liberal Arts, University of Mississippi, and discipline of computer science.

This course will strictly follow the University’s academic discipline policies and procedures. Academic misconduct may result in penalties ranging from a grade reduction on an assignment to expulsion from the course, depending on the severity of the violation.

Verification of Student Attendance

The University must abide by Federal guidelines to verify the participation of students. For all course types, including thesis, internships, labs, online courses, etc., the instructor must verify your participation based on some type of participation. In this course, the instructor will verify the physical attendance of each student and report it during the first two weeks and otherwise as required.

Student Privacy Policy

The University of Mississippi protects the privacy of all students, including online and distance learning students, through adherence to the Family Educational Rights and Privacy Act of 1974 (FERPA) through compliance with other institutional policies and procedures governing the management and security of protected information of faculty, staff, and students, and by outlining the expectations of privacy for the university community as regards to electronic information. See the Student Information and Privacy Policy for more information.