To do list
Next implemented methods & intern features :
- done 2008/04/24 implement expand_and_reduce_next_step() in order to replace the write_output() algorithm from the Expansion sheet and handle all general cases (including Sums like 3x - (x+3)(6-2x))
- improve calculate_next_step() for the Products : numbers with fractions ;
- improve calculate_next_step() for the Sums : any, with or without fractions, including same denominator reduction)
- a safe-run mode, using threads to avoid any unpredictable bug make the software crash on line
- geometry objects (planned for next year)
Code reorganization/rewriting :
- seems useless Create a Sign class...
- done 2008/05/07 Reduction sheets : reorganize the sheets/exercises/questions...py according to the model of the Expansion sheets/exercise/question (for Reduction sheets, that should be made easier after the expand_and_reduce_one_step() method is available)
- done 2008/05/09 Equations sheets : reorganize the sheets/exercises/questions...py according to the model of the Expansion sheets/exercise/question
- done 2008/07/17 Calculation sheets : reorganize the sheets/exercises/questions...py according to the model of the Expansion sheets/exercise/question
- rewrite & simplify Equation.solve_next_step() using the new implemented calculate_next_step() and expand_and_reduce_next_step()
- factorize the __init__() source code of the questions objects (see if 'question_number' in options... and if 'expression_number' etc.)
- factorize the source code of Equations __init__()
- reorganize the machine Structure (replace the too LaTeX-typical methods by more general ones ; put off the expression_begins field and the reinitialize() method)
- prepare the machine.LaTeX code to welcome other languages easily (like arabic...)
- rewrite the make_string() method of the Product object using the throw_away_the_ones() method which should allow to implement make_string() much easier in the case of compact_displayed Products
- done 2008/08/03 factorize the source code of Sums & Product objects by letting them extend an Operation class that would have a neutral element, a symbol (× or +) etc. All their code is not factorizable, this reorganization can wait till next year. Would be welcome as any factorization decreases the number of duplicated bugs !!
- done 2008/05/18 rename calculate_one_step() in calculate_next_step()
- create autocalculate() to automatize the calculation steps (Fractions sheet for instance)
- done 2008/11/05 reorganize the names of the different sheets/classes to unite them per theme (like all Algebra sheets should have a name begining with Algebra, ShortTestStructure should become StructureShortTest etc.)
- improve the equations short test so that some results are reducible fractions, others not ; so that the last equation is more even between two creations (so far, it is so that sometimes, a reduction like 2x-5x = (2-5)x is required, sometimes not...)
Next sheets :
- done 2008/05/09 Algebraic expansion & reduction "balance sheet" level 1 (without Binomial Identities)
- done 2008/05/21 Harder equations sheet (with expandable Products)
- done 2008/05/21 Equations short test
- Calculation with exponents
- Calculation with exponents short test
- Algebraic expansion & reduction "balance sheet" level 2 (with Binomial Identities)
- Basic, Classic & Harder equations sheets with fractions inside :o)
- done 2008/10/25 Fractions sums calculation
- Fractions operations (sums of products etc.)
- Fractions calculation short test
- Numeric calculations (operations priorities etc.)
- Calculate the numeric value of an algebraic expression when values of each variable is given
- Linear & affine functions (calculate the image of a number / the number whose image is... etc.)
Next software's features :
- rst output (planned for summer)
- odt output (planned for summer)
- mml output
- gui (depending on other developers' contributions)
- ? Windows version / Mac OS version (depending on other developers' contributions)
Translations :
- Well, it depends on people who want to contribute :o)
Bug fixes :
- fixed 2008/04/24 The second Quotient (or Fraction) in a Product displays brackets around negative numbers
- fixed 2008/05/05 calculating "-\frac{9\times 3}{3\times 1}" would result in a positive result instead of a negative
- fixed 2008/08/03 When reducing a Product like 9/(-2) × (-8)/10, avoid the useless step 36/10
- fixed 2008/05/06 When reducing a Sum where only numbers have to be reduced, avoid to write twice the same line (like in 3 + 4 + x becoming first 3 + 4 + x and then 7 + x ; this bug should be fixed by developing the expand_and_reduce_one_step() method)
- fixed 2009/02/26 Patch the Monomials' patch (see obj.calc.Product.requires_brackets())
- fixed 2008/05/08 when reducing 4x + (-15x + 8 - 5x), 4x - 20x + 8 is repeated twice
- fixed 2008/05/10 expand_and_reduce a special identity like (3+3x)(3-3x) displays the last line twice
- the ancient 'many' option (aka number_of_questions) won't work in the Equation Exercises (because of the write_answer what is meant to display exactly 6 solutions). maybe introduce two (or other) different ways of displaying the result, depending on the kind of exercise (preformatted or not) or better, depending on the number of equations to display (more than 6 => begin a new page etc.). check first if it would work with less than 6 equations. maybe don't use anymore the self.number_of_equations_per_column field ? maybe increment a counter while creating the answer to know how many lines need each resolution to decide how many rows and columns are to be created in the tabular
- the __init__() of question/ExpressionReduction.py (used for example in AlgebraShortTest, exercise #1, question #3) with the following arguments :(self.machine, kind='sum_of_products', length=2, expression_number=2) produces sometimes numeric-only expressions. avoid it !!