The course grade will be determined as follows:
Homeworks should be uploaded via the class website by the given due date. The late period for homework submission will be 48 hours after the deadline. Assignments submitted up to 24 hours late will receive a 10 point penalty. Assignments submitted up to 48 hours late will receive a 20 point penalty. After 48 hours, no homework will be accepted.
Homeworks may be submitted multiple times to the course website. Only the latest assignment will be graded. If that latest submission is during the late period, then the assignment will receive a late penalty, even if earlier versions of the assignment were submitted on time.
Homework peer review
Part of your homework grade may come from a peer review of other student's assignments. You will receive instructions on this process as part of the homework assignment.
One goal of this course is practice with oral and written technical communication. Clarity is a skill that is developed only through practice.
Class participation grades will come (qualitatively) from several sources: code walkthroughs in class homework discussions, in-class exercises, questions and comments during class lectures, questions during instructor office hours, questions and answers on piazza.
Please bring your laptop to every class and download the lecture stubs before class begins.
This course will abide by Penn's code of academic integrity.
Of course, many sources of information are available that could help you to come up with the answer for the homework assignment. However, some of those sources are detrimental to the learning process. Therefore, the course instructors have selected specific references that are the only ones that may be used while completing your homework assignments.
Examples of reference materials that should never be used for this course: textbooks not listed on the references webpage, solutions to exercises from previous versions of the class (or from similar courses at other universities), source code from blog posts, source code from packages on hackage, source code solicited or discovered from haskell-cafe, #haskell, StackOverflow, or Rent-A-Coder. If you use these sources, we will find out.
In short: You should never COPY code from any source and present it as your own. That's plagiarism and it's wrong.
If you want to include external code in your solution, the best way is to import the package from hackage. If that code is not available on hackage, then clearly identify the external code in your solution.
Violations of this policy will be dealt with severely. For a first violation (on a homework assignment), the penalty will be from 0 to up to triple loss of credit. For a repeat violation, or for a violation on the project, the student will be forwarded to Penn's Office of Student Conduct.
We will use automatic tools to detect unallowable collaboration and code use. Don't be a cheater, you will be caught.
Class discussion and group study
Learning from your peer students is an important component of any course. Therefore, we encourage both high-level ("What does it mean to be a fold?") and low-level ("Why doesn't my code typecheck?") questions among class members.
However, to make sure that all class members get an equal chance to participate in such discussions, we encourage you to have such discussions in public: in class, on piazza, and during office hours. Even if you are in the same room as your classmate, and want to ask a question, please post it to piazza, so that everyone in the class may benefit from the question and answer.