I have a question about an upcoming homework, who should I ask?
- Your first place to ask all questions is the piazza group (see the description, and the Email and Piazza Group 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 things and if so, you should avoid it. If you still want to ask your question, then you should of course avoid a public question that shows your code — the piazza group allows you to ask a private question.
- But note that even private questions are only for actual questions — in other cases, you should just send out email.
I have a question about my graded homework, who should I ask?
Start with the grader who went over your code. Be sure to include the “Grading File” label that appears at the top of the file since grading is anonymous.
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, then a physical meeting is harder to arrange — so email me, and we’ll arrange a hangout / skype / phone-call / whatever.
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.
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 the submission.
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.
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 next answer.
I vaguely remember some things about the deadline being
flexible, what was that about?
In general, I try to give people more time when needed and when I can. One aspect of that is that I close submissions manually, so if I happen to be sleeping you get free time. (This leads to the “OMG” answer above.)
If this sounds confusing, or if you don’t think that you’ll remember the details, then treat the deadline like you would in any other class. For best results, don’t start working on a homework the day it is due. Statistically speaking, if you do that then there will be occasions where you’ll run out of time.
What’s this “scratch” submission directory?
It’s a handin directory that accepts anything, and can be conveniently used in two common situations:
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...)
- 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.
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.
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 http and ssh).
- 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)and see what it complains about.
(define h (handin-connect "pl.barzilay.org" 9770))
- 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.
How can I use the DrRacket debugger?
The debugger that is included with DrRacket is somewhat unlike other debuggers that you’re used to, and somewhat undermaintained. It is therefore not recommended to use it. This is, BTW, a common theme with functional languages: these languages are usually easier to debug by experimenting on the REPL, and adding an occasional print to follow code.
Racket looks like a great language, how can I learn how to do
real stuff in it?
Racket is indeed well fitted for any job, in many cases more than other languages. If you’re interested, then start from the Racket Documentation, where you can find many useful guides and manuals. Specifically, the More guide will walk you through implementing a web-server, or you can read the Continue guide to learn how to implement a web-app using Racket’s web-server.