GROUP AND PROJECT SELECTION =========================== This file is in: /proj/adaptive/www/course/w97-ug/projects/project-plans I need your group selection by Friday, noon, with project preferences. If you are looking for a project team member, please send email to com1205@ccs.neu.edu (the entire class will read this). I will also make 5 minutes available during class so that you can look for partners there. -- Karl L. ====================== THE PROJECT ================================= Project selection: I would like the class to split into groups of a minimum of two to at most three students. The groups work independently but define common interfaces, if needed. Some of the software pieces need to work together. Each group needs to turn in the names of at least two to at most three group members and a list of 3 project names selected from below and sorted by preference. There can be at most one team per project. Use the following format: Team members: 1. 2. 3. Project preferences: 1. VisualTraverse (just an example) 2. cddraw (just an example) 3. For projects which don't have a host assigned, ask me directly. Make optimal use of the time of your host. Project List: ============================================== cddraw: Draw UML class diagrams manually Features: Java Applet development, framework reuse. A running program already exists. You will add more features to it. Bring it closer to xcddraw. Host: Kedar Patankar Requires you to learn parts of a framework. Very challenging GUI development but also very rewarding. Run /proj/adaptive3/demeter-5.5.1/bin/xcddraw to get an idea of what remains to be done. /proj/asl/kedar/CdDraw/README explains the current GUI for Demeter and how you can run it on an Alpha machine. http://www.ccs.neu.edu/home/kedar/cddraw-f96.html contains information on the project from last quarter. http://www.ccs.neu.edu/home/kedar/cddraw-w97.html contains information on the project this quarter. ============================================= uml-text: Produce textual form of UML class diagrams from graphical form (use GEF) Features: Java Applet development Host: Johan Ovlinger ================================= visual-traverse: Create traversals by pointing and clicking in UML class diagram. Print traversal specifications. Features: Java Applet development, framework reuse Host: Kedar Patankar Requires you to learn parts of a framework. Very challenging GUI development but also very rewarding. See http://www.ccs.neu.edu/home/amiller/trav.html for inspiration. (Set your class path to empty before you run the Applet.) /proj/asl/kedar/CdDraw/README explains the current GUI for Demeter and how you can run it on an Alpha machine. http://www.ccs.neu.edu/home/kedar/cddraw-f96.html contains information on the project from last quarter. http://www.ccs.neu.edu/home/kedar/cddraw-w97.html contains information on the project this quarter. cddraw-w97.html contains a design for visual traverse. This project needs two groups, one focusing on the GUI part for visualizing objects and the other doing the algorithms to create the desired objects for visualization. ==================== generic: Extend the Demeter/Java code generators to also generate code for: g_equal(), g_copy(), g_print(), g_code(), g_displayAsTree() Features: Java Applet development, some code generation. Host: Johan Ovlinger This project requires 2 teams: generic-team1: g_print, g_copy generic-team2: g_equal, g_displayAsTree, g_code For more information: man g_copy man g_print (see http://www.ccs.neu.edu/research/demeter/sources/DemeterJava/examples, add pretty printing commands, improve generated code: eliminate methods which print only spaces.) man g_code man g_displayAsTree (see http://www.ccs.neu.edu/research/demeter/sources/DemeterJava/examples) g_equal: (see http://www.ccs.neu.edu/research/demeter/sources/DemeterJava/examples) virtual int g_equal( Universal* ); Performs deep comparison of the receiving object with another object and returns the result. improve existing program. ========================================= j-sem-check Implement sem-check in Java. This project requires 3 teams: j-sem-check1: Checking that every class is defined exactly once ... Checking that two class names on the right hand side of every repetition production are identical ... Checking that every parameterized class is consistently defined and used ... Checking that formal parameter classes are not used as parameterized classes on the right hand side ... j-sem-check2: Checking that every alternative of a parameterized alternation class has to use all its formal parameters in the same order ... Checking inheritance cycles ... Checking that all alternatives are defined as either construction classes or alternation classes that will eventually be defined by construction classes ... j-sem-check3: Checking whether the class names and label names are keywords of Java or Demeter/Java ... Checking that the part names of every vertex are unique ... Checking the Inductiveness Axiom... ================================== Testing of Demeter/Java There is a need to translate C++ testing programs from C++ to Java. The C++ programs are in: /proj/adaptive/lieber/regression-test/c-* This project may consist of two teams: testing1 and testing2 ================================================ Library Project: Add a graphical user-interface to the library application in: /proj/asl/lieber/f96/com3360/alexey/library_project and /proj/asl/lieber/java/java-envs/jk-library1 This requires learning of gjt and awt. ================================ The general rules for the projects are: If you reuse code from the net or from a NU CCS directory, acknowledge the source and follow copyright rules. The projects are implemented in Java, but you are welcome to use Demeter/Java to generate the Java code or some of it. Some of the projects require C++ using Demeter/C++. Please note that Demeter/Java is under development; you might have to modify some of the generated code. Demeter/C++ is very stable. You may use any Java software development environment. javac and your favorite editor is what you use on the CCS UNIX machines. On the Alphas JDK is also available. On your PC you may use something more fancy, like JDK or Symantec Cafe. However, all your Java code must run on CCS machines using the Netscape bytecode interpreter. Of very high importance is that you write your structural designs in *.cd files and your behavioral designs in *.beh files using the notation we learned in class. You should also produce a UML class diagram of your structural design. Please start thinking about groups now; on Thursday I will briefly describe the projects and I expect your selection of preferences by Friday. Send your group formation and preferences by email to me. Only one message per group. Your first task for the project is: Write down a few paragraphs what the requirements will be. (We keep this simple, since we practice evolutionary software development where the requirements change quickly. We also have a lot of existing non-Java code which defines some of the requirements.) Prepare a URL ~/.www/com1205.html which describes your project. Put the requirements and project planning information there. Use the pages reachable from http://www.ccs.neu.edu/home/lieber/com3360-f96.html and http://www.ccs.neu.edu/home/lieber/com1205-f96.html as a guidance. Your URL is due Feb. 4. -- Karl Lieberherr Here are additional project proposals: ================================================= DEM project For someone who knows Perl: Take the DEM system which generates C++ code and change it to generate Java code instead. The DEM paper is in the class package. Or if you don't like Perl, you implement DEM in Java (making it longer than the 97 lines of Perl code.) About DEM see also: http://www.ccs.neu.edu/research/demeter/pub-impls/DEM/DEM.html ================================================= Evolution project Given two UML class diagrams g1 and g2 and a traversal specification t, determine which parts of the selected UML sub diagram change as you move from g1 to g2. Integrate with cddraw and higlight the changes in the sub diagram. Host: Binoy Samuel ================================================= Reflection project Improve the implementation of Demeter/Java. The current source code is in: http://www.ccs.neu.edu/research/demeter/sources/DemeterJava/sourceC++/Java but very soon it will be available in Java. Possible improvements: 1. Add propagation patterns to Demeter/Java as described in hw 3. 2. Make compilation algorithm more general /proj/asl/lieber/papers/new-state-passing-compiler Host: Doug Orleans ==================================================