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.