What and how?
This is a course designed to take people from knowing nothing about computer programming to being fairly proficient at it.
(Obviously, your mileage may vary depending on your aptitude and how good you are at problem solving and abstract thinking.)
From personal experience I believe that mentoring is one of the best ways to learn, so this course will be run using Slack. It will be interactive: lessons and instructions will be posted there, and you can ask questions and I’ll answer them, help you when you’re stuck , etc. I think that this is better than just watching a bunch of videos. The other good thing about this, is that when you ask questions, others can answer them too – since I won’t be online 24/7 .
I can probably handle somewhere between 25 and 40 people in this course.
I’ve been teaching Java programming to high school students for about 10 years now — so I'm great at taking someone from nothing to fairly competent. Most of my online projects though are PHP based (https://demo.iquark.ca), but I don’t know PHP well enough to teach it. You can see some of my Java stuff at https://github.com/salamander2/functionID and other repositories there. (We’ll be going over a lot of the content found on Salamander2)
It’s hard to estimate this. I think that about 10 hours a week, though you could probably do it with less. Also, I’ll need regular feedback about pacing – am I going too slowly or too fast?
I don’t really know. It depends on the pacing. I've added the approximate number of hours to do each lesson. At 20 hours + the final project, it looks like this will take 3 weeks (or longer).
Free? Yes. Why?
This course really is free. Normally I teach in a classroom, so I'm still learning about how to package this online. It won't be 100% slick, but that's okay. I would like to eventually offer this as a paid course online. (A paid course means that people are likely to be more committed and less likely to quit for no reason.) All that I want from you is to tell me what works well and what needs improving.
I recommend using Eclipse IDE, but you can use another if you wish.
Everything we do can be done with Java 8. We don’t need and won’t be learning the latest and newest additions.
For graphics, we’ll be using a library (HSA2) specifically designed for ease of use that uses 95% of the same drawing commands as Swing.
Most of the time when I’m introducing a new concept we’ll do a simple text-based program first, then use what we’ve learned in graphics.
As we get to more complicated programs, we’ll also be learning problem solving, breaking complex tasks down to simpler ones.
I'm gouping topics into "units" or "modules" for ease of reference. Units are not necessarily logically connected, they're just grouped for convenience. (I don't want to have a channel for each topic in Slack, but I can with each unit.)
🄶 graphics based, 🅃 = text based (console),
● = subtopic, ► = assignment to do
(approx hours in parentheses)