Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
572 commits
Select commit Hold shift + click to select a range
f7c6de6
Fixed bug in suppress function (sk_mod_instructor)
lukesg08 Jul 19, 2017
37b7354
Posting feedback code that generates bug in replay.html
lukesg08 Jul 19, 2017
1602da7
Assignment settings is now a modal
acbart Jul 19, 2017
be26041
preliminary API complete
lukesg08 Jul 19, 2017
ef1e54d
Updated API
lukesg08 Jul 20, 2017
a0106aa
fixed typo in feedback code
lukesg08 Jul 20, 2017
0bd05aa
Minor fixes
acbart Jul 22, 2017
da15ac3
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
acbart Jul 22, 2017
5895de3
Doubly defined set_success, add default value for correct parameter
acbart Jul 22, 2017
2f91a29
AI improvements, callback fixed, skulpt file i/o
acbart Jul 25, 2017
b6c9cd2
Refactor subscribe
acbart Jul 27, 2017
d0afed4
Make student data available in instructor API
acbart Jul 27, 2017
68abe69
Testing out code for the instructor iteration api
acbart Jul 28, 2017
0598e82
Check undefined for student module in instructor api
acbart Jul 28, 2017
c39f115
Fix undefined check
acbart Jul 28, 2017
3e75c81
Added New Instructor API and modified various AST behaviors
lukesg08 Jul 28, 2017
c371f23
Make output available in student report
acbart Jul 28, 2017
c52304d
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
acbart Jul 28, 2017
4d0c1c0
Removing one of the insructor_api's
lukesg08 Jul 29, 2017
1a9216a
updated Instructor API (and corresponding documentation)
lukesg08 Jul 29, 2017
cfc1ce7
Experimenting with better docs format
acbart Jul 29, 2017
50e1ef2
Rename instructor_api.rst to instructor_api.md
acbart Jul 29, 2017
c2842d5
Update instructor_api.md
acbart Jul 29, 2017
e9748c8
Reformatting Instructor API docs, correcting some mistakes in the act…
acbart Jul 29, 2017
2594d4b
Improvements to output checking, logging
acbart Jul 29, 2017
54bbbe6
Logging for each report element
acbart Jul 30, 2017
69a2ec8
Improve and document StudentData
acbart Jul 30, 2017
6a46497
Decluttering the instructor API of old methods
acbart Jul 30, 2017
473da39
Cleaned up docs for AstNode
acbart Jul 30, 2017
c6c2375
Extended instructor API system
acbart Jul 30, 2017
0b5c06e
Extended instructor API system
acbart Jul 30, 2017
2d79b2b
Added only_printing_variables to extended instructor API
acbart Jul 30, 2017
29cc7b1
Add to documentation
acbart Jul 30, 2017
1118446
TXT => PY version of Instructor API documentation
acbart Jul 30, 2017
3fbfbba
Interface features, fix styling in feedback.js
acbart Aug 4, 2017
fa44ac3
Reorder interface elements for assignmetn editing
acbart Aug 4, 2017
46ee5dd
On change, gently() function
acbart Aug 4, 2017
108284d
New helper function
acbart Aug 4, 2017
58d0e7d
Instructor API additions, interface fixes
acbart Aug 4, 2017
56ddab3
Handled ops array condition
lukesg08 Aug 4, 2017
0f9c961
Minor silly whitespacing based on Google Style guide
acbart Aug 5, 2017
33f2a13
Somehow clobbered luke's change. What the???
acbart Aug 5, 2017
91eb18f
Turn off block updates when editing instructor code
acbart Aug 5, 2017
e32ce88
edits to AstNode.__getattr__
lukesg08 Aug 6, 2017
03aab86
Fix compliments a little, improve get_values_by*
acbart Aug 6, 2017
fb98bca
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
acbart Aug 6, 2017
520d654
Added check in isSkBuiltin to check for Sk.builtin.str
lukesg08 Aug 6, 2017
5398b98
Added next_tree attribute to AstNode to instructor API
lukesg08 Aug 7, 2017
70b1a98
Fix AI bug, saving disable_timeout
acbart Aug 7, 2017
2fcfd54
integrate changes
acbart Aug 7, 2017
c14bbca
Gently load on_change to avoid undefined
acbart Aug 7, 2017
8b55cfd
Major bug fix for skulpt errors
acbart Aug 8, 2017
855588f
Update instructor_api_documentation.py
acbart Aug 11, 2017
10336b4
Block work
acbart Aug 17, 2017
7b3ede2
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
acbart Aug 17, 2017
1a130f7
New instructor API functions
acbart Aug 22, 2017
d78d20c
Fix docs for explain verifier priority
acbart Aug 22, 2017
ae01ed5
Fix broken AI, new TODO on CorruptedAstNode
acbart Aug 22, 2017
6e97dc8
Fixed printer's line ending for instructor API
acbart Aug 22, 2017
2a1538b
Support None in list slices
acbart Aug 22, 2017
7c5ed5f
Boolean expresion evaluation
lukesg08 Aug 23, 2017
083b09b
Merge remote-tracking branch 'refs/remotes/origin/Summer2017' into Su…
lukesg08 Aug 23, 2017
0016115
Bug fix in numeric_logic_check
lukesg08 Aug 24, 2017
c4234f4
Adding more instructor API Files
lukesg08 Aug 25, 2017
11bd6f3
Logging fixes
acbart Aug 27, 2017
4d4b03d
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
acbart Aug 27, 2017
9dd9119
Build luke's stuff
acbart Aug 27, 2017
9606c9f
Improved numeric_logic_check and fixed bug in next_tree
lukesg08 Aug 29, 2017
2627a59
Fix requests. Fix PAIJS stuff
acbart Aug 30, 2017
a22573c
fixes to instructor API
lukesg08 Aug 30, 2017
0d0d21e
Added comments to interface.js
lukesg08 Aug 30, 2017
4135a50
Resolving conflicts
lukesg08 Aug 30, 2017
e882a9e
Cleaning up tabs in instructor extended
lukesg08 Aug 30, 2017
4a4558e
Adding last 8.3 feedback
lukesg08 Aug 30, 2017
e204c7d
Partially updated documentation
lukesg08 Aug 30, 2017
5591d03
Something in the editor
acbart Aug 31, 2017
5b013b5
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
acbart Aug 31, 2017
7bba9d7
Bring back requests
acbart Aug 31, 2017
c908566
Remove debugs
acbart Aug 31, 2017
a4368d3
New luke build
acbart Aug 31, 2017
8d91b76
adding functions for calling all functiosn in a group
lukesg08 Sep 1, 2017
39a85c5
AI fixes
acbart Sep 1, 2017
36d3d6b
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
acbart Sep 1, 2017
59d6c23
Changed function remapping to just give function name
lukesg08 Sep 1, 2017
f1ca1c1
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
acbart Sep 1, 2017
35a818b
Put instructor feedback errors at top priority
acbart Sep 2, 2017
1012031
Removing nested regex error
lukesg08 Sep 2, 2017
878c64c
fixing bugs in feedback api, updated documentation
lukesg08 Sep 2, 2017
c5734cb
IAPI for functions, improved instructor error handling
acbart Sep 2, 2017
bd01932
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
acbart Sep 2, 2017
ec7441a
IAPI for functions
acbart Sep 2, 2017
0ba58af
API
acbart Sep 2, 2017
b964457
Okay there was a reason for that.
acbart Sep 2, 2017
395d5e5
Fix function checking
acbart Sep 2, 2017
1f99f97
Added tip support
acbart Sep 4, 2017
a9cd23e
Fixed bug in Instructor API
lukesg08 Sep 4, 2017
2fd6af9
Catching up with Cory's changes
lukesg08 Sep 4, 2017
c6c6f6f
Better function stuff, fix I code logging
acbart Sep 4, 2017
b878384
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
acbart Sep 4, 2017
16e65de
Fix on_change, add analyze_program()
acbart Sep 4, 2017
1c83a60
instructor api now uses dummy ast node when no valid parse is present
lukesg08 Sep 4, 2017
83ac44a
Adding on_change shortcut functions
lukesg08 Sep 4, 2017
ecb6e87
Refixing bugs I thought I fixed in instructor API
lukesg08 Sep 5, 2017
43846be
Pushing more changes found by TAs
lukesg08 Sep 6, 2017
b43ba84
Added function for instructor API
lukesg08 Sep 6, 2017
fc8bb10
Added a check to check for all zeros in an array.
lukesg08 Sep 6, 2017
1df3477
New feedback for onchange, fix PAIJS feedback messages
acbart Sep 7, 2017
26947fd
Fixed line stuff for feedback
acbart Sep 7, 2017
4827f36
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
acbart Sep 7, 2017
60da1f2
No logging
acbart Sep 7, 2017
9112544
Added tags to all feedback
lukesg08 Sep 8, 2017
484cd8f
Merge remote-tracking branch 'refs/remotes/origin/Summer2017' into Su…
lukesg08 Sep 8, 2017
3e00dd2
Fix printer not working
acbart Sep 8, 2017
35f4f9e
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
acbart Sep 8, 2017
fd76794
Add delta for unit tests, fix + op block, add more defns
acbart Sep 10, 2017
f9a8dae
Fix the typo in instruction functions
acbart Sep 10, 2017
1525c83
Fixes for error reports in instructor feedback
acbart Sep 10, 2017
86124a6
Integrating changes to instrutor iteration to check for ___
lukesg08 Sep 11, 2017
5e1fee3
Added API function, reworded feedback
lukesg08 Sep 11, 2017
3f53797
No logging code!!
acbart Sep 12, 2017
57a0f15
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
acbart Sep 12, 2017
886f22e
Adjusted wrong_not_append_to_list feedback wording
lukesg08 Sep 12, 2017
8d8e9ab
Fixed typo in wrong_conversion_10_2
lukesg08 Sep 12, 2017
65405e9
Modified instructor API
lukesg08 Sep 12, 2017
125bc88
Added plot_group_error() and all_labels present()
lukesg08 Sep 12, 2017
00be790
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
acbart Sep 13, 2017
aa1582f
Fixes for Upload mode
acbart Sep 13, 2017
69c5021
Fixed Instructor API bug and feedback:
lukesg08 Sep 13, 2017
a7f8232
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
lukesg08 Sep 13, 2017
74893df
Minor interface changes, new API functions
acbart Sep 16, 2017
607338c
Integerate changes
acbart Sep 16, 2017
e2abdf1
Fix call block definitions
acbart Sep 16, 2017
376b477
Attribute call too
acbart Sep 16, 2017
4e87eb5
Made replacement of string interpolation w/format
lukesg08 Sep 18, 2017
5e197b0
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
lukesg08 Sep 18, 2017
1766af1
Fix Parking Defs for PYAI
acbart Sep 18, 2017
9c61a60
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
acbart Sep 18, 2017
3dc7ed2
Fixed format strings in instructor_iteration that were missed
lukesg08 Sep 18, 2017
15b7118
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
lukesg08 Sep 18, 2017
5330bdb
Fixed typo in format string specifier.
lukesg08 Sep 18, 2017
44abecf
Various feedback improvements
lukesg08 Sep 19, 2017
0416d13
Removed \ts and added item to iteration_group
lukesg08 Sep 19, 2017
e268faa
Improving print builtin
acbart Sep 19, 2017
36583ac
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
acbart Sep 19, 2017
48f60ae
Build/commit
acbart Sep 19, 2017
98e18e1
Added rewording for missing_*_list methods
lukesg08 Sep 19, 2017
340eed9
Built
acbart Sep 19, 2017
ed7aa63
Fixed typo in wrong_duplicate_var_in_add()
lukesg08 Sep 20, 2017
a5365e5
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
acbart Sep 20, 2017
009737f
Fixing wording issue in missing_summing_list()
lukesg08 Sep 20, 2017
d87c76c
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
acbart Sep 20, 2017
899bbac
Added code reference in list_not_initialized_on_run
lukesg08 Sep 20, 2017
8cfb870
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
acbart Sep 20, 2017
d7cf055
Adding conditions for unconnected blocks in instructor_append
lukesg08 Sep 21, 2017
1bef91b
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
lukesg08 Sep 21, 2017
1cc445b
Testing server updates
lukesg08 Sep 21, 2017
9c5f525
Testing server updates
lukesg08 Sep 21, 2017
72d08df
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
lukesg08 Sep 21, 2017
83ceefb
IE fix, prevent blocking of loading datasets
acbart Sep 23, 2017
aec08ae
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
acbart Sep 23, 2017
90e2874
Chrome fix - allow opening new tab for data view
acbart Sep 26, 2017
8a21f10
Extra debug info
acbart Sep 26, 2017
0f2c05c
Fix stray offline behavior
acbart Sep 26, 2017
fbe0fe1
Huge step forward in command line BlockPy execution!
acbart Sep 26, 2017
1986404
New prevent_literal/ensure_literal IAPI functions
acbart Sep 26, 2017
1485704
New IAPI for testing operators, and fix for readonly mode
acbart Sep 26, 2017
37fd0f1
IAPI built
acbart Sep 26, 2017
ff2cb1b
Stupid In_
acbart Sep 26, 2017
f9731bc
New queue_input function!
acbart Sep 26, 2017
6b9f300
PAISC supports list comprehensions
acbart Sep 26, 2017
14e2639
Fixed AI
acbart Sep 28, 2017
cef992e
New API
acbart Sep 29, 2017
b649bce
stuff
acbart Sep 29, 2017
9e28515
ugly
acbart Sep 29, 2017
2c4d392
escape
acbart Sep 29, 2017
7a88aa3
AI fixes
acbart Sep 30, 2017
779974c
Multiple assignment supported in AI
acbart Sep 30, 2017
5a46557
Fix for sets
acbart Oct 1, 2017
d392c38
While loop improvements
acbart Oct 1, 2017
46fcffd
Dummy execution for give_feedback
acbart Oct 1, 2017
af345fe
Dummy execution for give_feedback
acbart Oct 1, 2017
f53204a
Further support instructor feedback
acbart Oct 1, 2017
ddb127f
New PAIJS
acbart Oct 5, 2017
f76b87c
Fixes for skulpt
acbart Oct 6, 2017
9bbb876
Fixes for files
acbart Oct 16, 2017
5ff12d0
PYAIJS
acbart Oct 19, 2017
7558c08
Fix with
acbart Oct 19, 2017
1dd0722
New PYAIJS and Instructor stuff
acbart Oct 22, 2017
6aecc26
New plotting stuff, fixes in json modules, etc.
acbart Oct 26, 2017
27a69eb
Fix firefox on start error
acbart Oct 29, 2017
34341a0
commiting small changes to instructor api
lukesg08 Oct 31, 2017
ad7fb15
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
lukesg08 Oct 31, 2017
cbd596d
Server.js node stuff
acbart Oct 31, 2017
8fa0719
Node for gitiginore
acbart Oct 31, 2017
19dcedb
Undelete delete, but remove from index
acbart Oct 31, 2017
dd8a228
AI stuff
acbart Nov 4, 2017
3f20bce
Merge branch 'Summer2017' of https://github.com/RealTimeWeb/blockpy i…
acbart Nov 4, 2017
7e481bb
Fix a.(replace) in code generation for attributes
acbart Nov 9, 2017
63cc0f2
Playing around with code matcher
acbart Nov 17, 2017
cf9ede5
Partial credit
acbart Nov 20, 2017
7c0636e
Completeness Hiding
acbart Nov 20, 2017
8f102a2
Created some utility functions
lukesg08 Dec 6, 2017
7cbb8df
Working version that doesn't support commutativity.
lukesg08 Dec 6, 2017
4614952
Implemented Multiple Matches and commutativity of multiplication and …
lukesg08 Dec 7, 2017
52cf38d
Complete Multiple match with test cases.
lukesg08 Dec 12, 2017
dc4e709
Fixed capitalization error of pass function
lukesg08 Dec 13, 2017
bd2e04f
added handeling of instructor code that contains back slashes (e.g. a…
lukesg08 Dec 13, 2017
3b548b8
Created tests for 8.5
lukesg08 Dec 13, 2017
a400e09
m_wrong_modifying_list_8_5 uses multiple matching
lukesg08 Dec 13, 2017
4e2189b
added missing colon
lukesg08 Dec 14, 2017
1fe9be8
Abstract Interprter -> TIFA
acbart Jan 1, 2018
2abbc45
Merge branch 'TreeCompare' of https://github.com/RealTimeWeb/blockpy …
acbart Jan 1, 2018
66b8e03
Properties=>Variables, Tifa improvements
acbart Jan 1, 2018
d6a70a1
Fix properties interface more, new TIFA features
acbart Jan 3, 2018
0595178
Fix timeout bug, TIFA improvements
acbart Jan 3, 2018
37e5895
Refactor visit to typecheck
acbart Jan 3, 2018
813eff9
Tifa improvements, properties=>variables, engine only mode
acbart Jan 10, 2018
a4e7bf0
Hooking in Tifa, minor feedback modifications
acbart Jan 20, 2018
be25374
Add pytifa to merge.py, and new function_prints test
acbart Jan 20, 2018
c970518
Stupid mutating list/reverse, and new IAPI function
acbart Jan 20, 2018
e34bc03
skulpt print did not return none
acbart Jan 20, 2018
3375453
Tifa subscripting
acbart Jan 20, 2018
192ac9a
output_test
acbart Jan 20, 2018
41ad21a
Fix mistake in returned functions type
acbart Jan 20, 2018
6399dd0
Fix scope rules for tifa
acbart Jan 21, 2018
bfc0d86
Fixed Tifa's import mechanisms
acbart Jan 23, 2018
6060e44
Revised code to do metadata checking.
lukesg08 Jan 24, 2018
00d206e
Added comments to test lines
lukesg08 Jan 24, 2018
b43c609
Merge branch 'TreeCompare' of https://github.com/RealTimeWeb/blockpy …
lukesg08 Jan 24, 2018
4559bcb
More Tifa bindings
acbart Jan 28, 2018
4a39922
Looking at classes
acbart Jan 28, 2018
ac1679a
Merge changes
acbart Jan 28, 2018
b2fc895
New bindings for tifa
acbart Jan 28, 2018
88892ac
Deleting a backup file that was somehow committed.
lukesg08 Jan 30, 2018
6f48a24
Fixed tifa bug
acbart Feb 1, 2018
f46e34b
Merge branch 'TreeCompare' of https://github.com/RealTimeWeb/blockpy …
acbart Feb 1, 2018
0bf7ccd
Fix single branch behavior
acbart Feb 2, 2018
5d0b50d
Changing vocabulary in feedback from property to variable.
lukesg08 Feb 3, 2018
4943055
Recursive types are tricky.
acbart Feb 3, 2018
826decc
Modified treeCompTest.html to include pytifa and related changes to t…
lukesg08 Feb 4, 2018
75a7fd3
NodeJS fixes
acbart Feb 4, 2018
c84d334
Committing post-test feedback code and necessary implementations for it
lukesg08 Feb 4, 2018
7ad459b
Merge remote-tracking branch 'origin/TreeCompare' into postTestFeedback
lukesg08 Feb 4, 2018
7a093cf
include TIFA bindings in the treeCompTest.html
lukesg08 Feb 4, 2018
ad43e52
Merge remote-tracking branch 'origin/TreeCompare' into postTestFeedback
lukesg08 Feb 4, 2018
bd407f4
Updates to some tests.
lukesg08 Feb 28, 2018
512e2d5
Consolidating Branches
lukesg08 Feb 28, 2018
ea470d5
@feature(py2block) added cases for making blocks for floor/ceil funct…
isnullxbh Apr 12, 2018
76ee192
Merge pull request #35 from isnullxbh/hotfix/math-functions
acbart Apr 12, 2018
98d0c75
fix wrong path
May 9, 2018
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
78 changes: 75 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,75 @@
.DS_Store
*.pyc
*.komodoproject
# BlockPy stuff
Thumbs.db
ignore/
kennel_dist/
blockly_backup/
data_analysis/
closure-compiler/
research/
test_corgis/
advertising/*.mp4
~*.pptx

# Node Stuff
pids
*.pid
*.seed
*.pid.lock
node_modules/
jspm_packages/
.npm

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]

# C extensions
*.so

# Distribution / packaging
.Python
env/
bin/
build/
develop-eggs/
dist/
!server/static/skulpt/dist
eggs/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.cache
nosetests.xml
coverage.xml

# Translations
*.mo

# Mr Developer
.mr.developer.cfg
.project
.pydevproject

# Rope
.ropeproject

# Django stuff:
*.log
*.pot

# Sphinx documentation
docs/_build/

3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "python-tutor"]
path = python-tutor
url = https://github.com/pgbovine/OnlinePythonTutor.git
201 changes: 201 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.

"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:

(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and

(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and

(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and

(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.

You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright {yyyy} {name of copyright owner}

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
105 changes: 100 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,103 @@
# Blockly
corgis-blockly
==============

Google's Blockly is a web-based, visual programming editor. Users can drag
blocks together to build programs. All code is free and open source.
![CORGIS BlockPy](/images/blockly-corgi-logo.png?raw=true "CORGIS BlockPy")

**The project page is https://developers.google.com/blockly/**
BlockPy is a web-based Python environment that lets you work with blocks, text, or both. Designed for Data Science and equipped with powerful tools like the State Explorer and Guided Feedback, the goal of BlockPy is to let you solve authentic, real-world problems.

![](https://developers.google.com/blockly/sample.png)
The goal of BlockPy is to give you a gentle introduction to Python but eventually mature you into a more serious programming environment (such as Spyder or PyCharm). Long-term, we may support some game/animation design stuff that Scratch/Snap does, but that's not the real goal.

The BlockPy project is aimed at solving some hard technical problems: having a block-based environment for a dynamic language can be tricky - are a given pair of square brackets representing list indexing or dictionary indexing? Our goal is to use advanced program analysis techniques to provide excellent support to learners.

Overview
--------

The core architecture of BlockPy is a synthesis of:

* Blockly: a visual library for manipulating a block canvas that can generate equivalent textual code in a variety of languages
* Skulpt: an in-browser Python-to-JavaScript compiler/intepreter, that aims to emulate the full language with precision if not speed.

By combining these two technologies, we end up with a powerful system for writing Python code quickly. Everything is meant to run locally in the client, so there's no complexity of sandboxing students' code on the server.

The major innovations are:

* PythonToBlocks: by parsing the AST generated by Skulpt, we can build equivalent Blockly code, effectively allowing round-trips between text and blocks.
* CORGIS Datsets: new blocks access real-world datasets (although currently these are only cached versions, for performance reasons).
* Interactive Guided Problems: Problem text is given to students, along with teacher provided code that can do analysis on the students' code and make suggestions (e.g., observing that they haven't printed anything yet).
* Data Explorer: The data explorer allows users to walk through their code.

Installation
------------

First, clone it locally. This could take a little while.

> git clone https://github.com/RealTimeWeb/blockpy.git


You'll need to build Skulpt and Blockly. Both of these depend on the Closure Compiler, so you'll need to put that in the empty `closure-library` folder. You can follow the [Blockly instructions here] (https://developers.google.com/blockly/hacking/closure) , but the gist will be:

> wget https://github.com/google/closure-library/zipball/master -O closure.zip
> unzip closure.zip

CD into the new blockpy directory

> cd blockpy/

And add the relevant subtree information to your .git/config:

> vi .git/config

Replace the contents of that file with the information found here: http://pastebin.com/raw/QWpJjgU3 (TODO: show the actual commands used to set this)

Next, you'll need to build Blockly:

> cp blockly/msg/js/en.js en.js
> cd blockly
> python build.py
> cd ..
> mv en.js blockly/msg/js/en.js


And then you'll build Skulpt:

> cd skulpt
> python skulpt.py dist
> cd ..

If you are on windows, you may encounter the message "No gzip executable", you can safely ignore this.

And now you should be able to try out the example file!

> start blockpy_new.html

The server has its own requirements.txt and uses a `python manage.py runserver`

If you make edits to either Blockly or Skulpt, you'll need to rerun their build commands. Simiarly, if you edit ``src/interface.html`` than you'll need to rebuild it:

> python build.py

Otherwise, you should be able to edit the ``src/*.js`` files freely. To get a sense of the dependencies, check out the ``blockpy_new.html`` file and then the ``src/main.js`` file. These should be good starting points.


Commands
--------

Both Blockly and Skulpt are subtrees.

Push changes to the subtrees' repos:

> git subtree push --prefix=skulpt/ --squash skulpt master
> git subtree push --prefix=blockly/ --squash blockly master
> git subtree push --prefix=server/ --squash server master
> git subtree push --prefix=server/static/blockly-games --squash blockly_games master

Pull changes from upstream repos (e.g., official Blockly and Skulpt, our production server):

> git subtree pull --prefix=skulpt --squash skulpt_upstream master
> git subtree pull --prefix=blockly --squash blockly_upstream master
> git subtree pull --prefix=server --squash server master
> git subtree pull --prefix=server/static/blockly-games --squash blockly_games master

Note: if you get an error about a "fatal entry", make sure you don't have a trailing slash on the prefix!


Binary file added advertising/BlockPy-flyer.docx
Binary file not shown.
Binary file added advertising/Flyer-v2.pptx
Binary file not shown.
Binary file added advertising/Python.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added advertising/Shirts.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added advertising/Shirts.pptx
Binary file not shown.
Binary file added advertising/Shirts/Slide1.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added advertising/Shirts/Slide1_white.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added advertising/Shirts/Slide2.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added advertising/Shirts/Slide2_white.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added advertising/blockpy-3-ss.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added advertising/blockpy-4-ss.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added advertising/blockpy-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added advertising/major-features.pptx
Binary file not shown.
Loading