Student Side
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:
- Violations can be extremely unpleasant to deal with (on my side), and can have potential disastrous effects (on your side).
- My main goal in this course is to make sure that you learn the material (sounds like a cliché, but true). Cheating will not only counter that, it will also greatly increase your chances of badly crashing the PLQs, and ultimately your chance of failing.
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 I-will-behave
to
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.
Teacher Side
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.
- Feedback of any kind is always welcome. Teaching is a two side conversation: if you have a question in class, you should always ask. Even if I’m talking. Even if we’re in the middle of a PLQ. If it’s not a public question, ask in office hours, in an email or any other way.
- I always read emails and posts, and I do my best to reply (except that life might delay those replies).
- Asking questions about homework grading does not lead to retaliation in the form of “oh, you’re right, this grading is a mistake here’s N points back, but now I see that over on that part you made that other mistake, so let me take back M points”. I never do that.
- If you have some negative feedback and you’re still worried, feel free to make up a throwaway account somewhere and email from there. (There are even services that will give you one-shot email address, though they’re not great if you want to read replies.)
- Transparency is an important part of communication. If you’re wondering why something is done the way it’s done, feel free to talk about it. I’ll explain the reasoning and will be happy to get feedback if you have any suggestions.
-
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.
- As an extreme example, if the whole class gets grades that are below 50 then it is safe to assume that there was a problem with teaching / grading / whatever, and final grades will be given accordingly. I will never conclude that “it just happens that this semester (all) students were weak” in such a case.
- This goes in the other direction too: as an extreme example on the other side, if all grades are 95 and above, and you got a 95, then don’t expect a good grade.
- The bottom line is that there are enough students that your place on the overall curve is a very good indicator for how you’re doing in general.
-
I always take students seriously. Examples:
- If I reply to a homework grading issue with a lot of verbiage, it’s because I think that understanding the feedback is important, not because I want dismiss your work and make you feel bad.
- If I tell you something in class that sounds dismissive it’s because I want to avoid delaying progress of the whole class. It does not mean that your question is stupid, and you are very encouraged to continue the discussion with me after class, in office hours, or on piazza.
-
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:
- When I say that something is “obvious”, it’s generally from a point of view of someone who has been dealing with this stuff for a long time, and your perspective is obviously (ha!) different. This word is therefore meant to covey that something should be a fundamental fact — that if you don’t follow it then you probably should do some reviewing and/or asking.
- When I say that something is “nonsensical”, I mean precisely that, and none of the common meanings that are attached to that word. For example, a “nonsensical question” means a question that doesn’t make sense. A “nonsense answer” is using the term similarly. In both cases, it does not carry any negative meaning beyond that.
- It often happens that students ask questions that seem obvious to you, but I still reply and say that I don’t understand the question. This happens as a result of the question itself having some unclear parts (confused terminology etc), and then it might sound like I’m being overly picky — but such pickiness comes from small details that can make a big difference, and I usually try to stick with precise language both in what I say and in what I read.
- There are many instances of such picky language that I stick to. Some examples are: we write functions not methods, we have expressions not statements, we bind identifiers and not set variables.
-
Finally, to repeat the above, my goal is for you to learn the material.
- I don’t try to trick you in homework questions, or make you pour hours of sweat into huge projects.
- If the text looks confusing, then ask, and better: suggest edits to improve it. This applies to PLQs too.
- I do my best to avoid time pressure being a factor in your grades, and it’s always fine to consult the material.
- I do PLQs (which you can read about in its own page) instead of exams, and I know that it does have a stressing element, but I do my best to reduce it, and I’m happy to hear further suggestions for improving it.
- More generally, grading is something that is required to assess your knowledge. I do my best to give you as much information as possible, so you should be very aware of how you’re doing. Again, suggestions for improving things are always welcome.
OK. This was quite long. Hopefully it makes the points I wanted to make.