IP Library Granted Patent US 11,113,034
Granted Patent B2
US 11,113,034 · App. 16/668,922 · Granted Sep 7, 2021

Smart programming assistant

Inventors: Yash Kumar Singh (New Delhi, IN); Ayush Joshi (Uttar Pradesh, IN); Abhishek Dutta (Jharkhand, IN); Maunica Naga Kolla (Hyderabad, IN)
Assignee: EMC IP Holding Company LLC
G06F8/33G06F3/0482G06F8/34G06F8/77G06F11/302G06F11/3438G06F16/972
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 11,113,034
App. No.
16/668,922
Filed
Oct 30, 2019
Granted
Sep 7, 2021
Kind
B2
Examiner
VO, TED T
Art Unit
2191
USPC
717/109
Abstract

Methods, apparatus, and processor-readable storage media for providing a smart programming assistant are provided herein. An example computer-implemented method includes monitoring user input being provided to an application by a user; identifying a context of the user input relative to a given computer programming language; obtaining one or more candidate code completion suggestions that match the identified context, and information aggregated from a plurality of web sources that is linked to at least a given one of the candidate code completion suggestions, wherein the information comprises programming language documentation information and code samples; and outputting a ranked list of the candidate code completion suggestions and at least a portion of the obtained information to a graphical user interface associated with the application in real time, wherein the order of the ranked list is based at least in part on one or more characteristics associated with the user.

Claims (42)

1. A computer-implemented method comprising steps of:

identifying one or more processes corresponding to an application running on a system of a user;

monitoring user input being provided to the application by the user, the user input associated with developing software code in one or more computer programming languages, wherein said monitoring comprises capturing keystroke data of the user in response to said identifying said one or more processes;

identifying a context of said user input relative to said one or more computer programming languages;

obtaining, from a storage system, (i) one or more candidate code completion suggestions that match the identified context, and (ii) information aggregated from a plurality of web sources that is linked to at least a given one of the candidate code completion suggestions, wherein the information comprises programming language documentation information and one or more code samples; and

outputting, in response to said user input, a ranked list of said one or more candidate code completion suggestions and at least a portion of the obtained information to a graphical user interface in real time, wherein the order of the ranked list is based at least in part on one or more characteristics associated with said user;

wherein the steps are performed by at least one processing device comprising a processor coupled to a memory.

2. The computer-implemented method of claim 1 , wherein at least one of:

the programming language documentation information for a given one of the programming languages is aggregated from an official online documentation web source associated with said given programming language; and

the code samples for the given one of the programming languages are aggregated from a web source that is different than the official online documentation web source.

3. The computer-implemented method of claim 1 , wherein the code samples are aggregated from at least one of a private code repository and a publicly available code sharing web source.

4. The computer-implemented method of claim 1 , wherein said keystroke data is captured when the application is an active window on the system of the user, and wherein the graphical user interface corresponds to a different application than the application that the user input is being provided to.

5. The computer-implemented method of claim 1 , wherein said identifying said context comprises generating a data structure based on said captured keystroke data, and parsing said data structure to separate predefined code components of said one or more computer programming languages and custom code components.

6. The computer-implemented method of claim 5 , wherein the predefined code components comprise one or more of: a class, a function, a variable, a constant, and a constructor of at least one of said computer programming languages.

7. The computer-implemented method of claim 1 , wherein said one or more candidate code completion suggestions correspond to predefined code components of said one or more programming languages, and wherein said one or more candidate code completion suggestions are obtained based on one or more data analytic algorithms that rank the relative importance of the predefined code components to the identified context.

8. The computer-implemented method of claim 7 , wherein said one or more data analytic algorithms comprise a PageRank algorithm and a term frequency-inverse document frequency.

9. The computer-implemented method of claim 1 , wherein each given one of the code samples is associated with a score that satisfies a predefined value, wherein the score is generated by a neural network model and is indicative of a quality of the given code sample relative to one or more code quality metrics.

10. The computer-implemented method of claim 9 , wherein the one or more code quality metrics comprise: one or more rules related to coding practices and one or more performance metrics.

11. The method of claim 1 , wherein said identifying said one or more processes is based on a type of the application, wherein the type of the application comprises one or more of: a code editor and an integrated development environment.

12. A non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code when executed by at least one processing device causes the at least one processing device:

to identify one or more processes corresponding to an application running on a system of a user;

to monitor user input being provided to the application by the user, the user input associated with developing software code in one or more computer programming languages, wherein said monitoring comprises capturing keystroke data of the user in response to said identifying said one or more processes;

to identify a context of said user input relative to said one or more computer programming languages;

to obtain, from a storage system, (i) one or more candidate code completion suggestions that match the identified context, and (ii) information aggregated from a plurality of web sources that is linked to at least a given one of the candidate code completion suggestions, wherein the information comprises programming language documentation information and one or more code samples; and

to output, in response to said user input, a ranked list of said one or more candidate code completion suggestions and at least a portion of the obtained information to a graphical user interface in real time, wherein the order of the ranked list is based at least in part on one or more characteristics associated with said user.

13. The non-transitory processor-readable storage medium of claim 12 , wherein at least one of:

the programming language documentation information for a given one of the programming languages is aggregated from an official online documentation web source associated with said given programming language; and

the code samples for the given one of the programming languages are aggregated from a web source that is different than the official online documentation web source.

14. The non-transitory processor-readable storage medium of claim 12 , wherein the code samples are aggregated from at least one of a private code repository and a publicly available code sharing web source.

15. The non-transitory processor-readable storage medium of claim 12 , wherein keystroke data is captured when the application is an active window on the system of the user, and wherein the graphical user interface corresponds to a different application than the application that the user input is being provided to.

16. The non-transitory processor-readable storage medium of claim 12 , wherein said identifying said context comprises generating a data structure based on said captured keystroke data, and parsing said data structure to separate predefined code components of said one or more computer programming languages and custom code components.

17. An apparatus comprising:

at least one processing device comprising a processor coupled to a memory;

the at least one processing device being configured:

to identify one or more processes corresponding to an application running on a system of a user;

to monitor user input being provided to the application by the user, the user input associated with developing software code in one or more computer programming languages, wherein said monitoring comprises capturing keystroke data of the user in response to said identifying said one or more processes;

to identify a context of said user input relative to said one or more computer programming languages;

to obtain, from a storage system, (i) one or more candidate code completion suggestions that match the identified context, and (ii) information aggregated from a plurality of web sources that is linked to at least a given one of the candidate code completion suggestions, wherein the information comprises programming language documentation information and one or more code samples; and

to output, in response to said user input, a ranked list of said one or more candidate code completion suggestions and at least a portion of the obtained information to a graphical user interface in real time, wherein the order of the ranked list is based at least in part on one or more characteristics associated with said user.

18. The apparatus of claim 17 , wherein said one or more candidate code completion suggestions correspond to predefined code components of said one or more programming languages, and wherein said one or more candidate code completion suggestions are obtained based on one or more data analytic algorithms that rank the relative importance of the predefined code components to the identified context.

19. The apparatus of claim 17 , wherein each given one of the code samples is associated with a score that satisfies a predefined value, wherein the score is generated by a neural network model and is indicative of a quality of the given code sample relative to one or more code quality metrics.

20. The apparatus of claim 19 , wherein the one or more code quality metrics comprise: one or more rules related to coding practices and one or more performance metrics.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (051302/0528) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.); SECUREWORKS CORP.
Reel/Frame 060438/0593 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0742 →
RELEASE OF SECURITY INTEREST AT REEL 051449 FRAME 0728 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
Reel/Frame 058002/0010 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Dec 31, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 051449/0728 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Dec 16, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 051302/0528 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 31, 2019
From: SINGH, YASH KUMAR; JOSHI, AYUSH; DUTTA, ABHISHEK; KOLLA, MAUNICA NAGA
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 050874/0648 →
Continuity (1)
Related Publication 20210132913A1 · May 6, 2021
Cited By (1)
US 12,737,158