IP Library Granted Patent US 10,276,061
Granted Patent B2
US 10,276,061 · App. 14/503,058 · Granted Apr 30, 2019

Integrated development environment for visual and text coding

Inventors: Kelvin Voon-Kit Chong (Mountain View, CA); Srinivas A. Mandyam (Los Altos, CA); Krishna Vedati (Los Altos, CA)
Assignee: NEURON FUEL, INC.
G09B19/0053G09B19/06
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,276,061
App. No.
14/503,058
Granted
Apr 30, 2019
Kind
B2
Abstract

Among other things, embodiments of the present disclosure provide an integrated developer environment that allows users to develop software applications using both visual blocks and text coding, and to seamlessly transition between visual and text coding as desired. This not only provides a powerful tool for sophisticated software developers to quickly develop and debug applications, but also helps newer programmers learn the principles of software development by allowing them to easily transition between the underlying text code associated with visual blocks and vice versa.

Claims (66)

1. A computer-implemented method comprising:

storing, by a computer system in a data store, a file containing a plurality of software instructions;

displaying the plurality of software instructions in an integrated developer environment (IDE) via a display screen of a user interface in communication with the computer system;

receiving, by the computer system via the user interface, a link to a computer program comprising code;

receiving, by the computer system via the user interface, an identification of a first functionality of the computer program;

analyzing, by the computer system, the computer program, wherein the analyzing comprises parsing the code to identify code blocks, and comparing the identified code blocks to known code blocks based on similarity in functionality, wherein the comparing the identified code blocks to known code blocks comprises executing the identified code blocks using a virtual machine to determine functionality of the identified code blocks, wherein the comparing the identified code blocks to known code blocks further comprises comparing functionality including at least one of user input, output to a user, or modification of a state by a user, and wherein executing the identified code blocks using the virtual machine includes analyzing execution of code for different hardware platforms or operating systems;

performing, by the computer system, statistical analysis to determine a probability that the identified code blocks are associated with the first functionality, wherein the statistical analysis is based on comparing the identified code blocks to the known code blocks;

determining, by the computer system, that the probability exceeds a predetermined threshold;

in response to determining that the probability exceeds the predetermined threshold, generating, by the computer system, in accordance with the first functionality and based on comparing the identified code blocks to the known code blocks, one or more visual code blocks, wherein at least one visual code block corresponds to one or more of the plurality of software instructions, and the generated visual code blocks include at least one preexisting visual code block;

in response to detecting an overlap between at least two visual code blocks, automatically applying, by the computer system, a layout scheme to the one or more visual code blocks;

displaying the one or more visual code blocks in the IDE via the display screen;

receiving, via the user interface, a modification to the one or more visual code blocks; and

modifying one or more of the plurality of software instructions to correspond to the modification to the one or more visual code blocks.

2. The method of claim 1 , further comprising analyzing, by the computer system, the plurality of software instructions for semantic errors.

3. The method of claim 2 , wherein analyzing the software instructions for semantic errors includes automatically correcting one or more identified semantic errors.

4. The method of claim 1 , wherein the modification to the one or more visual code blocks includes one or more of: an addition of a visual code block, removal of a visual code block, or a modification to a visual code block.

5. The method of claim 1 , further comprising optimizing the plurality of software instructions.

6. The method of claim 5 , wherein optimizing the plurality of software instructions includes one or more of: eliminating inoperable instructions, replacing one or more instructions with one or more equivalent instructions, replacing a mathematical expression with a constant, or replacing a function call in the plurality of instructions with an alternate function call.

7. The method of claim 6 , wherein the alternate function call corresponds to a predefined visual code block.

8. The method of claim 5 , wherein optimizing the software instructions is performed according to one or more rules defined by a user via the user interface.

9. The method of claim 1 , further comprising generating a parse tree based on the plurality of software instructions in the file.

10. The method of claim 1 , wherein the layout scheme defines a characteristic selected from the group consisting of: a position of a visual code block, a color of a visual code block, and a size of a visual code block.

11. The method of claim 1 , further comprising retrieving, from the text file, information regarding a lesson module relating to a computer programming concept associated with the plurality of software instructions.

12. The method of claim 1 , further comprising optimizing the one or more visual code blocks.

13. The method of claim 12 , wherein optimizing the one or more visual code blocks includes replacing a plurality of code blocks with a single code block equivalent to the plurality of code blocks.

14. The method of claim 12 , wherein optimizing the one or more visual code blocks includes replacing a plurality of code blocks with one or more code blocks that perform a function more efficiently than the replaced code blocks.

15. The method of claim 1 , further comprising analyzing the plurality of software instructions for syntactical errors.

16. The method of claim 15 , wherein analyzing the plurality of software instructions for syntactical errors includes identifying an invalid symbol in the plurality of software instructions and converting the invalid symbol into a valid symbol.

17. The method of claim 1 , wherein displaying the plurality of software instructions includes applying formatting to the plurality of software instructions, the formatting including one or more of: indentation, spacing, or insertion of special characters.

18. The method of claim 1 , further comprising:

receiving, via the user interface, one or more of the plurality of software instructions; and

storing the one or more of the plurality of software instructions in the file.

19. The method of claim 1 , further comprising:

receiving, via the user interface, a modification to the plurality of software instructions; and

modifying one or more of the one or more visual code blocks to correspond to the modification to the software instructions.

20. The method of claim 1 , wherein generating the one or more visual code blocks further comprises:

identifying a target platform on which to run an application based on the one or more visual code blocks; and

generating byte-code for the application based on the one or more visual code blocks, wherein the application is configured for execution on the target platform as a native application.

21. A tangible, non-transitory computer-readable medium storing instructions that, when executed, cause a computer system to:

store, in a data store, a file containing a plurality of software instructions;

display the plurality of software instructions in an integrated developer environment (IDE) via a display screen of a user interface in communication with the computer system;

receive, by the computer system via the user interface, a link to a computer program comprising code;

receive, by the computer system via the user interface, an identification of a first functionality of the computer program;

analyze, by the computer system, the computer program, wherein the analyzing comprises parsing the code to identify code blocks, and comparing the identified code blocks to known code blocks based on similarity in functionality, wherein the comparing the identified code blocks to known code blocks comprises executing the identified code blocks using a virtual machine to determine functionality of the identified code blocks, wherein the comparing the identified code blocks to known code blocks further comprises comparing functionality including at least one of user input, output to a user, or modification of a state by a user, and wherein executing the identified code blocks using the virtual machine includes analyzing execution of code for different hardware platforms or operating systems;

perform, by the computer system, statistical analysis to determine a probability that the identified code blocks are associated with the first functionality, wherein the statistical analysis is based on comparing the identified code blocks to the known code blocks;

determine, by the computer system, that the probability exceeds a predetermined threshold;

in response to determining that the probability exceeds the predetermined threshold, generate, in accordance with the first functionality and based on comparing the identified code blocks to the known code blocks, one or more visual code blocks, wherein at least one visual code block corresponds to one or more of the plurality of software instructions, and the generated visual code blocks include at least one preexisting visual code block;

in response to detecting an overlap between at least two visual code blocks, automatically apply a layout scheme to the one or more visual code blocks;

display the one or more visual code blocks in the IDE via the display screen;

receive, via the user interface, a modification to the one or more visual code blocks; and

modify one or more of the plurality of software instructions to correspond to the modification to the one or more visual code blocks.

22. A computer system comprising:

a processor; and

memory in communication with the processor and storing instructions that, when executed by the processor, cause the computer system to:

store, in a data store, a file containing a plurality of software instructions;

display the plurality of software instructions in an integrated developer environment (IDE) via a display screen of a user interface in communication with the computer system;

receive, via the user interface, a link to a computer program comprising code;

receive, via the user interface, an identification of a first functionality of the computer program;

analyze the computer program, wherein the analyzing comprises parsing the code to identify code blocks, and comparing the identified code blocks to known code blocks based on similarity in functionality, wherein the comparing the identified code blocks to known code blocks comprises executing the identified code blocks using a virtual machine to determine functionality of the identified code blocks, wherein the comparing the identified code blocks to known code blocks further comprises comparing functionality including at least one of user input, output to a user, or modification of a state by a user, and wherein executing the identified code blocks using the virtual machine includes analyzing execution of code for different hardware platforms or operating systems;

perform statistical analysis to determine a probability that the identified code blocks are associated with the first functionality, wherein the statistical analysis is based on comparing the identified code blocks to the known code blocks;

determine that the probability exceeds a predetermined threshold;

in response to determining that the probability exceeds the predetermined threshold, generate, in accordance with the first functionality and based on comparing the identified code blocks to the known code blocks, one or more visual code blocks, wherein at least one visual code block corresponds to one or more of the plurality of software instructions, and the generated visual code blocks include at least one preexisting visual code block;

in response to detecting an overlap between at least two visual code blocks, automatically apply a layout scheme to the one or more visual code blocks;

display the one or more visual code blocks in the IDE via the display screen;

receive, via the user interface, a modification to the one or more visual code blocks; and

modify one or more of the plurality of software instructions to correspond to the modification to the one or more visual code blocks.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 6, 2025
From: NEURON FUEL, INC.
To: TYNKER HOLDINGS, LLC
Reel/Frame 071345/0580 →
RELEASE OF SECURITY INTEREST Recorded May 30, 2025
From: GLAS TRUST COMPANY LLC
To: CLAUDIA Z. SPRINGER, AS CHAPTER 11 TRUSTEE OF NEURON FUEL, INC., ON BEHALF OF THE ESTATE OF DEBTOR NEURON, FUEL, INC.
Reel/Frame 071468/0233 →
SECURITY INTEREST Recorded Nov 1, 2024
From: CLAUDIA Z. SPRINGER, AS CHAPTER 11 TRUSTEE OF EPIC! CREATIONS, INC., ON BEHALF OF THE ESTATE OF DEBTOR EPIC! CREATIONS, INC.; CLAUDIA Z. SPRINGER, AS CHAPTER 11 TRUSTEE OF NEURON FUEL, INC., ON BEHALF OF THE ESTATE OF DEBTOR NEURON FUEL, INC.; CLAUDIA Z. SPRINGER, AS CHAPTER 11 TRUSTEE OF TANGIBLE PLAY, INC., ON BEHALF OF THE ESTATE OF DEBTOR TANGIBLE PLAY, INC.
To: GLAS TRUST COMPANY LLC
Reel/Frame 069290/0456 →
SECURITY INTEREST Recorded Aug 3, 2022
From: NEURON FUEL, INC.
To: GLAS TRUST COMPANY LLC
Reel/Frame 060703/0837 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 10, 2014
From: CHONG, KELVIN VOON-KIT; MANDYAM, SRINIVAS A.; VEDATI, KRISHNA
To: NEURON FUEL, INC.
Reel/Frame 034135/0132 →
Continuity (1)
Related Publication 20160093232A1 · Mar 31, 2016