By default all assignments are to be submitted as text-only email or posted on
the web and submitted by email
containing the URL of the
assignment to:
with absolutely no attachments. All other modes of
submission are subject to prior approval by the instructor. Assignments will
in general not be accepted late.
You may use your Linux Accounts
to post assignments on the web as a means of submission.
An
assignment is late if the email is sent after the start of the class at
which it is due.
The grade for the assignment will be sent back to the email address from
which the
assignment email was sent. In the case of group assignments in which
multiple students
are involved, one student should be the sender of the email and the other
students should
be listed both in the email "CC:" list and in the body of the
message.
Students should check this page frequently for updates.
Assignments with an assignment date one week or more in the
future are subject to change.
Assignment #1, assigned Thursday, 29 January 2009, due Thursday,
5 February 2009.
Be certain to get the text books.
Read Aho, Lam, Sethi and Ullman pages 1 -- 107.
Read Jones pp. 1-71,479-497
In collaboration with your classmates, prepare a schedule
of seminar presentations for consecutive portions of Aho et al.
Each presentation is to cover at least 65 pages and is to last 45
minutes. The first presenter is to be ready to present on Thursday,
5 February 2009.
Individually prepare a brief proposal for a molecular graphics
scripting language.
Assignment #2, assigned Thursday, 5 February 2009, due Thursday,
12 February 2009.
Read Aho, Lam, Sethi and Ullman pages 109-190.
The second presenter should be ready to present the next part of
the text
In collaboration with your classmates, create a lexical scanner
for your molecular graphics scripting language. Embed it in a test
program that accepts text and reports out the sequence of tokens
for your language as it encounters them in the text. See if you
can work out a way for it to recover from garbled text that fails
the lexical scan and continue on after that. Be prepared to discuss
in detail.
Assignment #3, assigned Thursday, 12 February 2009, due Thursday,
19 February 2009.
Read Aho, Lam, Sethi and Ullman pages 191-302.
The third presenter should be ready to present the next part of
the text
In collaboration with your classmates, take the lexical scanner
you did for the previous assignment for your molecular graphics scripting
language, and hook it to a parser for strings of the tokens it generates.
For this exercise, you need to create the grammar for some signficant
portion of your language. You may treat all strings of tokens that
you are not ready to handle as errors, but you should report them
gracefully. You do not _have_ to use bison, but it is highly recommended.
Embed the lexer and parser in a test
program that accepts text and reports out the sentences of your languages
as it encounters them in the text. Try to identify each sentence
relative to the language without having to print a complete parse tree
for each sentence.
Assignment #4, assigned Thursday, 19 February 2009, due Thursday,
26 February 2009.
Read Aho, Lam, Sethi and Ullman pages 303-355. Read this short chapter
very carefully. It has important information on syntax-directed translation.
The fourth presenter should be ready to present the next part of
the text.
In collaboration with your classmates, take the lexical scanner
you did for the previous assignment for your molecular graphics scripting
language, and a parser for strings of the tokens it generates and change
it from just emitting debug information to emitting command
line commands either for JMol or PyMol (your choice -- you will do the other
one next time) into a file to then be tested as a script run against
JMol or PyMol. You are allowed to change the lexical scanner and/or the
parser as needed to make this into a meaningful, working test. Be
prepared as a group to present and discuss what you have done and what
you have learned. You must be ready to do a live test of what you
have done so far.
Assignment #5, assigned Thursday, 26 February 2009, due Thursday,
5 March 2009.
Read Aho, Lam, Sethi and Ullman pages 356-426.
The next presenter should be ready to present the next part of
the text.
In collaboration with your classmates, take the lexical scanner
you did for the previous assignment for your molecular graphics scripting
language, and a parser for strings of the tokens it generates and change
it from just emitting debug information to emitting command
line commands either for whichever of JMol or PyMol you did not do last
time.
Use your experience with this asignment and the prior assignment
to define one clean, minimal intermediate code language for
molecular graphics. Be prepared to present a proposal for this.
Don't just present a language. Give a rational explanation for
the choices you make in creating this language.
Gather everything you have done thus far on the molecular grahics
scripting language and put it into an open source project on
blondie.dowling.edu. You must use some appropriate combination
of the GPL and LGPL licenses. The LGPL is for APIs is very helpful
in encouraging commercial use.
Note that there is no class on Thursday, 12 March 2009. Dowling
is on spring break then.
Assignment #6, assigned Thursday, 5 March 2009, due Thursday,
19 March 2009.
Read Aho, Lam, Sethi and Ullman pages 427-581.
The next presenter should be ready to present the next part of
the text.
In this 2 week interval, design and, to the extent possible,
implement, one workable run-time environment for your molecular
graphics scripting language, and hook your intermediate code language
to this run-time environment. When you are done you are to have
enough working so that you can write a script that loads and
displays a molecule, feed it to your system and have it load
and display a molecule and then rotate it 90 degrees around the
x-axis. Everything you do (code and documentation) is to be posted
to blondie. Note: It is OK for your runtime environment to be
based on any of the existing open source molecular graphics packages
(e.g. RasMol, PyMol or Jmol), but you should be careful not to build
the design of just one of them into your system so deeply that you
cannot hook later to one of the others without major disruption. Whichever
one you pick first, you will be doing the others later.
Make a decision on whether you wish integrate your work into the
SBEVSL project on sourceforge or start your own project on sourceforge.
Be prepared to discuss your decision.
Assignment #7, assigned Thursday, 19 March 2009, due Thursday,
26 March 2009.
Read Aho, Lam, Sethi and Ullman pages 583-705.
The next presenter should be ready to present the next part of
the text.
Design and, to the extent possible,
implement, a second workable run-time environment for your molecular
graphics scripting language, and hook your intermediate code language
to this run-time environment. When you are done you are to have
enough working so that you can write a script that loads and
displays a molecule, feed it to your system and have it load
and display a molecule and then rotate it 90 degrees around the
x-axis. Everything you do (code and documentation) is to be posted
to blondie. Use what you learn in doing this second run-time
environment to note what you should change in your first run-time
environment.
Assignment #8, assigned Thursday, 26 March 2009, due Thursday,
2 April 2009.
Read Aho, Lam, Sethi and Ullman pages 705--902. This is a huge
amount of material, but it is very important. Get as far as you
can with it for this assignment, and then you will be asked to
reread the same material in the next assignment when you have 2
weeks, but if you don't start now, you won't get through it.
The next presenter should be ready to present the next part of
the text.
Design and, to the extent possible,
implement, a third and final workable run-time environment for your
molecular graphics scripting language, and hook your intermediate code
language to this last run-time environment. When you are done you are to
have enough working so that you can write a script that loads and
displays a molecule, feed it to your system and have it load
and display a molecule and then rotate it 90 degrees around the
x-axis. Everything you do (code and documentation) is to be posted
to blondie. Use what you learn in doing this third run-time
environment to note what you should change in your first and second
run-time environments. Feel free to go back and start making changing
in your languages to deal with the demands of all three runtime
environments. Note that in your next assignment you will be extending
your language and making more demands on your runtime environments,
so try to be as general and robust in your design as possible.
Assignment #9, assigned Thursday, 2 April 2009, due Thursday,
16 April 2009.
Reread Aho, Lam, Sethi and Ullman pages 705--902.
The next presenter should be ready to present the next part of
the text.
Now that you have been through three backends, it is time to
go back to your language specification, make it complete, supporting
all the scriptable features of a useful modern molecular
graphics system and to set up tests for all of if. Go back
to your language specification, and incorporate support for
at least 95% of the commands equivalent to the common features
of RasMol, Jmol, and PyMOL. You must include 90% of the selection
options and 90% or the rendering options. For the due date
you must provide: a language specification as a user document,
and updated lexer and parser for that language, and enough of
the backend to support the loading of pdb entry 4ins, the selection
of residues 3 through 9, and 14 through 23, and restrict what is displayed
to those residue numbers, with the rendering of the
first selection as balls and sticks and the rendering of the second
selection as spacefill. The first selection should be CPK colored
and the second selection should be colored red. You should color the
background cyan. You must be
prepared to demonstrate this against at least one of the back ends
in 2 weeks and against all of them the week after.
Be very sure to have a complete language specification. You don't
want to have to make lots of code changes in the last few weeks
of the course.
Assignment #10, assigned Thursday, 16 April 2009, due Thursday,
23 April 2009.
Finish reading Aho, Lam, Sethi and Ullman.
The next presenter should be ready to present the next part of
the text.
If you have not completed your lexer and parser, finish them for
next week, post them to Blondie and/or Sourceforge, along with
a complete user manual for your language, and email the relevant
URLs to the instructor. Each group need only send one email,
but wll students involved with that group should be listed in
the email.
Prepare a presentation of one clean, complete intermediate
language as the interface between your parser and your backends.
Each group with give a 15 minute presentation with handouts
dtailing that intermediate language.
Be prepared to demonstrate your compiler working for the test
case in the prior assigment against all three backends.
Assignment #11, assigned Thursday, 23 April 2009, due Thursday,
30 April 2009.
Have your notebook ready for grading.
Note that, in order to allow maximum time for your work on your
projects, the final exam will be given on Thursday, 7 May and
you will do your project presentations on Thursday, 14 May.
The next presenter should be ready to present the next part of
the text.
Today we will have revised and finalized all language specifications
for your projects. Integrate those changes into your lexer, parser
and backends by Thursday, 30 April 2009. Each group is to have
a 15 minute presentation on project status and remaining issues
ready.
As part of the preentation, prepare a test suite of at least 10 serious different test cases
that probe the performance of your system. Each of the 10 test cases
is to run against each of the 3 backends. If the results from
different backends are different, show that and discuss.
Final exam There will be an in class open book, open computer
final on Thursday, 7 May 2009.
Assignment #12, assigned Thursday, 30 April 2009, due Thursday,
14 May 2009.
Each project group is to prepare a detailed 50 minute presentation on
their project, explaining in detail:
The language being compiled
The lexical issues in compiling this language
The paser issues in compiling this languague
The intermediate language used
The backend issues in compiling this language
The test suite for the compiler
A demonstration
Each person must present at least 5 minutes of the material and each
person is responsible to being able to answer questions about
all aspects of their project.
Each group must have uploaded all source code and documentation
for at least Blondie and preferably to sourceforge.
Each group must provide a written handout of their presentation
with copies for everybody in the room.