ICS1 Project - SJarel Interpreter
You will write an interpreter for "SJarel", a simple programming language
very similar to a small subset of Java.
News
- The project is over. We hope that everyone had fun and learned something during the project.
Good look for your next semesters!
- [27.02.2004, 111:05] It would be nice if you'd bring a printout
of your class hierachy to the attestation. More information on how to produce it, is on
the attestation page.
- [26.02.2004, 16:36] We have fixed an attestation
procedure.
- [19.02.2004, 16:30] Both test cases for level
3 made references to later levels (use of "true", "int declaration").
These test cases have been corrected to comply to level 3 and one of the original
ones was added to the set of level 4 tests. Version 1.8 of the material
is now available for download.
- [18.02.2004, 16:30] Another minor mistake was
found in the grammar description, new versions (including zip and pdf are
now online). See the board for further details.
- [18.02.2004, 11:00] Check
the bulletin board (Thread: Programming Project; Topic: Update to project
material) for any updates to the project material. We had to make a minor
addition to grammar levels 2-4.
- [17.02.2004] If you haven't
been able to participate in the introductory lecture on Monday and you are
not assigned to a team yet (which happenend on Monday after the lecture).
Please send us an email
immediately! If you are not in a team and you're not registered (which means,
your team handed in a registration sheet after the lecture on Monday or on
Tuesday) you are not able to pass the attestation!
Organizational Information
Online registration was possible till February 10th. Groups of four students have to combine
at least two nationalities.
The project starts on Tuesday, February 17th. Final attestation will be on Friday,
February 27th.
At half time each team has to consult with a tutor on Thursday 19th or Friday
20th to make sure that the group is making progress.
As the computer science department is currently moving to another building,
the Wilhelminenstraße-pools won't be accessible during the project. However,
the lower pool (S1|13 116) at Alexanderstraße has been reserved for the project. Starting
from February 23rd, when the German project period starts as well, the pools
have to be shared. The German students will use them in the morning till 13:00.
From 13:00 to 19:00 the pools are fully available for the ICS1 project. The pools will close
at 20:00. All pools are closed at the weekend.
An additional pool (which is not reservered for the project and where you don't get any
tutor support) is available in building S1|15 (after the entrace to the right). In addition
to some unix machines there are tables for laptops. Power is provided, networking is possible
using WLAN. If you don't have a WLAN-Card it is possible to rent one from the RBG department.
For both weeks, from 13:00-17:00, three tutors will be in the reserved pool
room (S1|13 116) to help you with any difficulties.
If your team is able to program on your own computers you are encouraged to
do so. Towards the end of the project period, however, transfer your solution
to the pool so that it can be tested there. Minor adjustment may be required
to port a say Windows version to a Unix version.
The Task
Using some predefined material you are going to
implement an interpreter for "SJarel", a simple programming language
very similar to a small subset of Java. The "S" in "SJarel"
stands for "simple". "Jarel" is a combination of "Java"
and "Karel". "Karel the Robot", initially published in 1981
is a project to use a small robot world for teaching object-oriented concepts.
SJarel defines basically Java syntax
where the main method is labeled "task" and an additional "loop"
construct exists. There is just one non-primitive "Robot" type, used
to create robot instances, which then can act in their little robot
world.
Anything you need to know can be found in the detailed
task description.
Where to get help
If you are stuck, try the following
- discuss the problem with your team members
- consult the FAQ and the framework
documentation
- ask one of tutors (available from 13:00-17:00)
- place a question at the bulletin board
(no more password protection; just register with the board if you haven't
done so already)
Attestation
On Friday 27th, all groups have to demonstrate their interpreter to a tutor.
In the
attestation process, your interpreter will
be tested using
public tests and some further private
tests. In a subsequent interview, each member of the team has to be able to answer
some questions regarding the developed code, especially about the part the member
contributed.
Suggestions for further development
If you are done and still hungry for some more programming, here are some suggestions
what to do:
- implement the "toHtml()" method, yielding a nice, web-viewable
version of SJarel source code (with colored keywords, indention, etc.)
- implement the "typeCheck()" method, checking static well-formedness
before actual execution (type errors, missing declarations, etc.)
- extend the grammar to support more classes, inheritance, polymorphism and
multiple (parallel) tasks
With any non-standard extension you make, however, make sure that the standard
tests still work or have a plain interpreter version for attestation only ready.
$Revision: 1.14 $