Getting Help in CS 70
In CS 70 you will almost surely get stuck or confused from time to time. Sometimes you and your partner can figure out the problem for yourselves, but other times you might need a push in the right direction. Knowing when and how to ask for help can save you large amounts of pain and angst.
We believe that you learn best when you discover answers for yourself, so we (and the grutors and your classmates) will often respond to questions with other questions, designed to help you find the answer for yourself. This approach is a little slower than just “telling you the answer”, however. If you wait to ask your question until you are feeling very frustrated or rushed (e.g., the last minute), our approach might add to your frustrations. For that reason, please ask your questions early! That also means starting your work early enough that questions arise early.
For any question you have, there are probably several other students with the same question, and one answer reaches everyone. And questions don't have to be answered by course staff—if you know the answer to someone's question, you can respond to them!
Preparing to Ask for and Receive Help
Plan Your Time
If you plan your time well, you’ll be able to get the most out of the available help. Remember, getting an answer online may take a day or more, but getting help in office/grutoring hours may take just a few minutes. If you can work at times when grutors are available to chat (or, better yet, start working before grutoring starts), you’ll have someone in reach who you can ask. If you start the assignments in good time, you’ll have more time available to get help from the professors or grutors.
Prepare Your Question
To get the best help, be sure to gather the following information, where applicable:
- A description of the problem you’re having: What are the symptoms and when do they appear?
- Any hypotheses you have about the cause of the problem
- Any progress you’ve already made towards solving the problem, including anything you’ve done to test or eliminate potential causes of the problem
- A list of the commands you’ve executed that are applicable to the problem
- Any output from those commands (or your program) that might be helpful
- Any error messages that might be helpful
Paste commands and error messages rather than summarising them. The line that identifies the problem is often not the line you would have picked out.
Before you can ask anyone for help with code,
- Your code must be documented
- The latest version of your code must be checked into the repository
Push before you ask. It is rare that we can give useful advice about an isolated snippet. If your question is about code, commit and push first, and say so—then whoever picks up your question can look at the real thing.
Where to Ask for Help
Some things are more easy to address when asked out loud rather than being typed.
Anything you're struggling to put into words, anything conceptual, and anything where somebody looking at your actual screen would settle it in ten seconds is a question to ask in lab or during office and grutoring hours.
Office Hours and Grutoring Hours
Sometimes a question is hard to articulate, and sometimes a conversation is better than an answer. Sometimes you just want to see a friendly face! Talking in person is often the fastest way to resolve a problem, especially if it’s conceptual. There will be regularly scheduled drop-in hours where you can chat in realtime with a grutor. The professors will also offer sessions where you can discuss and ask questions about the lesson material.
And in lab, the teaching team is already in the room. If you are stuck during lab, that is the fastest help available anywhere in this course; use it.
We encourage you to take advantage of these opportunities; we like to see you! If your question is about homework, it would be ideal for both partners to ask for help together, but, if necessary, one person can get an answer and communicate it to their partner. If the scheduled times don't work for you, please contact us to make an appointment!
If you speak to one of the course staff members and are not happy with (or convinced by) their answer, you should see it as their failure rather than yours, and seek more of us out (or ask a follow-up question on the page) for a better answer.
Please don't send routine questions by email.
We may not see an email for a long time, and there are far more eyes on a question asked on the website than in one professor's inbox, so you are likely to get a quicker answer by asking there. Email is the right channel for something genuinely private or personal.
Ask Questions on the Website
For other questions, especially about a lesson or assignment, you can ask on almost any page of this website (including this one!), using the question box at the bottom of the page. Asking on the page means the question and any answers end up close to the material it is about, so the next person to wonder the same thing will find it easily.
What Page Should I Use to Ask a Question?
- A question about a lesson
- The Key Points page at the end of that lesson.
- A question about an assignment
- The assignment's help page, linked from the assignment's top page.
- A question about course policy—deadlines, late passes, how proficiency checks work…
- The syllabus page.
What if my question turns out to be obvious and everyone sees it?
If the answer was obvious you wouldn't be stuck. And in a class this size, several people are stuck on the same thing right now and have not said so yet—so your asking is a small favor to them.
And nobody sees my name if I ask on a webpage anyway, right?
Right. See below.
Who Sees Your Question
Messages are credited to a unique (hopefully amusing) animal name, not your real name. So you might post as a mouse and get a reply from a hedgehog.
- Names are Unique for Each Page
- All messages and follow-ups that you post on any given page will be credited to the same animal name, but the names are different for each page, so messages you post on another page will use a different name. A mouse today, an elephant tomorrow, and no way for your classmates to join the two up.
- The Course Staff See the Animal Names
- By default, course staff also see the animal names. We can find out who asked when there is a reason to—that is not a surprise, and it is occasionally necessary—but most of the time we will answer your question without knowing who asked it.
- Restricting a Question to Staff
-
There is a box you can tick that makes a question staff-only, so your classmates do not see it at all.
Use the staff-only box when your question is about your own solution, or when your question is about something personal—about your circumstances rather than about the material. If your question is too sensitive even for grutors, contact a professor directly instead.
- Unrestricted Questions Are Seen by Everybody
- If you haven't clicked the staff-only button, everyone looking at the page will be able to see your questions and responses.
Answering Questions
If you see a question you think you know the answer to, please go ahead and reply! You do not have to be certain—if you are not quite right, someone will correct you, and you will have learned something. (Hedge if you would rather: “I'm not sure, but I think…” is a perfectly good way to help.)
The collaboration policies apply here exactly as they do anywhere else: replying to a classmate's question is subject to the same rules as talking to them in person.
A Last Resort: LLMs (Requires Extra Care!)
It's usually preferable to get help from a human, but sometimes (perhaps because you're working at an unusual time when no one is available to offer you timely help) those options aren't available. As noted in the course syllabus you are allowed to use LLMs (Large Language Models) in the same kind of help-seeking situations where you'd ask other humans, but with important caveats because it's very easy to unintentionally have an LLM end up doing your homework for you.
If you're asking about an issue with code you're writing for homework, gather the same information you would gather for any other question (show your code, give error messages, explain what you've tried), but in addition, to reduce the chance that the LLM will be over zealous and solve your problem for you, you should include a specific request for the kind of help you want. The following text has been tested and usually gives good results. It's a little long, but you can copy and paste it when you need it.
Please do not just give me the answer, instead focus on teaching me the debugging process/methodology so that I learn the skills I need to solve this kind of problem for myself, so that the next time I see a problem like this, I can work through it on my own. I need to be the author of all code changes, so please don't give me any code snippets to copy into my assignment — I'm not allowed to do that. Feel free to ask me leading questions and be my guide in figuring this out (we can have a conversation back and forth as I build my skills, so no need to try to cover everything in one go). Remember, you need to avoid giving me specific code changes for my file. Often less is more!
A grutor knows what you have covered. An LLM does not.
This is the thing to watch for, and it is not about honesty—it is about the answer being wrong for you.
CS 70 introduces C++ in a deliberate order. We do new and delete before smart pointers; we leave some machinery until late on purpose, because you learn more by meeting the problem before you meet the tool. A general-purpose assistant knows none of that. Ask it about a memory bug in week four and there is a good chance it will hand you std::make_unique, a move constructor, and a range-based rewrite of your loop—confidently, helpfully, and squarely outside what this course has taught you.
Code you cannot fully explain is not code you can hand in, whoever or whatever suggested it. And a technique you adopt before you understand what it replaces is a gap you will fall into later.
Two more things worth keeping in mind:
- They can be wrong, fluently. An LLM will produce a confident, well-written, completely incorrect explanation as readily as a correct one, and it will not warn you. Check what it tells you against the lessons, the compiler, or a human.
- Cite it. If a significant idea or insight in your work came out of a conversation with an LLM, say so, exactly as you would for any other source.
And two hard limits, which are the syllabus's rather than this page's: no AI code completion while you work on CS 70 code—it is your responsibility to know whether your editor has it and to make sure it is off—and no LLM use at all on proficiency checks, quizzes, or take-home exams.
Apply the “in your head” rule here as you would with a person: leave the conversation with new understanding, and make the edits yourself, based on what you now understand.
Tell Us if You Resolve Your Issue!
Finally, if you answer your question or fix your code on your own before the course staff gets to it, please say so—mark your question as answered, or add a follow-up. Telling us that you don't need help any longer allows us to spend our time helping other groups.
And if you asked where the class could see it, say a little about how you resolved it, so that the next person to hit the same wall can follow you through it.
(When logged in, completion status appears here.)