Theodore Lowe, Ap #867-859
Sit Rd, Azusa New York
Theodore Lowe, Ap #867-859
Sit Rd, Azusa New York
We have been developing and improving our methodology since the year 1999. When we started teaching college-level programming to high school teenagers, online. Until we perfected our method.
Our method is constantly making the students think, and help them do it more clearly. It is not enough if they say they understood. We ask students to explain, because that makes everything way clearer for them, and allow us to see how well they have really understood.
We ask them to do different challenges, and we teach them to succeed in those challenges. When they say they understood we make different hard questions about the code to help them think deeper. We use a lot of digital markers (such as arrows, lines, circles, etc) during lessons so it is easier for them to understand.
We ask them to do tweaks to the code and to predict what will happen. We teach them strategies to build software that will solve problems, such as the Top-Down-Down-Top technique.
Because C++ programming is extremely hard. And programming is a totally new skill, it is very very different from anything they have learned so far. But, the great news is that:
Most students pay big money to someone else to finish their final C++ programming projects to pass, but they never master C++ programming. This becomes a big setback in their careers.
We have worked hard for decades to create a solution for this.
With our advanced pedagogic strategy, everyone can master C++. We only have one requirement:
Elementary school mathematics (such as adding, subtracting, multiplying, and dividing) must be well understood by them.
When we are learning something new and complex (like programming) our mind gets covered with a blurring cloud. And we say "I just did not understand anything". It is depressing, and the main danger of this problem is that it starts convincing the student that he/she will never understand, even less master, the subject matter. This technique solves that.
What exactly did we not understand? The key is to answer this question and to explain our answer. We have to explain what specific aspects we did not understand; be it at loud to ourselves, or writing; or talking with someone.
When we make an effort to spot, isolate, specify what we did not understand, it allows us to clear our mind from the blurring cloud, we start to see way clearer, and we feel powerful and relax.
We must do a list of those things or aspects that we did not understand, and whenever possible (it is not always possible), but whenever possible, we need to try to create possible answers to our doubts.
And afterward, it is important to write down a summary of the spotted doubts and the possible answers. And then go with our online instructor or rewatch the recorded lesson.
Several times just doing this technique and rewatching a recorded lesson is enough to understand.
Other times it is not enough, but when you go with your online instructor, with your specific questions and possible answers explained and summarized; you will understand amazingly clearly and fast the tutor's explanation.
Once a program is done, we explain it with different materials including drawings. Until all students understand.
Then, students have to explain it themselves, because explaining something supercharges your mind, it actually makes you smarter. They should use drawings whenever necessary; drawing to explain how a program works will make it way clearer, so it is important to do drawings of what is going on. Students will do this as homework, be it alone or preferably with a fellow student.
If they can not understand something, the very attempt to explain clears their mind. It helps them to connect "abstract dots". Also, it helps them to see what it is that they do not understand, so when they ask the tutor, they do it in a far clearer way. So if they watch the lesson again, they are able to see more clearly what is going on.
So now they have to re-do the program without any kind of help at all. While they are doing this, they should not consult any reference material, again. They should not watch the recorded lessons regarding that program. And without reading or seeing any supporting videos or texts, they have to start from zero and do the program all by themselves, and do changes to the program, do their own improvements and/or tweaks.
And students have to comment widely on the program. Especially their own tweaks and/or improvements.
Commenting on a program is to write explanations inside the code to explain what is doing each part of the code and how it is all working.
By doing this, they will actually master that program.
If they can not do the program without help or reference material; then, they can watch again the recorded lessons, and/or ask questions. Whatever they need for them to understand. After that, they have to try again and do the program by themselves from zero, with no reference material, making their own tweaks and commenting on it, clearly.
Whenever they do it using help, they have to do the program once more without any help whatsoever, from zero. If they still need help they have to do it with the help they need, but then they have to do it again without help, from zero. So it is a cycle until they can do it all with no reference material:
the program from zero, the explaining/commenting on it from zero, and the tweaking.
It doesn't matter if the student needs several "rounds" or cycles. It is perfectly normal to need several rounds, so do not worry if you need to do 3 or 4 rounds of attempts until you are really able to do it all alone by yourself and explaining/commenting it by yourself.
It is very important to remember that it is perfectly normal for a lot of students to do several rounds, it is really key that you feel comfortable doing several rounds, maybe other of your classmates will be able to do it in one round, you mustn't worry about that.
During my decades-long experience, I have come to realize that it is not important if a student needs to do this technique several times. I have seen students who always did the technique in one round, vs students who always needed several rounds (hence needed overall more time to learn to program). Only to see, after some years, that a lot of times the students who needed more time to learn ended up being far better programmers, after time passed.
It was not always like that; but about 80% of the time, the ones who needed more rounds; and actually took the time and effort to do those rounds (the way they have to be done without cheating); actually ended up being far more successful.
It was mesmerizing to see 80% of the times, those who were supposed to be the geniuses of programming, ended way below on the programming game ladder. Whilst those who struggled (but accepted the challenge), ended up above and earning way more money. Again, not always the case; but most of the time it was indeed the case, trust me on this one.
We have several hypotheses to explain the reason for this, but that is not part of this article.
For this technique, students as homework, and using a programming code, draw an explanation of how that code works. The idea is to create a diagram of how the flux of the program makes it all work, both step by step, and as a whole system. To make a visual explanation of the process and the functionalities working together as a factory, like a robot, like an engine, as a machine. So this technique is similar to the explaining technique, but it adds and gets help from visual aids to explain, to put the pieces together, working coordinately.
The drawings can be done by hand or using any simple software they can even be as simple as adding some arrows, circles, triangles, and text to a program code.
The drawing you see before this text was done by one of our students.
In our long journey in formal learning improvement, we have used all the pedagogical theories and models that exist:
Constructivism, Active Learning, Inquiry(problem)-Based Learning, Liberationism, Montessori, etc.
Recently, there has been a great emphasis on Project-based learning (this is part of Constructivism). But the problem is that we have had students who come from online schools which only follow the Project-Based approach, and most of the times the student doesn't learn much because the teachers are so focused on developing an amazing project to impress the parents that these teachers end up doing most of the project, or just telling the student exactly what to do, after a small explanation of what is being done, which of course is not adequate at all.
A lot of these students, in turn, feel so thrilled to "do" such amazing and advanced things, in such an easy way, that they just go along with it, proudly.
Parents do not have time to see what is going on in-depth and just feel very happy to see the amazing "results" of their "children's efforts".
Focusing on projects is totally essential in any learning, more so in programming learning, but it simply can not be all there is. Project-based teaching has great advantages, but it also has disadvantages.
The most important one is that you can never be sure if the student actually did the project all by himself, without copying part of it, or most of it from other students or from the internet, or as we said already, from the teacher...without understanding, without actually mastering what he is doing. The problem comes when the student goes to college or tries to get a job. He gets examined and fails. Or when he has a great new game-changing idea and tries to develop a simple prototype for the investors, and he can't develop even the simplest prototype; so he asks help from everyone... and he gets scammed.
So our approach is an eclectic one, we certainly use projects, but also: exercises, teamwork, friend-monitors, all types of tests, different homework, and our proven highly effective programming-focus techniques.
Because our goal is not to impress you perse, but:
On our forum students can write questions, ideas, course-related experiences, get responses from instructors as well as peer students... And make friends that are interested in the same things! This takes the learning process to a whole new level, expanding it beyond the lesson hours.
In short we do everything on a C++ server, actually multiple servers. On "The cloud". Hence, programming C++ with us is like checking your social media, you can do it everywhere, in any device. You can even use a cellphone for the whole entire course, because you will be able to write code and test it on it. But if you want to install it on your computer that is perfect too!
Parents can have a meeting with the instructor before the course starts. We are in constant contact with parents, we send emails/WhatsApp messages to let parents know how their children are doing. And if they are attending lessons. Parents can watch the recorded lessons and the recorded chats. Parents have access to the forum in case they want to formulate questions to the instructor. Parents can decide if their children share their webcam, if they use the microphone, or if they will communicate just with the public chat.
©2020. All rights reserved by Skill.Love.