You hear it all the time “all the resources you need to learn computer science are online!” and “you can get help from professionals in online forums.” Sure you can. It’s all true. Does it work in real life? Absolutely! Does it work for everyone? Not a chance! Will it work for you? Who knows!
Ok now the details. There are a lot of online courses one can take. And people do take them. Completion rates are abysmal though. Let’s face it they don’t work unless a student is highly motivated. One also has to know they are interested just to sign up. That means they are not so good for getting people interested in the first place.
Asking for help online is even more problematic. This article - Friction Between Programming Professionals and Beginners – goes into a lot of detail and I recommend it. The tl;dnr version is that professionals can be very impatient, even nasty, with beginners. And that makes things unpleasant for many. You need a thick skin to ask for help online in far too many cases.
Beginners do best, I believe, with a patient supportive mentor. It’s hard to find one of those online. In the classroom they are the norm though. A classroom teacher, teaching face to face, can do a lot that an online class cannot do as easily. Projects can be more easily adapted or adopted that meet the interests and needs of a particular class. They can even be personalized to meet the different learning styles of individual students.
A classroom teacher is bound to be more supportive of “stupid questions”, of repetitious questions, and of questions that are poorly expressed. Being a teacher is more than being an expert in the material – it means being an expert in explaining things. I’ve done a lot of trying to help students/beginners online over the years. It’s a lot easier in person though.
What I think it key though is that in school one can have required courses. A well-designed course with a good teacher can really spark an interest in a subject for a student. And even more importantly a good teacher can help students to continue when things get frustrating. And things do get frustrating while learning computer science.
So while online can be useful, and after school programs can be great, what students really benefit from is a face to face class with a good teacher.
I think it's important to self-identify when you comment on topics like this. I'm a former computer science teacher so I definitely am in support of a "real class", whatever that means. I would suggest that, if all you want to do is learn the syntax, then there are all kinds of options including classrooms and doing it online.
ReplyDeleteBut, "computing" to me goes way beyond just learning the statements. It includes:
collaborating with others for ideas to make a good program better;
having another set of eyes to spot that problem in the code;
other advice about interesting layouts;
a teacher to make sure that you don't procrastinate and eventually get it done;
a teacher who doesn't just give boring textbook problems to solve but really interesting real-world problems;
ties items in the news to the discipline;
and most of all, a class brings the excitement of code coming to life, the thrill of sharing success with others, and just a more satisfying coding experience.
I personally cannot do the on-line thing. I was trying to learn Unity on-line a couple of weeks ago. The tutorials did not match what my screen looked like and if I did a right click that was supposed to open a window, there was no window. A real teacher could have solved the problems and given alternatives. These "not working like the tutorial" situations can lead into good learning situations if there is an actual person to work with. In the on-line situation they are just time consuming and frustrating. People can do these if they have lots of time, dedication, and a motivation to drive them. Sitting in a room by yourself just takes some of the color out of learning to program. Several people in a class can do the "look what I found" kind of thing. Learning is more fun and goes faster.
ReplyDelete