FORWORD NOTE: this answer is a breakdown based on my Artificial Intelligence, which based on description is very similar to Angelina.
I do want to emphasize that it is NOT Angelina
Like all artificial intelligences, in order to fully design it, you have to break AI and intelligence down deeply. If there is a confusion about a certain aspect to intelligence, you haven't broken it down enough.
I, myself, have managed to break down the intellect of producing a program (or essentially any product) very far and very deep.
Side Note: An interesting and helpful part of finishing breaking it down, was that I did not have to worry about breaking down spoken language intelligence, as that is already well-successfully accomplished and there are APIs out there in which computational creativity researchers can use such as wit.ai
So, we only have to worry about breaking down the creativity aspect.
Breaking it Down:
The Design Process:
Side Note: This I could easily provide a citation for, however it has too many accepted descriptions for me to be willing to cite one and to say that it is the or a correct citation. However, I will be providing one as a reference and that is the one provided very nicely on DiscoverDesign.
The paragraph below is provided by them, and if you are interested in breaking that process down more, DiscoverDesign fully explains the processes in detail for you.
The steps are Define the Problem, Collect Information, Brainstorm and Analyze Ideas, Develop Solutions, Get Some Sort of Feedback, Improve (which is essentially restart the process)
Defining a problem:
As far as this part of the breakdown goes, there two algorithms in which you can use for this subprocess of design:
Easy Algorithm (not really an algorithm): ask from the client what the Artificial Intelligence is providing a solution for.
However, this process could easily be made more interesting:
Difficult Algorithm: design an algorithm that can define a problem without user input.
I did some digging, and the design of the latter relies on one question that lacks enough research for a solid answer, and that is where do questions come from psychologically? or more specifically, how does curiosity work?
With more research on Google I was led to this article specifically addressing that question.
How Curiosity works:
The 2 theories it stated that have yet to be fully proven are drive theory and incongruity theory
Drive Theory simply states, we have a need to be curious, and to fulfill that need, we ask questions.
So, needless to say this theory isn't helpful to the design of the A.I.
Incongruity Theory states that we are able identify things we do not FULLY understand or understand AT ALL which leads us to asking questions.
With help of my peers contributing to my research project, I was able to induce from Incongruity Theory and observations I had noticed within interviews (not job interviews, press interviews) that questions are made by noticing a missing/unclear attribute or characteristic on a certain idea, concept, or object (essentially anything the brain can virtually image or understand).
My Own Inductive Theory on Curiousity
The way that I theorize that these missing/unclear attributes are identified is that your consciousness instantaneously, and subconsciously is looking at other similar ideas and looking at their clear and concisely known attributes
Solution Based on the Theory:
So, what I have designed is fairly simple:
An idea is represented programmatically as an object.
The object has certain characteristics known as properties (which are those attributes).
The program reads over those properties and finds other objects similar to it based on those properties.
It then checks those similar objects for properties that the original object does not have, and therefore marks those properties as unknown on the original object, making it possible to apply incongruity theory
This process is already achieved with machine learning, any questions on this subprocess of design need to be addressed to the machine-learning tag
This could be accomplished by mixing an algorithm that collects information (collects already working solutions) with the algorithm that I described within the curiosity section
This is a really simple one. Debugging (not getting input), and getting user feedback (getting input). To provide analyzation over simply an idea you could combine my algorithm, with another information collecting algorithm to induce whether an idea is feasible.
This is where IDE-development knowledge comes in handy.
In order to make product development easy and understandable to an AI, we have to choose a type of product that could be developed easily.
Editor's Note: I do recommend this in order to keep the testing of the algorithms for the previous processes really simple.
Easily Designed Product that I Selected for Designing an Algorithm:
I am providing this to you, so you can model a way to reproduce this process for the Intelligence you would like to build. So, I only hope that you do not intend on copying it, but my artificial intelligence project is free and open-source, so there is no issue, if you do.
Considering that written programs are very easy products to develop fully, and Considering that program language rules are straight forward. and very consistent in comparison to spoken/written languages, I chose to have it develop programs.
So, in order to do this it has to understand how to write a program. The most essential skill a computer programmer can have and needs to write a program is not a dictionary of programming terms, functions, and commands, but rather knowledge of the syntactical rules for a programming language.
The technological solution to this is pretty much already available in IDE tech, and it is known as syntactical highlighting. All that would have to be done is to re-purpose it from highlighting to assisting with writing.
Getting Some Sort of Feedback.
This is essentially the same as analyzing the ideas, but now we would be using algorithms to analyze the final physical product as opposed to conceptual ideas.
I am designing and researching into computational creativity, and I do want to mention that I just discovered this field of research is a thing by looking up the name Mike Cook on the internet, and that in order for me to help you, my answer does require lengthiness.
Paragraph 3 of the page found there [Mike Cook link] (listed at the time of 10/13/2016 at 8:28pm Arizona (USA) Time) that Mike Cook specializes in computational creativity
With further research this term was coined by the ICCC 2016 according to this google search made by myself at that time.
Unfortunately, google did not further provide me with any products actually being made within this field of research, so I would therefore like to discuss mine as it is open-source under a MIT-license.
Note to Community:
I do want to make clear that I am providing this answer out of helpfulness, and I do understand that it has no credibility, as the product I am using (as an example) is my own. So with that, the community (I have a disagreement with this) does not encourage, therefore I do not encourage that you select this as a correct answer.
Future readers, please add to my answer or note in the comments of any developments in which I can cite in the case that you are aware of such devs and really liked my answer.
If you reference anything about notGucci94's account on reddit I do want to state that that is my account. Therefore, is not useful as a citation either
EDIT: due to compliance with StackExchange's rules, I can not provide the product's name or a link to it, as I am not to be and I am to avoid promoting a product as an answer. If you are interested in the licensing, please email me, and do not ask me to place the product in the answer, and do not ask me via email if you can receive a copy of the product. I am not and will not be promoting here in my community WHERE THE RULES SAY NO!
Please, be mindful of StackExchange's rules, and do not ask me to break them, as I value this community, and do not wish to lose my respect.