Syllabus
Programming in
Haskell (CSCI-4966/6966)
Meetings:
TF 12-1:50pm in Carnegie 106
Website: http://www.cs.rpi.edu/~milanova/csci4966
Brief Course Description
The course is an introduction to Haskell. It covers
(subsets of) the Haskell programming language and the theory that underpins it.
Prerequisite: Introduction to Algorithms
Learning Outcomes
The goal is to introduce students to functional
programming, the Haskell programming language, some of its major innovations,
and the theory behind them.
Concretely, students who successfully complete
the course will be able to 1) understand and apply the functional programming
paradigm, 2) read and build non-trivial programs in Haskell, and 3) demonstrate
improved competence across mainstream programming languages such as Python, as
Haskell has influenced those languages in many ways.
Strongly Recommended Textbook
Programming in Haskell,
Second Edition, by Graham
Hutton, Cambridge University Press, 2016.
Homework Assignments
There are 8-10 Haskell programming assignments. Assignments will
be released on Tuesdays and will cover material discussed in lectures that week.
One part of the assignment will have an informal due date on the Friday of that
same week, with the remainder due the following week on Tuesday. Assignments
are individual, unless otherwise
specified.
You have 10 late days for the
entire semester without penalty with a maximum of 5
late days per assignment.
Quizzes
There are about 6 open-notes in-class quizzes, which can be
completed individually or in small groups. We will drop the lowest quiz from
the final grade.
Project
Homeworks are one-module problem sets designed to emphasize
specific concepts. In addition, there is a larger project to be completed in
teams of 2-3 students (recommended) or individually. You will propose a project
3-4 weeks within the semester when we would have covered the core of the
language. You can propose essentially anything, e.g., editors, data structures,
interpreters, other, and code on top of the vast Haskell ecosystem. The project-related
tasks are as follows: 1) project proposal, 2) one or more checkpoints, 3) final
code, and 4) a brief presentation.
Grading
The final grade for the CSCI-4699 section will be computed
according to the formula:
Quizzes - 20%
Homework assignments - 47%
Project - 25%
Attendance and participation - 8%
Letter grade assignment (grade modifiers are subject to
adjustments):
[94 - 100]: A
[90 - 94): A-
[88 - 90): B+
[82 - 88): B
[80 - 82): B-
[78 - 80): C+
[72 - 78): C
[70 - 72): C-
[60 - 70): D
[0 - 60): F.
Graduate Students
The final grade for the CSCI-6699 section will be computed
according to the slightly different formula:
Quizzes - 17%
Homework assignments - 45%
Project - 30%
Attendance and participation - 8%
Some homework assignments may contain additional problems.
In addition, graduate students registered for CSCI-6966 will be expected to
propose and complete a more challenging project.
Academic Integrity
From The Rensselaer Handbook of Student Rights and
Responsibilities (2012-2016): Intellectual integrity and
credibility are the foundation of all academic work. A violation of Academic
Integrity policy is, by definition, considered a flagrant offense to the
educational process. It is taken seriously by students, faculty, and
Rensselaer and will be addressed in an effective manner. If found responsible
for committing academic dishonesty, a student may be subject to one or both
types of penalties: an academic (grade) penalty administered by the professor
and/or disciplinary action through the Rensselaer judicial process described in
this handbook.
Assignments must be completed individually,
unless otherwise stated. Discussion with the instructor, TA and other students
in the class is encouraged, however, carrying out material (e.g., photos,
writing) from a discussion is not allowed. The actual work must be your own.
Submitty has advanced plagiarism detection capabilities, which we will use on
every homework assignment. Excessive
similarities between different submissions will result in grade penalties for all students involved, and a referral to the Dean of Students.
Posting your homework solution on public
websites such as Github is in violation of the course policy as well. However, feel
free to work on Github on your project and if you choose to open source it, do not
forget to include an appropriate license.
Disability Services
Rensselaer Polytechnic Institute is committed to
providing equal access to our educational programs and services for students
with disabilities. If you anticipate or experience academic barriers due
to a disability, please contact the Office of Disability Services for Students
(DSS) (dss@rpi.edu; 518-276-8197) to establish reasonable
accommodations. Once you have been approved for accommodations, please
provide your Faculty Memorandum (a letter provided to students by DSS) to all
faculty members for this course.