Every student enrolled in a CS course, automatically gets a department account. These are used to log in on the machines (in Linux or Windows) in the department labs (e.g., SB 3.02.04). These accounts can also be used to log into main201.cs.utsa.edu through main214.cs.utsa.edu remotely using ssh.
For most CS department accounts, the username is the person's first initial, followed by their last name (up to a maximum of seven characters). And the initial password is is the user's banner id without the @ in front.
The assignments for this class may be done locally on the department machines, on main2XY through ssh, or on your home machine. It is recommended that you at least test your work on a machine running Ubuntu 9.04 (Jaunty Jackalope), such as the main207-main214, since that's what we'll be using when we grade your submissions. If you want to do your work on a home machine or a laptop running Windows, you may want to look at Portable Ubuntu Remix or WUBI.
In order to do your assignments you will need to have:
You may also find it useful to use an IDE, such as Eclipse, and an interactive graphviz dot file viewer, such as zgrviewer.
Project will be submitted through subversion repositories. Subversion is typically used to facilitate collaboration among multiple individuals working together on a single software system. In this case, one subversion repository has been created for each student and is also accessible by the instructor and TA. Access can be obtained using the department username and password at the URL: https://nougat.cs.utsa.edu/cs5363-f09/cs5363-<username> (where <username> is replaced with that student's CS account username.)
Students can checkout a working copy of their repository, and then do their project development within that working directory. Students should periodically commit their work to their repository. Subversion provides abilities to look back through the history at any previously committed version of files. It also facilitates moving files back and forth between different work environments.
The most recently committed work at the time of each grading deadline will be graded. It is important that this last revision compile and run. You should check that the correct versions of all required files (for the appropriate phase) have been added, and committed by each due date. If you aren't familiar to subversion, one way to check that all of the files are present is to point your web browser at the repository, https://nougat.cs.utsa.edu/cs5363-f09/cs5363-<username>. The most recently committed version of all files should be viewable. Another way to check your repository is to do a fresh checkout into a new directory (perhaps on one of the main2XY machines) and then check that the files are all there and the source compiles.
The basic commands necessary to use subversion are:
svn co https://<username>@nougat.cs.utsa.edu/cs5363-f09/cs5363-<username>
cs5363-<username>.
svn commitsvn updatesvn add <file>svn statussvn add
new files, they will get a status of '?' instead of 'A'. So make
sure you don't have any files that you want to be graded which are
marked with a '?'; these won't be uploaded to the server.
svn diffsvn logMore information can be found in the Subversion book, which is available for free online.
In order for the instructor and TA to efficiently grade the assignments, it is necessary that we place some specific instructions on how your source code and other files are put in the repository, so that we can compile and run that code in an efficient way.
Within the repository, you should have three top-level directories:
phase1, core, and extensions
for submitting the files associated with each of the corresponding
project phases.
Each of these directories should contain a README
file (as described in the "Documentation" section above), a file named
LANGUAGE (that contains a single line with the word "Java",
"C++", "ML", or "Scala" corresponding to your chosen implementation language),
a test-inputs directory (containing the TL09 programs you
used to test your compiler) and a src directory (containing
the source code for your parser).
The submissions for the "Review I," "Review II" deadlines as well as
for the final core deadline should be submitted in the core directory at
the "Review I" and "Review II" deadlines is the same as for the final
core phase deadline except that README.R1
and README.R2 files should be created instead of
README.
None of the directories in the subversion repository should contain object files, class files, exececutables, or your compiler's output files. (These may reside in your local subversion working directory, but they should be "ignored" or "unknown" to subversion.
If you are implementing your compiler in Java...
LANGUAGE file contains a single line consisting of
the word: Java.
phase1/build,
core/build, and extensions/build directories.
src/edu/utsa/tl09/Compiler.java within
each phase directory (phase1, core, and
extensions).
phase1, core, or
extensions directory, your TL09 compiler should
be able to be compiled using the command:
javac -d build -sourcepath src src/edu/utsa/tl09/Compiler.java
.tl09).
The names of the output files should be automatically derived
from the input file name by extending the base input file name with
a new suffix denoting the contents and type (.pt.dot
for the parse-tree dot file, .ast.dot for
type-annotated AST dot file, .cfg.dot for the ILOC-labelled
control flow graph dot file, and .s for the MIPS assembly
code output.
phase1 directory, you
should be able to use your TL09 compiler to compile the TL09 file
simple.tl09 in the testing directory with the command:
java -classpath build edu.utsa.tl09.Compiler testing/simple.tl09
testing/simple.pt.dot (relative to the phase1
directory).
If you are implementing your compiler in C++...
LANGUAGE file contains a single line consisting of
the word: C++.
phase1/build,
core/build, and extensions/build directories.
.cc and header files (ending in .hh).
phase1, core, or
extensions directory, your TL09 compiler should
be able to be compiled using the command:
g++ -o build/tl09 -Wall `find src -name '*.cc'`
.tl09).
The names of the output files should be automatically derived
from the input file name by extending the base input file name with
a new suffix denoting the contents and type (.pt.dot
for the parse-tree dot file, .ast.dot for
type-annotated AST dot file, .cfg.dot for the ILOC-labelled
control flow graph dot file, and .s for the MIPS assembly
code output.
phase1 directory, you
should be able to use your TL09 compiler to compile the TL09 file
simple.tl09 in the testing directory with the command:
build/tl09 testing/simple.tl09
testing/simple.pt.dot (relative to the phase1
directory).
LANGUAGE file indicating that the
implementation language is ML or Scala .
And include instructions
for how to build/run your program, using the standard smlnj or scala
compilers/environments in the README file. The Tl09 compiler should be
able to accept the name of the TL09 source program from the
command-line, and produce output files based on the stem of the input
filename (as described above for Java/C++); this should be documented
in the README file.
You may wish to refer to this zip file. For an example of how the files should be layed out within your subversion repository for a Java submission. This includes a Compiler.java with a main method that opens input and output files of the correct names based on the command-line arguments.
There may need to be corrections, clarifications, or other modifications to these instructions, you are responsible for monitoring the class web site and listening during lecture for announcements related to this assignment.