Here in Bremen, Germany, I had been wandering the same thing! I have background in CS, some experience in teaching and experienced immigration myself. Some friends of mine and myself started giving basic german classes to a group of asylum seekers. We have been doing this for a 3 month now and experiencing some of what dorfuss writes about. Especially regarding the commitment to doing homework and attending classes. But also extreme desire of some to learn and learn much. All guys that I met managed to learn more german in 6 Months than I did in 2 years. Many don't want to come back. They want to stay, study and work. I believe that having rudimentary CS skills is as important as literacy in Germany nowadays especially for students. So I see a great potential in such projects and would contribute to one.
Adding to the tips which the others mentioned here are some things we learned offering a german class. This list is not backed up by education theory or even best practices. This is just what we learned through trial and error in our own little project.

Consider this:

- Build/find a team. It is impossible to run such projects on your own. We have 10 people divided in 2 groups. Each group is offering a class every two weeks, i.e. this week Group 1, next week Group 2, week after Group 1, ...
Having a group helps to offer consistency in the face of unforeseeable events like not feeling well,

- Offer classes on a regular basis like every week on Tuesday at 18:00. (otherwise people get confused.)
- Set a location. Always meet at the same location. (otherwise people get confused.)

- Remind people every week about the class. Go and pick them up at their place if needed. Many come from cultures where saying 'see you next week' and 'Terminkalender' mean nothing.

- Prepare yourself mentally to see no interest, don't get frustrated. Sometimes we were standing there having only 1 student showed up. We then went to every room again to advertise our class and got 10 guys to join on that day. This does not happen often, but it happens.

- Don"t offer incremental courses where every next class builds on top of the previous. This won"t work. The people won"t show up, and will not do their homework. Be ready to explain the 'alphabet' (like explaining what type is) every time to some but also offer some intermediate material to others. We split every group into basic and intermediate subgroups while teaching German, this seems enough.

- Prepare material in form of loosely coupled practical exercises for 2 levels: beginners and intermediate. For ex learning HTML a bunch of beginner exercises would cover each single html element, a bunch of intermediate exercises would cover combinations of elements for producing meaningful layouts. But don't plan too much, having 2-3 weeks planning ahead is enough. You will often have to reuse old material.

- Offer some fun after a class, but don't offer breaks. We figured that 1.5 hours learning + 1 hour playing football, billiard, cards, or board games afterwards works the best for us. Having some entertainment afterwards helps to build personal connection - a very important thing.

Regarding the actual content I would suggest using Web technologies as the basis for teaching CS. It is well documented (see https://developer.mozilla.org/en-US/Learn, http://www.w3schools.com/html/default.asp). There are lots of interactive examples. Everybody has experience using web. It's everywhere, you don't need special software/hardware, one can even use their smartphone to play with HTML/CSS/Javascript.