View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Questions on Fall 2003 Milestone 3

Got questions about Fall 2003 Milestone 3? Ask 'em here.

So for this Milestone we are turning in everything "in class" right? I mean we do not need to turn-in something through the coweb?

Ah, and if we use the program that Jonathan D'Andries showed us in class on tuesday, are we receiving any extra credit? If yes, how many points and what are the detail requirements to receive the extra credit.


Jorge Lage

Jeff's reply:
Yes, you'll be turning in your design in class.

After talking with Jonathan, I think we're going to offer two points of extra credit to the team if you use his program. I'll allow him to lay out exactly what is required to receive those points.

Jonathan D'Andries's follow-up:
Here is how the points work. You get one point for using ECoDE effectively for all of your remaining milestones (3-7). You get another point if you write a cases page on ECoDE. This point is not in addition to the point you already get for writing a cases page, just an incentive to write your cases page as feedback that will contribute to the future of ECoDE. You are welcome to write two cases pages (one for ECoDE, one for the class in general) for two points. We are in the process of overhauling ECoDE to improve in three areas:
We are interested in constructive feedback in support of these three goals. Note that we are open and available for senior research projects in support of ECoDE.

Loooking at M7: How strict should our 'task completion' checks be? For example, if the step tells the user to type "w _ Wonderland new." in a workspace, we need to check and make sure they actually do this. We could take the contents of the workspace and scan through it looking for this new text addition, etc. But, what if the user has extra text in the workspace? Or, what if on a later step, the user has accidentally messed up previous text that was supposed to be typed? Basically, we don't see how we could check to make sure they did the free-form text input EXACTLY right...what should we expect?

Our current thought is to just scan and make sure the text we asked for them to type is SOMEWHERE in the workspace, even though it may be in the wrong order??? =(

Jason Whitehurst

Jeff's reply:
Your task completion checks have to be thorough enough that you can determine if your Guide needs to execute a particular instruction on the user's behalf. Note that you can make your lives easier here by carefully designing your instructions. Compare the following:

1. Type the text "w := Wonderland new" into a Workspace.
2. Evaluate it.
3. Do something with the Wonderland


1. Open a Wonderland by typing and evaluating "w := Wonderland new" into a Workspace.
2. Do something with the Wonderland.

In the former case, you need to be able to determine if the user has typed the text. In the latter case, you just need to check for the existence of the Wonderland (which you can do by asking the PasteUpMorph that is the world for its submorphs, and see if one of them is a WonderlandCamera).
In other words, it's ok to design your way around some of these problems instead of trying the brute force. The TAs (and I) can give you a hand with that if you need it.

Why are we extending HelpRepository in M7 to provide XML fileIn/Out capability? Should that just be an addition/modification to TaskInstructions?

Nirmal Patel

Jeff's reply:
You're extending the help repository (note lower case two words) to handle XML file in / out. I didn't mean you had to necessarily extend the HelpRepository class itself. I changed the wording to refer your Guide to hopefully make it clearer that it's up to you, as the designer, to decide where to put that functionality.

The demonstration engine contains the code to do a certain simple steps. so how does this data correspond to the steps in taskInstruction? I'm thinking something like changing steps to store a string description and a block that does the actual demonstration through the demo engine.

Liang Wen

Jeff's reply:
Changing steps to store both text and script (code to execute) is a valid design possibility.

How much of the original code from M1-M2 do we have to keep? We would like to change some of the functionality / rename some classes.

Jake Goulding

Jeff's reply:
That depends. You need to keep the core functionality (a help repository, instructions composed of steps that you can file in and out, being able to add new instructions, etc.), but you can redesign the classes if you think you can build a better design. I wouldn't dream of claiming that the M1 & M2 designs are optimal. =)

Do we have to set up an ECoDE server and take advantage of the DAV functionality of ECoDE in order to get the extra credit? There's little documentation for installing mod_dav for Apache 2 and I can't for the life of me get the two to play nicely.

Also, are the potential 3 extra points described above to be added to our final class average or the project grade?
Brian Gorby

I managed to get it running after working with my server and changing some code in ECoDE. What are your errors/problems?
Nirmal Patel

Jonathan D'Andries' reply:
Nirmal is a good source for questions on setting up mod_dav. However, please ask future technical questions (including details on what you are having problems with) on the ECoDE-specific questions page Post Questions Here. As for extra credit, you do not need to do anything with the DAV server at all (just use ECoDE locally for your design, collaboration is a perk). Collaboration is just for your convenience and the default url is a server you can use if you don't mind the risk of being overwritten by other students or other students taking your design (both of which are relatively low risks if you name your project well).

Nirmal Patel's reply
I am making changes in my free time to the ECoDE code to allow for more possibilities. I'll post my changes to my site later today. Just check the page my name points to later tonight and I should have them up with my reasons for making the changes. You can also email me at merik@cc , but please add "[cs2340]" to the front of your subject so I don't randomly delete it :).

What do we need to turn in if we decide to use ECoDE for the project?
Jorge Lage

Jonathan D'Andries' reply:
ECoDE handles scenarios and CRCCards. You still need to do a class diagram, your schedule, and your team assignemnts. These features are future functionality for ECoDE.
Jonathan D'Andries correction:
You also need to do a test plan (sorry, I forgot that one before).

Several of the groups I am working with have considered allowing code to be entered by a user when defining tasks (or each individual step) as an alternative to hardcoding the "Demonstration Engine" to work with particular tasks. To do this, we discussed two main problems that I think would be interesting for some groups to consider.

1. How do you execute code that is input from the user as text?

There are several answers to this, but using the compiler directly seems to be the easiest to understand and scales appropriately for this problem. To use the compiler, simply send it the "evaluate:" message (example to follow).

2. How do you pass a parameter to user-entered code so it has access to your avatar?

Here is the cool part. You can build a code block from a string and pass it the appropriate parameters. This again involves the "Compiler evaluate:" method. Here goes an example that you can play with:

"Pretend av is your avatar"
av _ 'hi'.

"This is the code that is stored as a String. Note the reference to an avatar object that does not exist in this context."
code _ 'Transcript show: avatar'.

"Using the compiler, build a block of code from a String. Note how the information needed in this context is added as a parameter"
block _ Compiler evaluate: '[:avatar | ', code, ']'.

"Exectute the code. Passing in the context information."
block value: av.

Jonathan D'Andries

From M4: "Activating a behavior should cause the pending idle behavior to happen immediately, and then reset the timeout."

Why should we reset the timeout when activating a behavior? Shouldn't we reset the timeout when stopping a behavior?

Erin Reddick

Jeff's reply:
Yes, sorry if the wording was ambiguous. Activating a behavior should (1) cause the idle behavior to happen immediately, and then (2) after the behavior completes reset the timer. Note that you might want to pause the timer while running the idle behavior so that it doesn't trigger while the current idle behavior is running...

Should the 5 TaskInstructions that we have to write for M3 be in the grading-percentage breakdown? Or are these not actually being graded?

Jason Whitehurst

Followup: Hrm, after reading over M3 again, it seems that we don't even have to write these TaskInstructions for M3, we are just supposed to select 5?

Jeff's reply:
You're supposed to turn in the step-by-step instructions:

For this milestone, each team must also turn in hardcopy of the step-by-step instructions for the 5 tasks they chose.

I'd intended to including the grade for the instructions in the 20% for the quality of the design; I added text to make that explicit.

Link to this Page