Age | Commit message (Collapse) | Author | |
---|---|---|---|
2015-08-11 | Pass the entire current path to monkey.fix.step | Timotej Lazar | |
Only the last step is used currently. | |||
2015-08-11 | monkey.fix.step: apply all edits in line order | Timotej Lazar | |
For instance, don't add a new rule at line 1 after changing line 3 - only the ordered sequence of edits will be checked. | |||
2015-08-11 | Remove unused imports in monkey.test | Timotej Lazar | |
2015-08-11 | Simplify monkey.edits.get_edits_from_traces | Timotej Lazar | |
2015-08-11 | Rename monkey.edits.edit_graph to trace_graph | Timotej Lazar | |
2015-08-11 | Cleanups | Timotej Lazar | |
2015-08-11 | Fix recording replacements (remove/insert) | Timotej Lazar | |
2015-08-11 | Improve adding a rule in monkey.fix.step | Timotej Lazar | |
2015-08-11 | Improve codemirror markers | Timotej Lazar | |
2015-08-11 | Improve monkey.fix.postprocess | Timotej Lazar | |
2015-08-11 | Move normalize to prolog.util | Timotej Lazar | |
2015-08-11 | Ignore edits after the first correct version | Timotej Lazar | |
2015-08-11 | Clean up prolog.util.decompose | Timotej Lazar | |
2015-08-11 | Clean up monkey.fix.step | Timotej Lazar | |
2015-08-11 | Simplify get_edits_from_traces | Timotej Lazar | |
2015-08-11 | Minor fixes in monkey.test | Timotej Lazar | |
2015-08-11 | Remove all trailing punctuation from lines | Timotej Lazar | |
Remove trailing sequences of COMMAs and PERIODs when extracting edits from a trace. This is because subgoal order is rarely important in Prolog, and we don't care if the edit happened on the last line or not. This means that we treat for example "conc(A,B)," → "conc(A,B,C)." the same as "conc(A,B)" → "conc(A,B,C)". | |||
2015-08-11 | Small cleanups | Timotej Lazar | |
2015-08-11 | Clean up monkey.edits.get_paths | Timotej Lazar | |
2015-08-11 | Move monkey.prolog to root module | Timotej Lazar | |
2015-08-11 | Clean up monkey.prolog.util | Timotej Lazar | |
2015-08-11 | Minor cleanups in monkey.monkey | Timotej Lazar | |
2015-08-11 | Initial error marking support | Timotej Lazar | |
Some cleanups in monkey.monkey. Need better namespacing. Basic postprocessing (merge edits to same line). | |||
2015-08-11 | Pass auxiliary code to fix in monkey.test | Timotej Lazar | |
2015-08-11 | Refactor monkey.monkey.fix | Timotej Lazar | |
2015-08-11 | Remove a superfluous try/except block | Timotej Lazar | |
2015-08-11 | Reduce number of requests when testing | Timotej Lazar | |
Allow running a query when creating the pengine. Also replace PrologEngine with a set of functions. | |||
2015-08-11 | Find out pengine ID server-side in run_tests | Timotej Lazar | |
2015-08-11 | Move get_aux_code to tutor/models.py | Timotej Lazar | |
2015-08-11 | Remove unused imports | Timotej Lazar | |
2015-08-11 | Add support for hint generation | Timotej Lazar | |
2015-08-11 | Pickle frequent edits when calling monkey.edits | Timotej Lazar | |
Resulting file contains a 4-tuple with edit, line, submission and query frequencies. Each element of the tuple is a dictionary of the form <pid>: dictionary of frequencies The data in this file will be loaded by the tutor app and used for generating hints. | |||
2015-08-11 | Move testing code from monkey.py to test.py | Timotej Lazar | |
Drop monkey/db.py and use Django models instead. | |||
2015-08-11 | Add prolog.engine.test | Timotej Lazar | |
Runs tests for the specified predicate on the given code and returns True if all tests succeed. Stop at first failure. | |||
2015-08-11 | Rename monkey.prolog.engine.test to test_all | Timotej Lazar | |
2015-08-11 | Rewrite monkey.action test code to use Django db | Timotej Lazar | |
2015-08-11 | Use relative imports in monkey modules | Timotej Lazar | |
2015-08-11 | Move pymonkey stuff to monkey/ | Timotej Lazar | |
Importing pymonkey into webmonkey, let's see how this works. | |||
2015-08-11 | Add prolog.engine.test | Timotej Lazar | |
Depends on run_tests/3. | |||
2015-08-11 | Improve error handling in PrologEngine | Timotej Lazar | |
2015-08-11 | Delegate testing to a Prolog server | Timotej Lazar | |
... which obsoletes *a lot* of effort in making the testing procedure more robust in the past two years. Oh well. It seems to be the sanest way of coping with more than one simultaneous user (who could have predicted this use case?). The new way involves a PEngine server, and it seems to work quite well. Remember Knuth: premature optimization (as in ignoring possible solutions because they _might_ be to slow) is stupid. TODO: - library loading (again) - use of previous solution (again) - fix issues when converting non-ground terms to json Side note, constructivism works: in the past few days I have reached a much better but fundamentally ineffable intuition about Prolog, more so than in the past two years teaching it. So, fuck ITS and rather fix the schools by giving students something meaningful to do. Sigh. | |||
2015-08-11 | PrologEngine: add load/unload functions | Timotej Lazar | |
2015-08-11 | Store test cases in PrologEngine | Timotej Lazar | |
2015-08-11 | Add support for per-problem fact libraries | Timotej Lazar | |
Each fact library is loaded at most once, so different problems can share the same library (e.g. family-relation problems). | |||
2015-08-11 | Quote predicate name for abolish/1 | Timotej Lazar | |
2015-08-11 | Improve testing procedure | Timotej Lazar | |
For each query: - generate a single solution - incorrect solution / timeout / other error → FAIL - generate (up to) ten solutions - more than one distinct solution found → FAIL - timeout is OK (a correct solution was found above) - if reached this point → PASS | |||
2015-08-11 | Term.__iter__: create new Terms on each iteration | Timotej Lazar | |
2015-08-11 | Mark solution predicates as static after loading | Timotej Lazar | |
This prevents incorrect student solutions from overwriting or adding to predicates in solution<n> modules. | |||
2015-08-11 | Reorder functions in PrologEngine | Timotej Lazar | |
Place functions for internal use at the end. | |||
2015-08-11 | Use abolish/1 instead of erase/1 to remove clauses | Timotej Lazar | |
Using erase/1 keeps the dynamic property for all defined predicates in the testing module. This overrides the clauses in solution modules. For example, if the user defines conc/3 in the solution for the dup/2 problem, the correct conc/3 would not get used even after unloading all user's clauses. This commit also plugs a couple of memory leaks by opening (and later discarding) a new Prolog frame in functions test, load_solution and mark_solved. |