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 Sum2000 Group Plan Milestone

Ask questions here...

There is a Summer 2000 Team Forming Page for questions like this, Toan. Mark Guzdial

Thank you for pointing this out to me, Professor Guzdial.

Here's a question from P2 that I really need the answer to before my group can proceed-
I have a method that creates a Window with various buttons. These buttons can call more instances of the window to "nest" math objects within each other. The problem is is that I want the method that creates the window to be able to also wait for the user to finish completing that part of the equation, and then return the form instantly. This is similar to a FillInTheBlankMorph, whose 'Accept' button actually returns the string contained in the textfield, allowing the calling method to essentially use just 1 line of code to get the user's request. I basically want to emulate this sort of behavior.
I've made an instance variable in my Window class that would hold the form to be returned, and I've implemented the methods that would write to that form. But I want the method (which created the Window) to basically return the form once it finds out that the form has been created. I've read the above posts on Semaphores because they seem very pertinent to what I'm trying to do, but I can't figure out how to implement them in Squeak. I would theoretically just "halt" the Window initlialize method after the window had been popped up. The method would be halted until the user assembled that part of the eqaution, and when the form had been created, the initialize method would take over execution and return that form.
Any ideas on how i could do this?

Semaphores are already implemented in Squeak, Bill. You could also keep the process in a variable, and send it the message to terminate when the other process needs to.

But in general: Think about what you're proposing in terms of usability. You're creating a seriously modal system which isn't a great idea. I'll talk about that when I get back... Mark Guzdial

I am a little confused about what is expected at this milestone as far as CRC cards and UML. What does ENTIRE mean? For the last Milestone we had to CRC and UML all our classes to that point right? So now we just add the classes that will be for our LaTex stuff?

Chris Morris

ENTIRE means the whole system. This would include the LaTeX stuff. Think of 2.5 as the OOA and OOD of the entire known system, and P3 as the implementation (and of course any changes in the OOA and OOD) of the entire known system. Eric Anderson

To go along with the above stuff about what we need with the CRC and UML, the way our group would be handling the Latex, there shouldn't be any interaction between Latex classes and MathEquationUI classes. However, should we still including them in the CRC and UML material?

Adam Blaiss

Yea, that includes the CRC and UML for all the stuff. If they are completly seperate then you can have seperate diagrams (athough I don't see how math objects can be created out of LaTeX strings if the math objects know nothing at all about the LaTeX stuff or some interface that the LaTeX stuff is following. Make sure that your diagrams show all important relationships between the classes.) Eric Anderson

The milestone description says P2.5 is a design for the 'ENTIRE' system, which seems to refer primarily to P3, but includes any classes from P2 you retain for use in P3 or future milestones. If you revise classes you had in P2, include CRC/UML for the redsigned classes. Ashley Taylor, TA

Guzdial blows for giving us a project due on July 6th!!! What a loser.

Project 2.5
What do you mean by "Internal group timeline with dates and milestones" ?
Thienan Trong Nguyen

This would be a discription of what tasks you assign the individuals in your group and by what time you need them done. The external timeline is the Milestones we gave you, but I would guess that internaly yall have set goals for who does what and when does it need to be done by. Show these timelines Eric Anderson

So should we be honest with this? If our real timeline would look like "do nothing, do nothing, do nothing, mad rush for 8 hours before assignment is due", should we put that down, or should we lie about it and make up something which just looks good? You know what McCracken says about lying!

Jason Bos

Maybe I'm missing something but are we going to get a description for LaTeX or maybe a link where we can learn how it works? It's a little hard to make a design (that you will actually be able to carry out) when you're not exactly sure what you are actually supposed to be parsing. Thanks for any help anyone has.

Adam Blaiss

LaTeX is a text processing language commonly used in CS. There are tons of resources on the web for information. Here is the dmoz directory on it:, but feel free to use any resources you can find. Type LaTeX into just about any search engine and information should come back about it. Eric Anderson

For the explore: command, does that mean to return the string:
MathEquation from: (MathFraction from: 'x' over: 'y')
or am I completely misreading the assignment?

Andy Fortier

Check out the explore method in Squeak. On an instance of an object that you create do 'myObject explore' and see what you get. Now getting a picture of what we want? Eric Anderson

How do I put single quotes inside of strings? for example, how do I make the string 'don't' ? Thomas Annandale

Take a look at the discussion from the last milestone.

Two single quotes in a string makes renders as a single quote. Try doing this in the workspace: 'don''t' inspect. You will see that it is 5 characters with the 4th one being 39 (the ASCII value for '). Eric Anderson

Does P2.5 / P3 have to have all of the same functionality as P2? i.e. are we only going to accept input via MathEquationLaTex or can the user use it by clicking buttons AND/OR via the workspace?

Myke Olson

This is one project, therefore you should still have the stuff from the previous milestones (with the exception of possible changes in API from Milestone 1). Therefore on P3 I should be able to type MathEquationUI start, and have an interface that meets the requirements of milestone 2 show up. The assignment does not say that you have to include the LaTeX support in the UI for P2.5/P3, but feel free to if you want. If you already have the support built in for the classes it should be a simple matter of having a FillInTheBlank object pop up, get the string and pass it to the MathEquationLaTeX object (or any other way you want to get the information from the user). Eric Anderson

P3 says you just need to implement a from: method which takes a LaTeX string. So I don't see where you are required to have a UI for LaTeX in P3, though you can implement one if you want. However, You do need to implement explore:. I also agree that the P2 stuff should be included, and should still work (though not necessarily for LaTeX). Ashley Taylor,TA

Do we need to worry about nested fractions? Like \frac(\frac(x)(y))(z)? Or we will ever need to worry about them in the future?

Myke Olson

I think you should handle nested fractions, but I would not make my project late trying to handle them, because they were not explicitly required. Get a good clean design that can be extended to handle them, if you can't implement them now, and note any limitations of your design/system. Ashley Taylor,TA

This might be a little ahead of the game, but I need to know now so that I can go ahead and get started.... can we assume that the user will input valid LaTeX, or do we need to display some kind of error message if it is not valid? For example, if the user were to enter \alpha\beta, our regular class structure would not be able to handle that, plus this does not follow the structure we have been given to follow. What do we need to do about this? Should we treat the above as a MathOperation where we multiply alpha by beta?

Shaun Dishman

Error handling is not specified in the milestone description, but if you are implementing a parser, it should reject erroneous input, and it would be appropriate to give some sort of informative error message. However, I would not suggest spending so much time on error handling that your project is late. It would be better to include as much error handling as time permits, and document what types of errors your system can or cannot handle. Ashley Taylor, TA

Do we need to be able to parse out things like MathOperations from the laTeX? They are not part of the laTeX syntax, from what I can tell from examining sources. If we do need to be able to parse out such things, what are the operators that we must parse?
–Michael Langford

You should be parsing MathOperations from the LaTeX input string, at least for explore: to work. It's not stated what operators are required, but the the pdf project description mentions 'standard operators', so it would be a good idea to handle these for the purpose of creating MathObjects, even though they are not part of the LaTeX syntax. You should create MathObjects from the LaTeX string for things stated in the P3 milestone description - greek symbols, fractions, and sub/supercripts. This is not necessarily to format the ourput, but to be able to explore: the MathObjects you create. Ashley Taylor, TA

For P3, will we be using TGen or building our own scanner and parser? Also, if we will be able to use TGen, do we have to supply the code for building our own syntax trees?

It is up to you to decide how you want to design it. The only requirement in this regard is that it has to be 100% Squeak code. Eric Anderson

Are we ever going to have to have the equation give us an answer? Like if they enter 1+2 and hit the Enter button, we give them =3. Or is this to simply DISPLAY an equation?

Myke Olson
It is just an equation editor. You just need to be able to create the equations. Eric Anderson

Are the requirements for p2.5 supposed to be for future milestones or for past (p2) and future milestones? Do we include who was responsible for donating the code for p2 from p1?
–Michael Lawler

The milestone description says P2.5 is a design for the 'ENTIRE' system, which seems to refer primarily to P3, but includes any portions of P2 you retain for use in P3 or future milestones. We don't know what P4 is yet, so you can't design explicitly for that, although a good design should be readily extensible to take care of it. P2.5 should contain CRC/UML for parts of P2 which you are going to keep. If you are revising classes you used in P2, include the redesigned classes. If someone donated classes or input on class design from P1, I think you should note that in P2.5 Ashley Taylor, TA

When P2.5 mentions "internal group timelines", does this mean a timeline of past milestones like P2 and P1 or does it just want us to describe a timeline from this point on?

I would mainly focus on from this point on. If you want you can include timeline info from P2 (P1 is not really needed since you did that individually), but what we are really looking for is from P2.5 onward. Eric Anderson

Where can we get TGen?

Scott Aday

Why aren't the last week's lectures in Squeak Book format? I'm not
a M$ honky, so I can't read power point.

I'll get to it...Sigh... Mark Guzdial

Link to this Page