CS 421: Programming Languages and Compilers
Frequently Asked Questions
EWS
UNIX
Newsgroup
handin
MPs

EWS

Where can I access the EWS systems?

EWS maintains several labs on campus. A complete listing of these labs can be found at http://www.ews.illinois.edu/labs/. Of particular interest is the lab located in L426 DCL.

In addition, it is possible to log in to the EWS systems remotely using SSH or NX. Instructions on how to do so are located at http://www.ews.illinois.edu/userguide/clrtxt/index.html.

I can't log in. Who do I go to for help?

To access the EWS systems, you must have an active EWS account. All students in the College of Engineering (i.e. most of you) already have these accounts. If you are not in the College of Engineering, contact one of the course TAs about setting up an EWS account.

If you are a student in the College of Engineering, and you still can't log in, first check that you are using the correct password. Your password should be your Active Directory password. To reset this password, visit the CITES Password Manager web page.

If you know your AD password, and still cannot log on to the system, contact EWS support at manager@ews.illinois.edu.

UNIX

Are there any UNIX tutorials I can read?

A few introductory tutorials for UNIX walkthrough are available from Washington University, the Unversity of Utah and from Ohio State University.

How do I set my PATH?

The syntax for setting your path is slightly dependent on which shell you are using. Most people end up with a C-shellish shell (like tcsh or csh) instead of a Bourne-ish shell (like sh, bash, ksh). If you aren't sure what shell you are running, look at the output of either

echo $shell
or
echo $SHELL

To read all the particulars for setting environment variables you should look at the man page for your shell (i.e. man bash for bash, or man tcsh for tcsh).

For Bourne like shells (bash, sh, ksh...), the syntax is:

export PATH=$PATH:~cs421/bin:~/bin
For C-shell like shells (csh, tcsh...), the syntax is:
set path = ($path ~cs421/bin ~/bin)
(The $PATH means to keep the existing PATH and then append it with the other directories listed.)

These commands can either be typed at the terminal each time you login, or you can add it to your .bashrc for bash shell or .cshrc for csh or tcsh so that each time you login, the PATH is already set. After modifying your .cshrc or .bashrc, you will need to either source it or log out and log in again for your changes to take effect.

Please also note that if you're running tcsh, creating your own .tcshrc will toss out a lot of EWS-specific setup in .cshrc, so don't do that.

How do I download files quickly with wget?

When we make assignments, we sometimes include supplementary files, whether it be actual source code or test input or output. These files may be downloaded using standard browser techniques (by selecting "Save as" or equivalent) or by using the wget program.

The program wget is available on the EWS machines where you are expected to do your development. The wget program is a part of the GNU project. UIUC has a mirror of GNU's FTP site as part of UIArchive.

To retrieve a file by its URL, the syntax is simply

wget the-url-goes-here
To retrieve an entire directory of files, use
wget -r --level=1 the-url-pointing-to-the-directory
More options are available to wget; see wget -h.

How do I run a script I downloaded?

In the past, we have sometimes had students download scripts as part of a project build. To be able to run a script requires that what you have downloaded have the executable mode bit set, which you would do with the command chmod. As an example, let us say that you downloaded a script called gen_output, and you needed to run it. You may need to execute this chmod command before you are able to run gen_output:

chmod u+rx gen_output
Of course, if you do not have "." on your path, to execute this script, you may need to run the script like this:
./gen_output
As always, you should refer to the man pages for the commands that you use. The man pages for wget and chmod are available on the EWS systems.

Piazza Newsgroup

How do I use the CS 421 Piazza newsgroup?

CS 421 will use an external server hosted by Piazza Technologies for newsgroup services this semester. To join this service, please fill out this form. Once you have done this, you should be able to access the service by going to https://piazza.com/class#spring2014/cs421.

handin

How do I handin my MPs and HWs?

Read the individual MPs for the format of the handin and the files required for each MP. HWs are always to be in pdf. The handin program is available on the EWS machines. You may submit your assignments as many times as you like, but only the last submission will be graded.

If you submit an assignment by its deadline, you may still submit the assignment again during the 48hr Late Extension (provided the late extension is offered). Of course, we will only grade your last submission and the late penalty of 20% of the total value of the assignment will apply.

Please note that the handin program does not necessarily check to make sure your assignment compiles. You must make sure your assignment compiles with our grading script (available from the CS421 website), or you will not receive credit for your assignment.

If you have problems with the handin program, please let one of the TAs know.

To use the handin program:

1. Either physically login in on one of the computers in one of the EWS labs (e.g. L416 in DCL) or remotely login to remlnx.ews.illinois.edu. Either create your soultion file, e.g. mp1.ml or copy it here from another source, using stfp, for example.

2. To see information about mp1, including the status of your submissions, run

~cs421/bin/handin -i mp1

3. To submit mp1, change into your work directory (this directory should contain the file mp1.ml) and run

~cs421/bin/handin -s mp1

4. To force the handin program to accept a late submission of mp1, run

~cs421/bin/handin -s -f mp1

The above is a place holder, and probably not quite right.

5. For more details, run

~cs421/bin/handin -h

MPs

On a specific MP, can we use functions we defined in previous questions?

Unless we specify otherwise, the answer is yes.

Are we allowed to write helper functions?

As long as such helpers do not impede other requirements of the question (such as requiring the solution, overall, to be tail recursive), and as long as we don't specify otherwise; the answer is yes.

README
Objectives
Contacting Staff
Submitting Assignments
Extensions
Regrade Policy
Collaboration
Grading
Textbooks
FAQ