Думаю, для начала все же надо определиться с языком, так как чистая теория нткому не интересна (хочется же, чтобы работало!).
А лучшего мотиватора к дальнейшему обучению, чем собственный рабочий код, и быть не может!
По мне — хороший вариант C#. Точнее даже не столько он, сколько среда разработки VS. Кнопочек накидал, два раза кликнул, написал, что кнопка делает — программа уже работает! Хоть это и не даст сразу глубокого понимания ООП и не сделает гуру, но ведь первая задача — увлечь, а дальше уже дело техники.
Боюсь схлопотать минусов, но можно попробовать PHP. Он очень простой, но слишком много прощает, так что с него в дальнейшем надо будет переключиться на что-то строго типизированное, но это после появления блеска в глазах. Еще PHP заставит хотя бы немного понять HTML, а это еще никому не вредило. А если потом еще и иметь дело с XML, то знание HTML точно не окажется лишним.
Если ученик прилежный, то лучше всего C++, так он заставит понять такие базовые понятия как стек, куча, указатель и т.п. Я, например, уже зная C# действительно понял, что такое сборка мусора только после того, как поработал с указателями в C++. Это трудный язык, но зато другие после него пойдут достаточно легко.
Ну а книжку выбрать не проблема — их огромный выбор по каждому языку. А какую конкретно выбрать — гугл всегда сможет подсказать.