Comp Sci at Stuyvesant with D. Holmes

link Content
notes Holmes's notes for some lessons
hw homework assignments
New assignments will be posted daily, before 16:30 on the school day before their due date. If there is no homework posted by that time, then no new homework is due for that next school day.
Piazza Piazza forum, for communicating among students and instructor(s)
How to succeed with Piazza, especially for issues with homework
hw server homework & grade server. Mr. Brooks wrote this excellent software and supports its use. FAQs

for students joining a class after its first session
requesting a recommendation for college applications
Ubuntu setup and rescue on StuyCS's Ubuntu
syllabi
parents' and caregivers' frequently-asked questions
Stuyvesant Computer Science web site, including grading policy

Table of contents

homework teaches success

Students succeed in this course by understanding the homework. You are unlikely to learn new material at the pace of this course merely by attending class, even if that worked in middle school. Whether you judge success by mastery of the course material, or judge success by grades, understanding the homework is apparently required. To acquire that understanding, you must practice the thinking, look for patterns, find your errors, and revise erroneous attempts. Homework exercises all of those necessities.

Homework requires 20–30 minutes per day for a typical student in an introductory course, and up to 60 minutes per day in the advanced placement course. It commonly takes less for a student with experience in programming, but more for a student who is struggling or catching up.

There are six key elements to doing homework completely and correctly. These apply to many courses in high school and college:

Tests in this course aim to assess the extent to which a student understands the homework. People motivated by grades can boost them via the do–compare–re-do sequence.

keeping up is easier than catching up

Keeping up with homework assignments is challenging but crucial in computer science courses, for several reasons:

homework omits repetition

In fifth grade, math homework typically involves many repetitions of similar problems. Students can learn by repeating similar work until patterns become obvious. Each problem requires only a minute to solve.

That model fails in problem-solving courses like this one, where the problems are larger. It can easily take 10 or 15 minutes to write a program, test it to find errors, and fix those errors. So an assignment that is aimed to take half an hour should require writing at most three such programs. Students can no longer rely on absorbing a pattern through repetition.

Instead, be thoughtful about the problems. Do the significant work that can be required to understand the question. Struggle solo with the solutions, rather than immediately asking for assistance. Write down questions that occur to you, and take the initiative and responsibility to seek answers.

understand homework solutions

You are responsible for understanding solutions for homework problems, by reviewing answers to them. Students and I collaborate on posting answers, usually on Piazza. There are good reasons to study these solutions:

"My computer (or internet connection) broke, so I can't do the homework."

Computer failure happens to everyone eventually. I would like to express my sympathy by lifting the requirement to do homework while awaiting repair or replacement. But from the point of view of keeping up with the homework, a broken computer provides no relief from the problems of falling behind. Students must find a way to keep up. Here are some strategies:

Whatever approach you take, rise to the challenge of keeping up while repairing your computer.

A broken internet connection requires similar thinking. You can use a computer at school, including those in the library and CS Dojo. You can submit homework by carrying it to school on a USB drive and submitting it from school.

corrections on the homework server are shown as late submissions

The homework server records the time of the last submission for each homework slot. So if you submit homework on time, but subsequently submit a correction to it, the homework server will show the submission as late. That happens even if the correction is that you originally submitted the homework to the wrong homework slot, and you re-submit it to the correct slot.

Corrections are helpful. Correcting the content of homework is a great way to learn. Correcting which slot holds which homework helps me if I review it.

The apparent lateness is such a minor problem that you can ignore it. To keep the record straight, you can include a comment with the re-submission, telling me that the original was on time. But look at this from my perspective: I use the timeliness to alert me to students who are falling behind in the course, to spot where a conversation might be helpful. I will ignore a lone late submission, so it is not worth much effort from either of us to avoid a rare appearance of lateness.

Re-submissions overwrite the comments from previous submissions. So if the existing comment has valuable information, copy it before re-submitting, and include the copy in the re-submission.

rubric for homework

Homework is graded with a denominator of 3. The basic grades are…

For submissions that surpass expectations, there is a 10% bonus, resulting in a grade of 3.3

how else to succeed

recommendation: work with a classmate

Working on the homework with another student can help significantly. Some people mistakenly imagine that the benefit derives solely from sharing knowledge, but the success probably stems from a combination of reasons, including…

The CS department, including me, strongly encourages you to experiment and improve at working in pairs.

Some caveats:

keep up when you miss a lesson

As with homework, it is easier to keep up than catch up with the content of lessons. If you miss a day or are confused by a lesson, take remedial action quickly. 

The best way to catch up is to sit with another student from your class to go over their notes, while taking notes yourself. Both of you are likely to benefit; a person who teaches learns from the process, clarifying their own thinking. (I know; I learn from this effect every day.)

The web page on "notes from class" can augment or correct your recollection of what you heard in class. If you don't understand the notes, that confusion provides a starting point for questions.

good students seek help

Too many Stuy students have acquired a wrong impression about seeking help, perhaps because middle school was easy for them. In better high schools and colleges, good students seek help; weak students don't. When I visit the CS Dojo, I usually recognize students there who are among the best in their classes, working in an environment that they have found fun and conducive to success. Try it.

Know these sources of help:

class and community participation

Asking questions or proposing answers helps the askers and answerers. Asking helps askers because they do the hard thinking necessary to identify misunderstandings. Answering helps answerers because they do the hard thinking necessary to verbalize their understanding. In addition, participating in class helps participants stay engaged with the class. Both questions and answers help me assess how well concepts are being communicated.

Many students are initially reluctant to reveal their confusion. Such reluctance is understandable since no one likes being wrong. You can help: work on making class a hospitable environment for the ego-sacrifice of asking questions and proposing answers that could be wrong.

The Piazza on-line forum extends participation beyond the class time. Participating via Piazza is particularly valuable for people who are disinclined to speak during class.

notes help, if used well

Each day, the lesson's aims lesson are displayed as questions, which you are asked to record. Knowing the aims in advance helps you recognize the answers as the lesson covers them. If we both do our jobs well, you should be able to answer those questions after the class

Many Stuy students found notes superfluous in middle school. Material was presented slowly enough, and with enough repetition, that they learned it during class, with no need to refer back to it. However, as you progress through increasingly challenging education, eventually you will reach a level at which you can no longer get by on being a fast learner, because everyone in your class learns as fast as you do, and the pace of the class is sped up accordingly. At that level, learning requires thinking about the material after class, independently. Independent thinking requires recalling the material. Successful students take notes that aid that recollection.

But taking notes is a counter-productive distraction unless you review them soon after taking them. If you never review your notes, or if you store them un-read until the night before an exam, you are likely to learn more by listening and thinking hard during class, without the distraction of taking notes.

Apollo Robbins will convince you in 9 minutes that copying from the board interferes with learning, because you can't think about two things at once. Way cool.

To benefit from notes, good students re-examine them after classes, reminding themselves of the questions, and identifying the answers. Do the review and identification before you start the homework. That timing helps with the homework, because the homework aims to exercise the class's material.

The alternative is more work for less learning. There are often many ways to solve computer problems, and lessons often base new techniques on those taught previously. Homework after the later lessons aims to exercise the new learning. But students who have not reviewed a lesson forget it. Instead, such students try to apply old lessons to new problems. That involves more work than using the newly-taught techniques, and forsakes the opportunity to learn the new techniques.

Algebra students are often introduced to solving quadratic equations by factoring. Later, they are taught the quadratic formula, which is helpful when the quadratic's roots are fractions or complex numbers. Pity the student who ignores the aim of the lesson on the formula, and works hard on the homework trying to guess the factors of x2x–1=0. The effort will be fruitless and it won't help the student understand the formula.

In summary:

how to read

Probably you have been told how to succeed at reading comprehension under time pressure. Often the techniques include…

Sadly, that is not "how to succeed at reading comprehension".
Maybe that is "how to succeed at reading comprehension on a standardized test".
Certainly it is "how to fail at reading comprehension in computer science and math".

Comprehension in this subject requires multiple close readings. Here is a typical sequence for understanding a programming problem:

Optional background reading:

Successful students read differently in different subjects. I learned that only in grad school. Maybe you can learn it sooner. Teachers never told me this before then, presumably because lots of teachers are as ignorant as I was, and for a similar reason: a single reading style had long worked for me in the subjects I liked best, and I got by in the other subjects.

I aim to check my understanding of reading in other subjects with teachers in those subjects. You might also.

Students routinely complain that my writing is hard to read. I may be a particularly bad writer, but there is also another issue: reading computer science text requires serious concentration in every word. Two examples:

Communication is hard. Readers must expect to do their share of the work.

how to write

Problems posed in this course routinely ask for answers in good English sentences. The responses are routinely hard to read, often because they ramble, or constitute only sentence fragments, or lack antecedents for pronouns.

Problems posed in this course routinely impose word limits. Weak students routinely violate those limits.

Avoid these errors by drafting an answer on scrap paper. I cannot answer a hard question in a single draft; it is optimistic, prideful, or foolish for you to expect that you can.

Save words by omitting echoes of my question. For example, if asked "What advantages derive from clear writing?", it is redundant to start your answer with "There are many advantages to clear writing. For example, one should practice clear writing because...". See William Strunk Jr.'s widely-admired advice.

Students have taught me why they make these errors: writing a lot, quickly and poorly, succeeds in other courses. That approach fails in this course.

how to study for a test in a problem-solving course

Answer: solve problems.

Maybe that sounds simplistic or obvious, but lots of otherwise-good students don't know it or do it. Alternatives like "re-read your notes" may have worked well for you in other courses. But to improve as a student, learn to recognize differences between courses, so you can study in ways that accommodate these differences. Don't believe me; listen to Ann Velenchik, an economics professor at Wellesley (a well-respected college for women), explain the issue well in 1 minute. She contrasts "solve problems" with "re-read your notes". (Maybe Dr. Velenchik is addressing guidance counselors in this video.)

Where can you find problems to solve? Here are some answers:

In summary, solve homework problems and review problems and solutions in preparation for tests.

tests

Tests are given on the last day of the week, in accordance with the school's effort to avoid having students take many tests on a single day. Even with this coordination, tests in this course frequently overlap with social studies tests because both are coordinated with the ends of marking periods. 

A test on a particular Friday covers only material from classes through the preceding Wednesday two days earlier, and from homework due before the preceding Thursday's class. That limitation gives people time to learn the material via homework and to ask questions about that homework.

In response to proctoring considerations and students' questions, a large-ish bunch of rules has grown around taking tests I administer:

grades

Grades for this course are calculated almost entirely from grades on tests, quizzes, and a project, if one is assigned. So my best suggestion to students who are motivated by grades are here

Calculating course grades from test grades has advantages over more subjective measures:

Class participation has a little impact on grades, mostly to reward students who contribute to the community by sharing their questions or knowledge. People who are disinclined to contribute by speaking in class can contribute in writing on Piazza.

The Stuyvesant Computer Science web site, includes a section on grading policy. I aim to grade in a way consistent with it.

Focus on grading wastes a student's time. Knowledge of grading fractions cannot help grades much. Rather, it is knowledge of computer science that will help. Rather than spending time focussing on grades, redirect that time into following or contributing to Piazza threads. Everyone will benefit.

extra credit on tests

On tests, students can earn points for perspicuity. If a piece of code or English is so clearly and tersely written that I can verify its correctness in a single reading, it can be worth extra credit. Clear writing is hard in any language, however, so achieving it normally requires drafting the answer on scrap paper, then making a clean copy on the answer sheet.

raising grades

Students who focus on grades occasionally ask for opportunities to earn extra credit to compensate for low grades. I know of no work outside the curriculum to recommend as a remedy. Instead, whatever time a student wants to devote to improving their grade in this course should be devoted to learning the course material and preparing appropriately for the next assessment. My best advice on doing so is in this document.

success from my perspective (optional reading)

I judge my success by the extent to which I have helped people learn to think about computer science problems and improve as students in a course on problem-solving.

It is understandable that a student might acquire the misimpression that teachers want students to do badly on tests, since testing is unpleasant and teachers design tests. On the contrary, I am pleased when a test shows that most students gained a good understanding of the subject (assuming no cheating). I assign myself the grade that is the average of the students' grades. I aim to teach well enough that, on average, students understand 90% of the syllabus. More would be welcome.

I do not judge people by their grades. Do you? Does anyone? (Teachers are weird, of course, but they are not that weird.) I derive little job satisfaction from grades. There are always people who earn high grades, and there are always people who skip the homework and fail. There is little variation in the class averages between semesters.

Instead, job satisfaction stems from the privilege of watching people enjoy a victory over ignorance. One of the pleasures of teaching an introductory course is that most students begin it knowing little of the subject. A few are pessimistic about liking it. And every semester some are surprised to find that, contrary to their expectation, something in their brains lights up when they conquer these problems, or when their hard thinking earns understanding, or when they help someone else understand.

Students' questions and answers — whether right or wrong — help me greatly. Only they can tell me when I have failed to communicate. Asking questions and proposing answers involves sacrificing one's ego, so I am grateful when students make that sacrifice.

understanding and revising grades

Grading tests accurately and fairly takes me significant effort. I take the responsibility seriously.

correcting my processing errors

I make processing errors in grading. By "processing" I mean operations that involve no judgment. Rather, processing errors are mechanical or arithmetic. I welcome the opportunity to correct them. Typical processing errors are

To help me correct one of these errors, show your computation of the score in the top margin of your answer sheet. For example, suppose I found errors worth –1, –2, and –3 points, but I erroneously recorded 92 on the homework server. To help me correct this, show how you arrived at a different answer in the top margin:
    100 – 1 – 2 – 3 = 94
Hand the answer sheet back to me. Unlike disputes about judgment, I will only check your check; I will not re-grade the test.

learn from your errors

Figure out how you erred on tests. That is educational because tests show the elements of the course that I think are important.

In grading tests, I create a rubric to promote consistency, so that similar errors by different students are graded similarly. I publish the rubric with the test. It can communicate the parts of a problem I regard as important and it often lists common errors.

Initial work on figuring out errors must be done by students, without my help, mostly for the educational benefit. In particular, do not ask me for help in the same period that you receive the graded test, since you cannot have thought, asked, or experimented enough in that time.

To find the error in your answers, try some of these steps:

disputing judgment

When both you and I agree that an answer is wrong, please respect my efforts toward fairness and consistency, by accepting my judgment of the penalty.

If the penalty seems high, estimate the fraction of the important parts of the problem you did correctly, as identified in the rubric. For example, if you decide you did an 18-point problem about half right, then a score between 8 and 12 is probably close enough. Contesting the grade is probably not worth the time and risk of requesting that the entire test be re-graded.

If you insist on disputing my judgment, within two school days of the publication of the grade and rubric, write a paragraph explaining the alleged error. Resubmit your work to me, with the explanation. I will re-grade the whole test. I will correct all grading errors I find, in both directions. Your grade may go up or down.

curved grades (optional reading)

I scale grades upwards when fairness requires it. I assume that a typical range of students populates classes I lead. That suggests that average grades in these classes should resemble averages from other teachers.

Multiple choice tests — which other teachers give relatively often — constitute one source of upward bias. That is, if an ignorant person takes a multiple choice test, they expect to score 20% right by accident. But they expect to score 0 on a test where all the answers are based on their knowledge.

Scaling grades adjusts for this inter-teacher disparity. But in larger terms it makes little difference. Skilled, disciplined, interested students do well in both environments. And every semester a few students skip the homework and fail the course. I know no way to help them. Homework teaches success.

optional reading on curving techniques . I use method 4. Since the scaling is based on the raw scores for all test-takers, individuals lack the information to duplicate it. But such checking would be of little value anyway, because I apply the same formula to all grades, so I am unlikely to err on yours alone. In contrast, checking my computation and entry of your raw score is worthwhile, as discussed above.

Holmes's schedule

period activity room
1 teaching 1intro 307
2 teaching 1intro 307
3 teaching 1intro 307
4 usually available 301
5 usually available 301
6 teaching 1intro 307
7 teaching 1intro 307
8 teaching 1intro 307
9 usually available 301
10 usually available 301
after school usually available 301

To make an appointment to talk in person, send email. Tell me… 

I will respond with whether I can meet then.

My office is in room 301, phone extension 3013.

Politeness requires keeping your appointments, or — second best — alerting me in advance if you intend to break an appointment, by calling extension 3013.

Room 301 is somewhat public, in the sense that other teachers are likely to overhear discussions. I have confidence in their discretion, but if you are uncomfortable with that environment, tell me and we will talk someplace that is quieter.

email helps communication

Thought transference from your head to another's is difficult; help the reader by writing carefully. Use standard English, full sentences, verbs, paragraphs, courtesy, organized thoughts, re-reading, revision, spell-checking, and all the other tricks you know for communicating effectively.

Use the subject field of your email to maintain threads that bind related messages together, thereby distinguishing one conversation from others. Indicate content and purpose. A subject like "help!" is useless; it tells the reader nothing except that the author is too lazy to help the reader understand the issue. Expect bad results from telling the reader that.

Send your email to the appropriate address:

your class period send to…
1 1domain
2 2domain
3 3domain
6 6domain
7 7domain
8 8domain

Put your name in the message, perhaps by configuring your email client's display name.

The first sentence of your email should tell the reader why you are writing or what you want. It should answer the reader's implicit question, "Why should I make the large effort to understand the rest of this email?"

In subsequent paragraphs, provide background, explanation, or amplification.

People occasionally try other ways to communicate with me that work less well than the email accounts shown above. Avoid these:

So for best results when you want individual attention, use the appropriate email address from the list above.

Whitelist email from the domain @DavidMHolmes.net, telling your email program that email from that domain should not be considered junk or spam. You may find good advice by Googling
     whitelist
followed by the name of your email program, like
     whitelist gmail

classroom routines

It is widely observed that time is the most critical scarce resource in a class is time. As a student, the scarcity rarely occurred to me; I just had to keep up. But in leading a class, the scarcity rankles constantly. Can we delve far enough into a question to understand why people find it interesting? How much easier will the homework be if more of it is done in pairs in class? What's so cool about tail recursion optimization, and why should I care?

So it is worth establishing routines that save time and disruption.

start of class

Your objective at the start of each class is to create as quickly as possible a mental and physical state in which you are ready to contribute and learn. There are 3 elements:

Finish these steps by the time the late bell rings. Most sophomores have assimilated this timing; I make it explicit here to avoiding embarrassing anyone who has not been taught it yet.

I have sympathy for people who are only now jettisoning the impression from middle school that time before the late bell is free for socializing, because I remember making the transition. But the absurdity of this misconception becomes apparent if you think about college classes. For example, in the first year at a medium-sized university, I was privileged to hear David Wilkinson take time out from his widely-recognized work studying how background radiation supports the big bang theory to teach physics to beginners. And Burton Malkiel had just left President Ford's Council of Economic Advisers to teach Econ 101 to a few hundred first-years. When people like that take 50 minutes to explain what they think you should know, you don't squander the first three looking for a seat and a pencil. Students probably don't make it that far unless they have learned how to prepare to learn. My teaching falls far short of those teachers', but you can certainly operate at the level of their students.

The start-of-class assignment typically asks you to…

You are welcome — indeed, it is probably better — to work in pairs with an immediate neighbor, augmenting each other's notes and jointly identifying answers. If you missed the previous class, seeking help from a classmate is necessary, not just optional.

By this stage in your scholastic career you know the appropriate voice level for group work. As a rule of thumb, if I can distinguish your voice over your colleagues', you are too loud. Learn to murmur.

As adherents of the Cornell note-taking system [1] [2] know, the review contemplated here is actually too little too late. By the time they start college, good students develop the self-discipline to review notes without prompting. That review is most profitably done soon after each day's class. There is no do-now in college, no teacher-designed exercises to help students recall the context of the previous class. Instead, successful students do that review on their own initiative, on a schedule that works for them.

While you are in high school, learn about and experiment with study techniques. To help with that experimentation, I assign techniques, such as the beginning-of-class reviews. By the time you reach college, should have experimented with already-known learning techniques, and internalized the ones that work for you.

Start-of-class routines typically finish within 3 minutes of the late bell, depending on the opening assignment. Four minutes represents 10% of the class time, so you can appreciate the need for discipline.

I cannot address individual concerns before classes. At that time I am trying to start the class as speedily as possible, so attending to individual concerns would delay the entire rest of the class. If you need individual attention for less than a minute — for example, to add a signature to an absence note — wait until the do-now is under way. For longer conversations, make an appointment. Sometimes I can also talk after periods.

arrive on time

Class begins at the late bell.

If you enter the class too late to be working when that bell sounds, sign in on the sheet on the side of the teacher's desk.

Your signing in reminds me to change the attendance sheets, without interrupting the class. Without that reminder and change, the attendance office will record that you cut the class.

your first period

You cannot arrive on time by aiming to arrive on time. For example, if your commute requires 35 minutes and you allow 35 minutes for it, then any delay in the commute means you will be late. Have you ever heard of a delay on the subway?

Big data can help. Check out this cool analysis of data from the MTA, showing the amount of time to add to your commute to change from being late once a week to being late once a month. Here is their advice to me on the "time you'll need to allocate for your commute" after I added my walking time on both ends:

willing to be late…
Once per week 40 minutes
Once per month 43 minutes

That is, it would cost me only 3 minutes to move from being late way, way too often, to being late one-quarter as often.

How much time do you think I should add if I want 95% certainty of being on time every day for a semester? 10 minutes? Are you willing to arrive a little early most days, to be a competent student? "80 percent of life is showing up."

late arrival during a presentation by a student

Presentations by students require heightened manners, since students are often little-used to presenting. If you arrive late while a student is making a presentation, remain unobtrusive, just inside the door, until the student is done. That courtesy avoids disrupting the student's presentation as you sign in and seat yourself.

bathroom

As John Bruestle aphorized, "You cannot program when you have to go the bathroom." But no one wants to raise a hand during a discussion, wait to be called on, only to ask to be excused. Instead, gesture pointedly toward the door, and I can respond non-verbally without interrupting the class.

Additional rules apply during tests:

food and liquids stay in backpacks

If you bring food or liquid to the classroom, put it in your backpack before entering the room and leave it there. Do not eat or drink in class. Step outside if necessary.

The prohibition on food aims to keep our shared keyboards and mice as clean as we can, given that they are handled by 10 or more persons every day.

The prohibition on liquids stems from a long history showing that students who spill liquids fail to clean them up, leaving them for others to slip on, and for me to clean up.

Could you sneak in a quick sip or bite without my noticing? Absolutely. But that would make you a sneak. Honesty feels better.

absence

yours

partial day

I teach your course several times a day. Students who plan to miss a class can ask permission to attend one of the other classes.

whole day

When you are absent, it is your responsibility to catch up. Ask a reliable classmate to review their notes with you. Ideally, do this at the CS Dojo, for access to more help if questions arise. I regret that I cannot afford the time to tutor individual students. One benefit of your accepting this responsibility is that I rarely need to object to a student's missing a class for musical or sports conflicts, or to make up a test in another subject, etc. 

When you return from a day's absence, show me the standard form for absences or lateness (search the Stuy site for absent), signed by a parent or guardian, indicating that they take responsibility for you during your absence. Show it to me after class as discussed here.

You can understand the necessity for paperwork if you know that the school and I have some legal responsibility for the safety of students whom the law classifies as minors. That responsibility explains why teachers take attendance: to say which students we are not taking responsibility for. The school needs to close the loop by seeing a note from your parent or guardian acknowledging that they take that responsibility.

If I graded homework in the class you missed, hand yours to me, with the standard header, when I sign your absence form.

test

When you miss a test in this class it is part of my job to ensure clear communication with your parent(s) or other caregivers. Print this form, fill in the data, and have it signed by a caregiver, so they acknowledge knowing that you missed a test. School policy dictates that, unless you provide that acknowledgment, you earn a zero for the test.

In handing in the form, recall when to ask for individual attention.

If your absence is planned in advance (such as for a class trip in another subject) you can sometimes avoid losing the grading opportunity in this course by volunteering to take the test during one of your free periods. That is convenient when another class in the same course takes the test, and also sometimes possible during periods that my schedule shows me to be "usually available".

mine

When I am absent, I usually post instructions in the class notes. Look there and remind your neighbors to do so.

Often I can post the day's homework in time for people to work on it during class. Since homework teaches, these early postings usually work out well: people reduce the amount left to do after school, and benefit from working with classmates.

etiquette

independent learning and showing off

Everyone is welcome to learn extra topics on their own, and to use it on homework or tests. One of the great aspects of computer science courses is that you can learn any amount more on your own, and benefit from it, whether the amount is small or large. Every semester there are a handful of students whose interest in the material leads them on, and it is a pleasure to see.

But in class and Piazza, don't introduce digressions that hurt — rather than benefit — the class as a whole. Independent learning is great, as long as it is, well, independent.

This kind of self-restraint is tougher than it sounds, since it is natural to want to show off extra learning. Showing off is unattractive as well as distracting. Instead, independent learners occasionally ask quick questions after class on material they have been studying on their own, without distracting anyone or showing off in the slightest. Sometimes I can help by pointing them to the appropriate piece of the manual.

The temptation seems particularly acute on the homework solutions that students are asked to post. The solutions should present the simplest possible answer to the homework problems, so as to help someone who was a little confused by the presentation in class. Introducing new material is likely to further confuse such a person. In one semester this kind of showing off rendered Piazza posts unusably dense for many students and me. Keep that from happening.

Rather than Piazza, you are encouraged to participate in public forums like the StackOverflow community, which is like Piazza for pros. No one there will think you are showing off, not least because the pros there are really impressive. Here, for example, is a posting on StackOverflow by a great Stuy student. The question was answered by Seth Tisue, who was then the lead developer of NetLogo! Also notice how polite most people are on StackOverflow, including both the student in the original posting, Mr. Tisue in his generous response, and the student again in saying "thank you". If only life were like this.

To burnish your reputation within the class in a positive way, I recommend answering questions, in class and on Piazza, without condescension or outside-the-syllabus material. You can help lots of people by writing high-quality, well-tested hints or answers to questions about the material.

Answering a question posed by another student is also very helpful. The questioner thereby hears the answer phrased differently from the way I might phrase it. That difference is valuable because the questioner was left confused by my original phrasing, so hearing different phrasing is a better bet to help them.

People who enjoy learning about computer science will feel rewarded by taking more comp sci courses at Stuy or participating in the comp sci community outside classes. The other classes and activities are led by people whose great teaching inspired me to want to join them. Both activities will give you the company of independent learners who are nice people, and who share your interests. Learning in the company of good students is why you went to Stuy, whether you knew that in advance or not.

no gifts, please

I cannot accept material gifts from students or their families. Students regularly give me gifts of their attention, their effort, their patience, their opinions, and their advice on becoming a better teacher, all of which are valuable to me. Let's keep material gifts out of this.

If you (or your parents/ caregivers) have roots in a culture with a different gift-giving tradition, please help everyone involved understand my respect and disinclination to give offence, while remaining consistent.

There are many reasonable views on this issue; the "no gifts" policy is just mine. Here are two others: