PL: FAQCommon frequently asked questions.
I can’t join the piazza group, can you add me?
There’s no need to join. You will be added once you create a handin
account (which becomes possible around the first class).
I used a non-NEU email, and now i have problems with piazza,
should I change my email?
No, you don’t need to change your email. Piazza has a feature that
allows you to
link another email account
which would allow you to login using your personal one, and be the same
user as your NEU account.
I have a question about an open homework, who should I ask?
- Your first place to ask (all) questions is piazza (see the description, and the Email and Piazza Policies page). That should cover most questions — you can even ask anonymously to the class if that helps.
- If your question involves homework code, then the first thing to do is to ask yourself if this is a real question, rather than “here’s my answer is it correct?” kind of a thing (aka “help me debug my code”). If it is, you should avoid it. Not only are these questions unfair to the other students, part of learning is dealing with your own bugs.
- If you still want to ask your question, then you should, of course, avoid a public question that shows your code — piazza allows you to ask a private question. Please use “Instructors” to include the whole course staff instead of relying on a particular person.
- But note that private questions are only for real questions — in other cases, you should just send out email.
I have some error that I can’t figure out, what should I do?
Your first stop is always piazza, possibly in the form of a private question if there’s bits of your solution in the error. In some rare cases you can also email me and/or anyone on the course staff.
In any case, before you reach out to your screenshot tool, please consider doing so a very-last resort. Read the policy page for more details. Specifically, the error that you’re talking about is a few characters on the screen that you can always copy (even from error popups (with a right-click)) and paste, which would make it easier to send, easier to read, and easier to handle.
I have a question about my graded homework, who should I ask?
Start with the grader who went over your code (indicated at the top of
the file). Be sure to include the
Grading Filelabel that appears at the top of the file since grading is anonymous. See also the “Grade Questions” section below.
Can I meet you?
Sure. First, try to catch me at the end of class. If that doesn’t work
for you, or if you need more time, you can catch me at my
online office hours. If that doesn’t fit your
schedule too, schedule a meeting (online).
Human language to use when asking questions?
This is not really a question, but rather a common issue that many students have. Just like the material, it’s best if you use precise language. Specifically, avoid the following commonly misused terms:
- “Variable”. As discussed in class, almost the whole semester (and homework) will not use mutations, and therefore we’re going to have “identifiers” that are “bound” to values. These values will not vary, and therefore don’t call them “variables”.
- “Statement”. Many mainstream-ish languages have a distinction
between “an expression” and “a statement”. This is best seen by the
fact that there’s a distinction between “an
ifstatement” and “a ternary conditional expression”. Like many modern functional languages, Racket does not have that distinction: instead, everything is an expression. This greatly simplifies things (languages with statements and expressions pretty much always have a BNF with a separate “expression” non-terminal), so we’re going to follow that and have no statements in our languages.
- “Method”. A “method” is an OOP term for a function that is
associated with a specific object, possibly via a class. It is
identified by having such an object as an implicit (usually)
selfargument. Unless you’re talking about these things in particular, you should use the term “function” instead.
I forgot my handin password, what should I do?
Unfortunately, there is no way to recover a forgotten password. However,
you can catch me after class or email me, and I will reset the password
to something you know. (If you email me, then include a phone number
that I can call back to ask you what to reset your password to.)
How do I change my email?
Just use the “Manage” menu option to get the handin account — in the
“change info” tab enter your password and click “get current info” to get
the information and to change it. But please also make sure that it’s an
email that you’re actually using, since I’m assuming that emailing at the
handin address actually reaches you.
How do I change my username?
This can be problematic, since the username is used in many places in the
system. So it’s best to avoid this unless it’s early in the semester.
I’m trying to do some future homework, and there’s a red link to
»whatever« which I need...?
The homework are intended to mostly go along as we go over the material. A red link is for stuff that is not available yet. If you really want to some future homework now, then you can dig through the future class notes and find what’s needed. But this is not recommended, and even less so if code from these notes is needed.
If you think that this is a mistake then ask on piazza.
The deadline is tomorrow / in 2/3/4 days, and I think that it’s
not enough time. Can I get an extension?
Please just do the best you can and when we get closer to the deadline, if you still need more time, then ask for it then. I usually try to accommodate such requests when they’re reasonable and when possible. (In some cases the next homework depends on the solution for the current one, so I need to publish the solution, which would make it impossible to continue working on the HW.)
But if it’s because of some reason that affects many people (for example, there’s some university event that I’m not aware of), please post a note on piazza so that other’s can +1 it, and I’ll move the due time for everyone.
OMG! The deadline is in 10 minutes, and I forgot my password!
Calm down, take a deep breath, and email me — either I’ll answer you
and resolve it as above, or I’m off-line and in that case I won’t close
I cannot submit my homework because »reasons«, can I email it?
No! If you do that, I end up trying to figure out what’s wrong and
submit it for you, and if I don’t have time for that I won’t… Instead,
just email me and I’ll try to help you resolve the problem. (This is
assuming some technical problem, of course, not a missing answer.)
I couldn’t get the whole homework implemented,
what should I do?
First, write a comment at the top of the file clearly describing the
part(s) that you couldn’t implement. Next, make sure that you have
complete test coverage for what you have implemented to avoid a penalty.
Finally, try to submit: if the server complains about some missing
binding, add it as a stub (usually you’ll need a stub function to still
have the correct arity since the server checks that too), and add a dummy
test for the stub so that you don’t get penalized for incomplete
coverage. Repeat the process until the server accepts your submission.
The deadline has passed but the homework submission is still
open, can I submit it?
I don’t give penalties for late submissions, and I usually close homework manually. So it’s quite possible that a submission is possible past the deadline, and submissions are fine at that time. But you should not rely on this so if the deadline is approaching, be sure to submit whatever you have, and if you need more time, then ask me.
But more generally, for best results, don’t start working on a homework the day it is due. Start much earlier, and be done with it earlier. You’ll feel better.
Can I submit after a homework is closed? For a penalty?
No. When a homework is closed, its solution gets posted to the handin
server, so it doesn’t make sense to accept late submissions. (And the
reason the solutions are posted after a homework is closed is not just to
learn from it, it’s also sometimes needed for a followup homework.)
However, see the previous answer if it’s past the due date but the
submission is not closed.
What’s this "scratch" submission directory?
It’s a handin directory that accepts anything, and can be conveniently used in two common situations:
- You try to submit and it turns out that there are still problems. Switch to scratch and get a server-backed copy so you can work without ever saving local files.
- Later on it will be useful as a kind of a shared space where you can synchronize work with your partner.
Note, BTW, that I reset the scratch space from time to time, so it’s intended for working on your submissions, not as a generic storage thing. (But I do keep backups, in case you lose something…)
I’m trying to submit a scratch file, but the server complains
about an existing submission—?
The system is designed so that every username has at most one submission,
and this applies to scratch submissions too. This means that if you have
a scratch submission with your username (A) and you try to submit another
one with your partner (A+B), the server will complain. If this happens,
email me and I’ll move the old scratch submission out.
I prefer to work alone, is that possible?
Sometimes. Having pairs is also useful to make it possible for the
graders to go over all submissions, so we prefer that everyone is paired
up. If you prefer to work alone, ask for it in your email, and we’ll see
if it’s possible to make it work.
X and myself want to work together even but I’m in 5400 and X is
in 4400, is that OK?
Sometimes. First of all, while the additional 5400 homework are still
optional for 4400 students, usually people don’t do them — so you
should expect to do have of the homework by yourself. In addition, if
you pair up, you might leave another couple of stranded 5400/4400
students which in the best case inflicts a similar problem on someone
We have a team of three people and we’re used to working
together. Can we register as a triplet?
In almost all cases the answer is no. While pair-programming can often
be beneficial for both people, having a triplet means that one of the
three gets left behind, not programming and not following the work.
Grade & Grading
I got some points taken off for a style issue, but it’s not
mentioned in the style guide!
The Style Guide is not intended to be an exhaustive list of everything you should ever know to avoid such penalties. Attempts to make it so are inherently futile and frustrating. On one hand, they are futile since there can always be another way to write code badly, making it a never-ending chase after some notion of completeness that is never achieved. However, such a chase will make it more and more verbose, leaving students with a huge list of rules to go over, which will lead to frustration all around: students will be frustrated by its length, or by the verbosity of the precise-but-verbose language that will result from generations of fixes, or by the fact that the grading will look more like a list of mistakes on your tax return forms. Graders will also be frustrated with finding the places where some rule is mentioned, and the chore of keeping the list updated.
Finally, what if such a list did exist, was painfully comprehensive, and people could read and follow it completely? Even that supposedly ideal outcome is not good at all: taking out all human considerations from making your code readable means that you’ll stop thinking about how to make your code nice and readable for the people you work with. There’s different expression styles, both at the lowest level of indenting your code through the highest level of code design and organization. You really should learn to think about all aspects of your code and make it as readable as you can.
That’s not to say that there is no place in the world for style guides. They’re useful in getting the obvious details laid out for newbies, they can help in settling on certain decisions when there are different opinions, and they are therefore first and foremost a useful tool for humans to communicate with each other. In your case, you are expected to ask when something is unclear or debatable, and you need to learn good habit and respect how code is written. Just as a quick example: you should grow to be careful to respect the style in any project you work with. For example, in modern JS/Python/etc projects you get to decide on using single-quotes or double-quotes for strings — and in almost all cases, the people who work on a project have a specific preference; it is therefore good to read existing code and see what the convention are even when the project doesn’t have its own style guide. In time, you would hopefully grow to a point of appreciating such issues enough to write your own guide for people who want to work with you.
There’s a mistake in the grading of my homework, what now?
Look in the graded file (
graded.rkt) — it has two important bits of
information in the header section at the top: first, a
comment should show you which grader did the grading and therefore should
be your contact point (see the table). The
second important bit is a
Grading File comment: the graders receive
anonymized filenames, so you need to identify your file in case of
Please realize that grading resources are limited, and in some cases a grading mistake should apply to other students too, so dealing with such problems might take a while.
What can I do to improve my grades?
A good way to significantly boost your overall knowledge is to become a tutor. It might seem that understanding the material is difficult for you to follow — but if you’re teaching someone else, it will help you organize what you know, and as you’re explaining it, things will become clearer to yourself too.
I’m stressing about my grade — what should I do?
First: Don’t Panic!
Remember that you have many ways to evaluate your performance. In
particular, use the
grades.txt file (when it becomes available in the
“Summary” row on the Handin server) to see your current estimated
numbers: your grade, the possible grade range from now to the end of the
semester, and your percentile. Remember to also compare your numbers
against the class charts.
If you’re worried about PLQ grades, then read through the About PLQ page. It has a thorough explanation of the format. In many cases students are unaware of these details resulting in being redundantly over-stressed about it. A great way to improve your performance is to suggest a question!
If you’re still worried about your performance, please do schedule a meeting to review your performance and discuss what could be done to improve things (if needed). People are often over-stressing for many reasons, and in many cases they have nothing to be worried about — going over your numbers in a meeting is a good way to avoid such stress and be more focused on the material.
The end of the semester is coming up, and I’m not doing well.
Can I do some extra project or something to improve my grade?
Short answer: no.
Long answer: such projects, extra homework, etc are problematic in several ways. First, a problem with these end-of-semester requests is that doing anything after the semester is done is technically difficult enough to be impractical. At that point there is no course staff so it’s only me who would need to handle such things.
A more severe problem is that such things are inherently unfair to other students. It might be that you’re looking at a potential failure so you’re more stressed, but if there’s an option to improve grades via extra work then almost everyone will want to do it, even ones that have very good grades. This means that these kind of extras become regular homework, not really extras — and this means that you’re actually asking for another homework for everyone.
It’s the end of the semester and my karma grade is low — was
there some problem that made me get such a grade?
The karma grade is special in that it doesn’t follow the same rules as homework/exam/PLQ. For exams (and PLQs), the grading is usually “positive grading”, where you’re getting some points for doing things right; and for homework it’s usually “negative grading” where your grade starts from a 100 and you get penalized for problems. The karma grades, however, are neither of these. There is no list of things that you should do to get a 100, and there is no tracking of bad things you did with penalties.
So the bottom line is that it’s just a combination of a bunch of numbers that are factored in (for example, various piazza stats, grading bonuses, etc), combined into a single number and the whole thing is done so the final number is somewhere on a range that looks like a normal grade — and like everything else, used in the context of all grades.
I had autodropped PLQs that aren’t the lowest, is this a bug?
The autodropping algorithm chooses the PLQs that did the most damage to
maximize your grade. Different PLQs have different weights, so these are
not always the lowest grades.
Technical Issues (Network, PLQ, etc)
How do I install the PLQ web-app on iOS?
- Access the PLQ page on Safari (must be Safari, since it’s the only one that is permitted to install things on your home screen).
- Tap the icon in the bottom-middle of the screen (the one that looks like a box with an arrow coming out of the top).
- Scroll down and tap “Add to Home Screen”, which will install the site as a PWA.
DrRacket cannot connect to the handin server...
Check that you’re on a network that allows high ports (e.g., if you use Nuwave-guest without a login it considers you a “guest” user, and the ports that you can use are restricted to a few well-known ones like
Make sure that you’re using the current Racket version, and that your OS is updated (specifically, that its root certificates are all in order).
To check for errors, you can try to use some utility to get a more precise diagnostic. For example, you can run this in DrRacket or just plain Racket:(require pl/client)
(define h (handin-connect "pl.barzilay.org" 9770))
and see what it complains about.
The handin server uses a certificate that is signed by
letsencrypt.org. This should be included in your OS root certificates, but make sure that your OS is updated if there are problems.