15-213 Intro to Computer Systems: Frequently Asked Questions
Should I read the lab writeup before seeking help?
- Did we say, "Yes"?
- Yes, we did.
- Please read the lab writeups.
How can I get help?
- Email us at firstname.lastname@example.org.
- Stop by during office hours, Sun-Thu (and Fridays following Thur due dates), 6-9, WeH 5207
- There is also walk-in tutoring for 213 students on Mondays and Wednesdays, 8:30-11:00pm,
Mudge Reading Room.
- Schedule a 1:1 meeting with your instructors or TAs.
I have some command line output that I'd like to send to the staff. Should I send it as a screenshot?
- No. Text (copy and paste) is fine.
General Programming Issues
My code looked fine in my editor, but when my TA graded it on Autolab the indenting was all wrong and I lost points. What gives?
- After you handin your code, always view it in
Autolab to make sure that the indenting is what you
expect. If it's not, then there are two possible
reasons: (1) Your editor is configured to indent tabs a
certain width. (2) You've mixed tabs and spaces in
- In either case, you shoule use spaces instead of tabs. To replace
all tabs with spaces, run
expand -t4 foo.c > bar.c
When I try to run an executable file included in a lab handout, I get a "Permission denied" error. What should I do?
- The Linux executable bit is not set. Run "chmod +x <filename>" to set the executable bit.
- This problem may occur if you extract the handout tarball on a Windows machine. Always extract the handout on a Linux machine.
How do I extract a tarball on a Linux machine?
- Run "tar -xvf <filename>" to extract it.
General Course Issues
Why can't I access the course on Autolab?
- You don't have an Autolab account for this course
yet. Autolab accounts are not tied directly to the
Hub like Blackboard accounts.
- Email the staff list email@example.com if
you need an account created for you. You must be enrolled in the course in order to get an Autolab account.
Why can't I access the shark machines?
- You should be able to access the shark machines with your Andrew credentials. Email the staff list firstname.lastname@example.org if you have trouble.
Must I work on the shark machines?
- Your work will be graded on the shark machines, so it is in your best interest to work there.
- For most labs, you may alternatively work on the Andrew Unix machines, which are nearly identical.
- However, you must complete bomblab and buflab on a shark machine.
Must I attend a particular recitation?
- You may attend any recitation you wish as long as the instructor leading the recitation allows it.
- Please make sure the recitation you normally attend is the one specified on your Autolab account; if this is not the case, email the staff list so that we can update your account.
I am working from a Windows machine. How do I connect to the Shark machines?
- Use the Cisco VPN client if you are off-campus: Cisco VPN client. There is a known issue with connection stability if you do not use the VPN client: your connection will randomly freeze or drop.
- Use the CMU recommended Windows SSH/SFTP client: Tectia SSH/SFTP . If you need a lightweight SSH client you can use PuTTY instead: PuTTY
- Avoid X-Windows (X-Term, XEmacs etc.) and the WIndows AFS client if you do not have experience with them. Instead open multiple Tectia SSH/SCP windows and use text-based editors on the Shark machine (emacs, vim or nano).
- There are other nice tools like a Windows AFS client (OpenAFS), X-Windows support (X-Win 32) and the Linux-on-Windows port (cygwin. They are powerful tools in the hands of experts but often very painful to set up and can be the source of a lot of frustration and painful data loss when not used well. If you have no experience with them, leave the finger from them.
- My puzzles pass btest but I get errors when I submit to Autolab. What gives?
The moral of the story: Before submitting to Autolab, do a
thorough test by running dlc, bddcheck/check.pl,
and driver.pl yourself on the shark machines.
- As we discussed in the writeup, Autolab uses
the driver.pl program to grade your
submission. The driver.pl program runs dlc
to check for operator violations
and bddcheck/check.pl to do exhaustive testing. There
are three reasons why btest may give different scores
- Reason 1: dlc discovered that you used illegal
operators or too many operators.
- Reason 2: btest does not do exhaustive
testing. It is mostly useful for testing individual inputs on
invidivual puzzles. Use bddcheck/check.pl for final testing.
- Reason 3: bddcheck/check.pl is finicky about the code
formatting, especially the location of the first and last
braces in a function. The final right brace must be in the
I am submitting a defusing string that contains an apostrophe and the Autolab backend silently explodes. What gives?
- Please don't submit defusing strings that
contain apostrophes. There is a known bug in the backend
autograder that causes it to get confused by strings that
contain apostrophes. In each of these cases, there is an
alternate solution that doesn't contain apostrophes.
- How do I get to the secret phase?
Why are warnings like "unused parameter" being reported as errors?
- On some labs we have set flags (-Wall -Wextra) for the compiler to generate
more warnings than usual. We also set a flag (-Werror) to treat warnings as
- Any class of errors that can be detected by the compiler should be addressed
sooner rather than later.
My csim.c works just like the reference one, but when I run test-csim
I get -1 for all the hits, misses and evicts! What's going wrong?
- Your main function probably returns something other than 0.
- Our driver checks to make sure your simulator exited successfully,
and in C, a main function should return 0 if it exited successfully.
Why am I geting an error: implicit declaration of function 'getopt'?
- Where do I find telnet on the shark machines?
- Does my proxy need to support POST requests?
- No, it only needs to support GET requests.
- Why does my proxy seem unable to properly handle images or other non-text content?
- You're probably reading the data with functions such as getstr or
rio_readlineb that are designed for text. Random end-of-line characters in
the binary data will cause these functions to terminate
prematurely. Use rio_readn and rio_readnb instead.
Why am I getting all these sig* warnings in csapp.c?
- You've probably added -std=c99 to your CFLAGS. Leave it out
or set it to gnu99 instead.
What's the easiest way to get started testing my proxy?
- Have two terminal windows open, ssh to the same shark, start your proxy in one:
[myshark]$ ./proxy <portnum>
and do the following in the other:
[myshark]$ export http_proxy=myshark:<portnum>
[myshark]$ wget -d www.cnn.com
Note that the "-d" option provides debugging info with exact request/response headers.
- For fine-grain debugging, you can send headers from wget output line by line with nc:
[myshark]$ nc myshark <portnum>
GET http://www.cnn.com/ HTTP/1.0
I'm trying to test with nc. How do I generate \r\n?
- At the end of the line press Ctrl^V then enter to generate \r. Another enter will generate \n.