Posting on Piazza and following threads contributed by others is crucial for learning and succeeding in this course.

You are likely to learn from others' posts on Piazza, so following them is part of the requirements for this course. Other students will ask questions that will not have occurred to you, and ask about errors that you have yet to make.

Posts on Piazza are the best way for you to ask for clarification on issues that could affect more than just you. One advantage over private email: posts are often answered by other students, before I see them. Whoever answers, communicating via Piazza means that that work of answering can benefit many people.

So if you have a question that could apply to more than just you, or if you have spotted a problem I should correct, first check whether someone has already reported the issue on Piazza. Finding one saves work for both of us. If no post exists, create a new Piazza post yourself.

One example: questions of the form "What is wrong with my answer" belong on Piazza, not in email to me. That is, if you have been told that an answer of yours is wrong on a homework assignment or test, and you cannot understand why after re-visiting the issue, ask on Piazza. Post your answer, anonymously to classmates if you prefer. Lots of students have considered the same assignment or test, so many of them will be able to identify the issue. Others who have the same question stand to be helped by the question and answers.

# use Piazza well

Any wiki needs good users to be useful. So please...

• Choose intelligently between "Start a new followup discussion" versus "reply to [a] followup discussion". Reply to a followup discussion when your comment addresses an already-started conversation. Start a new discussion if your message does not fit well in an existing discussion.

• Organize your thinking and convey it clearly using standard English. Respect your readers by making it as easy as possible to understand what is in your head.

• Use the "insert/ edit link" button to link to supporting material others might enjoy or benefit from.

• Write a title in Piazza's "Summary" field that will help others recognize the post later. This takes effort, but that effort is repaid by the help it gives the mass of readers. For example…

helpful: "missing slot on hw server for hw15"

weak: "hw15?"

• Answer others' questions without merely supplying the solution requested by an assignment. Solutions supplant the thinking that could help the question-asker to learn. Worse, they ruin the opportunity to think for everyone else who visits the Piazza forum.

Try responses like…

• Did you read where the assignment says…
• Recall the part of the class on…
• Your question suggests you went off track when you wrote…

Failure-to-read is probably the most common issue.

And what's the worst outcome if you cannot help the asker? It is ok for them to leave a homework task incomplete. They can learn when the answers are posted.

• Format computer code using Piazza's code blocks. That is, select a section of a post you are creating and then click the "code" button in Piazza's editing toolbar. That will mark the highlighted section as holding text from a program, rather than ordinary English text. That code will then be easier for readers to understand. One example: code blocks preserve spaces at the beginnings of lines, unlike ordinary text.

• Prefer pasting text in a code block over a screen shot. That allows others to see your code better, copy your code electronically, and try your code. Screen shots are sometimes the best fallback for error messages whose text you don't know how to copy (but even for error pop=ups, try control+C first).

• Above all, evince a high level of respect for others — particularly others with whom you disagree. If you educate me or help me change my opinion, I'll be grateful; but if you discourage others' participation, you will damage our community just as it is getting started.

# use Piazza to report my errors

Please use Piazza to report my errors. My most common error is failing to setup a slot on the homework server for the current day's homework.Other examples include broken links on the web site and errors in stating homework problems that interfere with comprehension.

Students occasionally create private Piazza posts or send me email inquiring whether I made an error. Presumably these students are motivated by tact to keep the communication private.

But reporting my errors publicly benefits students in several ways. A public post…

• allows other students to verify whether they see the same problem. Sometimes the issue is with my work, but sometimes the issue is as simple as the original poster's mis-reading the assignment.

• alerts others when I am wrong. That reduces the time they waste on my error, and saves them the time required to report the error.

• provides an opportunity for other students to solve the problem, often before I even learn of it.

My ego can take it. One of the benefits I see in computer programming is that it forces us to confront the fact that we are all wrong, often, and in innovative ways, even when we are sure we are right. Politicians and insecure bosses may think they are always right. But in our sphere, dumb machines tell programmers of errors every time we touch a keyboard. We get used to it. We know it happens to everyone.

Tact is still appreciated of course. I eschew starting sentences to colleagues with phrases like "In yet another bone-headed move, you erred when you…"

Being polite also pays off because I often err in thinking they err. That is, it will often turn out that I misunderstood or mis-read good work on their part. So I gravitate toward introductory phrases like

• I don't understand why you wrote...
• When you said x, did you mean y?

Private communication is appropriate when the subject concerns only the author and me. Examples include questions about the author's grade or an issue that the author wishes to keep private.

# a little respect, including towards friends

Respect others' efforts at understanding.

As obvious as that injunction seems, too many semesters start with violations of it. Typically, a student aims to make another student's question look foolish, or belittles another's solution to a problem. The Piazza on-line forum seems particularly susceptible to noxious posts early in the semester.

When called to account, students have claimed that the objectionable language was directed towards a friend, who knew that the author was kidding.That defense is specious, as a little consideration reveals. First, belittling a friend's contribution in public may offend, even when a private version of the same communication is acceptable.

Consider an exchange like this one:

Mohammed: I've been staring at this code for 10 minutes without figuring out what the error message is whining about. I'd be grateful for any help.

[block of code here]

[error message here]

Kevin: As I've told you before, I am a programming genius, and your pitiful difficulty is beneath my contempt. Plus, we went over this in class at a pace that would try the patience of a two-year-old. Yet you blew it. [etc., etc.]

Maybe Mohammed and Kevin are long-time friends, and that dialog is a fair sample of how they enjoy each other's company. But consider how this interaction strikes a reader who neither knows nor cares how Kevin and Mohammed usually interact. Such a person might easily think "Mohammed's question was a good one, undeserving of abuse. I don't need to expose my questions to ridicule from losers like Kevin, even anonymously. Forget Piazza." That diminishes the whole community. So Kevin's banter is out of place in this forum.

Sarcastic irony deserves specific opprobrium, being "a manner of expression in which the intended meaning is the opposite of what is seemingly expressed" (from Merriam-Webster) Readers can easily miss that a writer means the opposite of what that writer says, and when the direct meaning is cutting or caustic, sarcasm is actively harmful. Be helpful, friendly, courteous, and kind instead.

In contrast, respectful disagreement contributes positively to the community. If another student or I post a solution, you can help the community if you spot an issue with it, or can offer a different solution that is simpler to understand, or more robust, or more efficient. The community benefits by seeing your alternate solution, or by your pointing out disadvantages in the first solution. All of that can occur in a respectful tone.

As so often, Randall Munroe nails it in xkcd. For a contrast, check out how polite writers are on StackOverflow, the professionals' version of Piazza. Here, for example, is the first question I happened to click on in the section on Racket. For another example, Wikipedia's Talk sections on math and comp sci articles are notable for their politeness, compared with other topics. Here's one on quadratic equations.

# anonymous posts are welcome

Even with a supportive community, some students prefer to keep their Piazza postings anonymous from other students. Anonymity facilitates sharing opinions that could appear boastful (poll: "Was test1 too easy?") or avoids perceived embarrassment. In any case, anonymous posts are welcome.

Instructors and teaching assistants see authorship of posts. That oversight has sufficed to keep posts polite in introductory courses.

In APCS, we try running Piazza in the mode where posts can be made anonymously to instructors, too. This has mixed results.

The primary benefit of anonymity that I see is to encourage people to voice respectful dissent with others.

People may be particularly reluctant to voice disagreement with a teacher. It is risky to criticize someone who has been placed in authority over you. You didn't pick the roles in the structure, and they are in a position to cause trouble in your life. Silence is less risky.

But silence is harmful, too. A lot of good can come from saying "Holmes's actions seem unreasonable in case X because..." I might recognize a chance to improve. Others who were wondering whether they were justified in disagreeing with me might receive helpful support. The original writer might benefit from hearing that other students agreed or disagreed with them. Anonymity can boost communication in cases like those.

On the other hand, anonymity seems unnecessary and actively unhelpful when someone has a technical question or answer. That anonymity interferes with building the reputations that the rest of us rely on. To give just one example, when Mr. Konstantinovich says "Model Z is a good solution for the problem you have", I buy Model Z. I have learned that Mr. K's opinions are better than those of some anonymous writer on Yelp who is boosting his brother-in-law's auto repair shop.

In short, balance your choice of whether to attach your name to your statements. Hiding behind anonymity reduces the legitimacy of your statements among many of us.

We use Piazza to post answers to homework, starting some time after students' initial work on Piazza. When you contribute to that posting, the following advice and conventions can help.

## wait until after the due date

We post solutions because people need to check their work. It is common to think one is done with homework without realizing that issues remain. A comparison with posted answers reveals such issues.

But if you post answers before they have struggled with the tasks, they will be sorely tempted to look at your solutions without the struggle that leads to learning.

Teaching assistants who have opined on this matter have unanimously advised against posting answers before their due date. They say that the temptation to copy would be too powerful, so that we could help students by waiting. And these TAs were unusually good students in this course, which means they did the homework. If the temptation to copy would bother even them, it would presumably be even more tempting for students who are on the edge. That seems like normal human nature, and we should take it into account.

## post before 10

Post solutions before 10pm, and preferably earlier. That makes your work useful to others, who are mandated to read the solutions, preferably at the start of work on the next homework.

If you are to post the homework solutions, but your schedule for that day precludes your posting them on time, work with homework manager to re-schedule your obligation to a day when you can fulfill it.

If you failed to do an assignment whose solutions you are to post, take responsibility for seeking help from a classmate, so that you can post a good answer. Payment in chocolate can work.

This may be the most important advice on posting homework solutions.

Bear in mind that the aim of your work is to save work for others. So if someone else started an answer, and yours is substantially similar but with a couple improvements, you will help the many other readers by editing your improvements into the existing answer.

If your work is so similar that you find nothing to improve, don't post yours. You can still help other readers, by endorsing the work of prior posters. That endorsement boosts readers' confidence in the post, which influences their approach to reading it.

Contrast that with the lazier approach, in which a follow-up poster posts the entirety of their answer, even though it is substantially the same as the original post. To understand the improvements, every other reader in the course has to spend the time to understand both solutions.

It takes effort to do the editing. The rest of us will appreciate that effort.

## start a Piazza Question , rather than a Note

For a Question thread, Piazza displays a box for "the students' answer, where students collectively construct a single answer". That is ideal for our use, as discussed above. Note threads lack that box.

## standardized titles

When you start a new thread for an answer, set its "Summary" field to match our convention:

hw??#?? SPOILER
Replace the ?? with appropriate numbers for the assignment and the task / problem.

For example,
     hw15#2 SPOILER
can be expected to answer problem 2 in homework assignment 15.

The SPOILER alert allows students to avoid accidental interference with doing the solo struggle that causes learning.