Please read this text entirely, and agree to it by following the included instructions. If any part of this is not something that you can agree with, or you think that there is some mistake, please let me know as soon as possible. Note that there are two goals of reading this and agreeing to it:
The university’s OSCCR pages have extensive documentation on things like Academic Integrity and Code of Conduct. I assume that you are familiar with it, and know about things that you should not do. If you haven’t done so in the past, then please take a few minutes to review it now.
Instead of rehashing pieces of these texts, here are a few highlights of things that you should not be doing. These highlights are things that are hopefully obvious, but they are specific cases that have happened in the past — cases that did not end well.
Never take credit for work that you have not done. If you’re running out of time, please email me. If you discuss the homework with other people, please stick to high-level details and do not share code. If you already have discussed solutions with other people by mistake, please let me know about it as soon as possible, and before the homework deadline: there are ways to deal with such cases which are far better than us finding them while grading.
Remember that this also includes submitting a pair homework for a partner that did not participate in the work. As I said, you should let me know about such cases — not to punish your partner, but to get him/her to catch up with the material and avoid failing.
Do not make public posts with your homework code. This includes any kind of public forum, as well as piazza, and also some services like code-paste sites which make snippets world-readable.
If you’re desperate to ask specific questions about your solution, make sure that your question is private.
Never make public repositories of your coursework. When you’re working with your partner, and choose to use some on-line code hosting tool as a way of synchronizing your work with your partner, make sure that it is not publicly visible.
Be aware that violations of this can lead to penalties even after your graduation. In addition, it seems that the only way to take down such public repos is via a DMCA takedown notice, a process that is overall unpleasant (on both sides).
Do not share homework and PLQ texts and/or solutions. Do not do this with any other person who takes the class, as well as people in future semesters that take the course, and people who have taken it in the past.
If you’re taking this course again and have past records of solutions, please do not use them. The best thing that you can do is destroy them to avoid the temptation of using them.
This is in particularly important if you’re re-taking it because you’ve dropped or failed the class in the past and want to make sure that you pass it now. If you have any doubts in doing this, or if you think that it will be boring to do it all again, then please discuss it with me.
If you find any past solutions in any form, please let us know about it as soon as possible. I know that after reading the above you don’t intend to use them, but other people may find them and be tempted to use them, and they end up being caught, suffering penalties, etc. You can prevent all of that by notifying us before it’s too late.
Hopefully needless to say, but don’t copy in PLQs! Seriously. You might be stressed because of whatever reasons, or maybe you have a very bad day since you ate in that cheap joint last night, or whatever. If this is the case, please let me know!
Now that you’ve read this text, take a minute to internalize it. When
you’re done, indicate that you agree with it by binding
a boolean value indicating your agreement.
The following is my side. Consider yourself strongly encouraged to read through it even though it’s not your requirements.
It seems fair to also list here some my self-imposed requirements, beyond those that are part of the job.
I know that Sounds like a cliché, but my main goal is for you to learn the material. Programming languages is a subject that I love (I spent a good chunk of my life on it), and I strongly believe that good CS education should include a good PL class for reasons that go well beyond learning how to implement a language.
Communication is important, in both directions.
I have experience teaching this class, but mistakes are always possible. When there’s enough students (and there are definitely enough), statistics are just common sense.
I always take students seriously. Examples:
I tend to use language in ways that might be surprising to you: this is a result of dealing with this field for many years, having a CS education with a strong emphasis on logic and other formal areas, and having a different native language. A few cases that deserve mention:
Finally, to repeat the above, my goal is for you to learn the material.
OK. This was quite long. Hopefully it makes the points I wanted to make.