OverCode's public repo (in development). See http://people.csail.mit.edu/elg/overcode for papers, posters, and talks.
├── src
│ ├── pipeline_preprocessing.py
│ ├── pipeline.py
│ ├── run_pipeline.py
│ ├── student_code_solution
│ │ ├── code_submission_package.csv
│ ├── target
│ │ ├── data
│ │ │ ├── answer.py
│ │ │ ├── code_submission.py ONE PER FILE
│ │ │ ├── augmentedData
│ │ │ ├── pickleFiles
│ │ │ ├── tidyData
│ │ ├── testCase.py
│ │ ├── output
│ │ │ ├── correctOutput.json
│ │ │ ├── lines.json
│ │ │ ├── phrases.json
│ │ │ ├── solutions.json
│ │ │ ├── var_mappings.json
│ │ │ ├── solutions.json
│ │ │ ├── variables.json
├── view
│ ├── overcode_data
│ │ ├── target
│ ├── runServer.sh
└── README.mdcd src- Create a subdirectory under src named
target - Extract solutions from a code submission csv created from Runestone Here's an example of a row in the expected CSV format: ['acid','anon_code']
python testcase_making/extract_solutions_Runestone.py student_code_solution/NAME_OF_THE_CODE_FILE target
- Find a correct submission and name it as
answer.pyin the subdirectory nameddata - Next to the
datasubdirectory, add atestCase.pyfile. Each line in this file is a single test case, i.e., a Python function call, prepended by the commandprint - Preprocessor: Execute the solutions on the testcases
- In this repo's
srcdirectory, executepython run_pipeline.py PATH_TO_TARGET_DIRECTORY --run-pre -n FUNCTION_NAME-n FUNCTION_NAMEis optional, but helps us better tidy up solutions before execution--run-premeans "run the preprocessor" which is what we call the code that executes and logs the behavior of solutions. It only needs to be done once, unless the test cases change.
- In this repo's
- Run the analysis pipeline on the results of executing the solutions
- In this repo's
srcdirectory, executepython run_pipeline.py PATH_TO_TARGET_DIRECTORY --run-pipeline
- In this repo's
cd ui- copy the
targetdirectory above as a subdirectory inovercode_dataunderui - run a server in the folder from the commandline, and give ?src=DATASET where DATASET is a key in the config.json file.