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:
- 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
- know and understand the basic syntax, semantics, and pragmatics
of the polymorphically statically typed, hybrid object-functional
programming language Scala
- can analyze problems and apply functional programming concepts
and techniques to develop appropriate Scala programs to solve the
problems
- 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)
- Programming paradigms. Functional programming concepts.
- Introduction to Scala (for Java programmers)--functions,
recursion, objects, classes, case classes, pattern matching, traits,
generics.
- Functional programming. Referential
transparency. Recursion. Higher-order functions. First-class
functions. Polymorphism. Programming patterns.
- Type-driven design
- Functional data structures.
- Error handling.
- Strictness and laziness. Infinite streams.
- Purely functional state.
- Functional API design.
- Functional game programming.
- 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
- Students taking this 500-level course for graduate credit
will have somewhat different tasks to complete on the assignments than
students enrolled for undergraduate credit. Graduate students may have
additional or alternative assignments in which they must demonstrate
the ability to analyze scientific literature.
- The instructor expects all students to study the relevant
portions of the textbook, handouts, and examples related to class
discussions (i.e. before coming to class). The instructor will not
always make explicit reading assignments. If in doubt on what you need
to read, please ask the instructor.
- The instructor plans several (approximately six) major
homework assignments during the semester. Some of the assignments may
be called "projects" and have more credit than the "regular"
assignments.
-
Unless otherwise stated in the assignment description, each
individual student must carry out an assignment without inappropriate
collaboration with others, as described in the Professional Conduct section.
-
In preparing and submitting your homework assignments:
- Give your full name, the course number or name, and the
assignment identifier in files submitted electronically and on any
papers submitted physically. As needed, clearly identify individual
exercises or parts of the assignment. If it is a group assignment,
give the group identifier and the names of all members.
- For handwritten assignments, write legibly on only one side of
the paper in a black or blue pen or dark pencil. Do NOT use red or
green ink!
- For paper submissions, staple your pages in the upper left corner
of the front side.
- The instructor will assign several computer programs during
the semester.
- Most assignments will require you to use the functional
programming features of the hybrid object-functional programming
language Scala. Some assignments may use other languages as given in
the assignment description.
- Unless otherwise directed by the assignment description or
instructor, submit the assignment's files electronically to the
course's Blackboard site. Submit all program source code files,
appropriate design documentation, appropriate test programs or
scripts, and any instructions needed for building and executing the
program. Be sure to add appropriate comments to your program source
code.
- Choose file names carefully and label your assignment as
described above.
- Unless otherwise directed, also submit a paper copy of your
program to the instructor.
- Remember that if the instructor cannot identify your program
among those of other students or cannot build and execute your
program, then he cannot grade it.
- The instructor may give a few in-class assignments,
presentations, or quizzes that count toward the assignment/project
portion of the grade. The instructor expects all students to complete
the homework assignments and submit them by their due dates. If an
assignment is submitted late, the instructor may impose a
penalty of 10 percent of that assignment's grade for
each day it is late. The instructor will not accept a homework paper
after the graded papers have been returned, after a solution has been
distributed, after the final examination, or after the instructor
announces no further submissions will be accepted.
Examinations
- There will be three examinations, including the final. The final
examination is optional and can replace one of the other examinations.
- The examination portion of the semester grade will be
calculated by averaging the two best examination grades.
- The two mid-term exams will be spaced more or less evening
through the semester.
- The final examination will be given during the final
examination period. Please do not ask to take the final examination
earlier than the time set for the entire class.
- Each exam will cover all topics studied to that point.
- Each exam may consist of a combination of in-class and take-home
components.
- If you cannot take an examination at the scheduled time because
of an illness or other special circumstances, please notify
Prof. Cunningham in advance. Without advance notification, it may not
be possible to give a make-up examination.
UP to CSCI 555 root document?
Copyright © 2016, H. Conrad Cunningham
Last modified: Tue Jan 26 11:18:16 CST 2016