Okay it's been awhile since I planned out this lesson but I'll start working on it now... Programming is the act of making energy do a specific act, literally, just that simple... Though it does get complex as time goes on so I will explain a few concepts here and now that many people appear to not really understand when dealing with constructs/programming.
The first thing is, yes will is a big portion of it but actually understanding the function that it does is required, if you do not understand it then will literally means nothing. So if you attempted to make a construct to heal someones energy system, but yet did not know how to heal a ES, how do you expect a construct to do it? Some exceptions are self learning constructs/servitors.
The next thing you gotta understand is that creating a construct require time and effort, a lot of people will just tell you to make a quick ball and do the functions with it, but that's not exactly what you should be doing. think of it as a assembly line, you make multiple parts for the construct to do a single task, so if you have a shield, you'll have one piece gathering energy, another storing it, another making sure it's clean in a manner of speaking, another to project the shield out, one to perform keep the shield intact/repairing it, get what I mean? Sure you do.
So yes, thats the basic concepts of programming that you need to understand, for homework, I want you to begin to experiment with programming construct ideas, the first one would be making it orbit you, then slowly build up to a shield, PLEASE don't make the mistake that many do and think that constructs work without testing them and getting others to scan/look at them at the beginning, ofc, you don't really need people to look at them, but for some constructs it really helps at the beginning to get people to scan them/look at them for you.