The course grade will be determined as follows:
This semester, we will use "active learning" during lectures. You will need to attend every lecture and bring your laptop with you everyday. Download the lecture stubs before class begins.
There will be graded activities during almost every class. To make the most of our limited in-class time, you may be instructed to read lectures notes or watch videos before class.
“If you want to go quickly, go alone. If you want to go far, go together.”
You will need to complete both in-class work and most of the homework assignments in small groups of two or three students. For shorter assignments, these groups will be randomly assigned so that you will get a chance to interact with more of your classmates.
CIS 552 uses group work because programming is more than just correctness; it is also design and communication, especially with respect to interfaces and abstractions. You are expected to not just solve the problems; but to also talk with your partner(s) about the design of your solution.
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.
This course will abide by Penn's code of academic integrity.
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 and between different groups.
Learning from web resources and reading code is also vital to your understanding. We encourage you to read the blog posts, Haskell textbooks, and watch videos.
However, there is a line between referring to freely available and educational resources, and deception.
In general: You should never COPY code from any source and present it as your own. That's plagiarism and it's wrong.
If you do take advantage of external resources, you must note this in the comments of your code. Be careful of too much web surfing---your grade will be based on your contributions, not your ability to search.
Because CIS 552 is a course and not a developer job, there are times that we will ask you to refrain from using standard libraries or referring to (easily accessible) solutions. I believe in the importance of practice (and the Dunning-Kruger effect) so I will ask you to do things that you may believe you have already mastered.
Don't be a cheater.
Some reference materials should never be used for this course: solutions to exercises from other groups in the class, from previous versions of the class (or from similar courses at other universities), or from solutions solicited from Haskell community sites or Rent-A-Coder. If you use these sources, I will find out. I use automatic tools to detect unallowable collaboration and code use.
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. I will likely also refer you to Penn's Office of Student Conduct for reprimand.