Regarding teaching, I understood early that while I can program, I have very little understanding on how to teach it. So first, she underwent two Python courses (basic and advanced) on stepik.org [0], which had automated tests and have her an understanding of the language.
Then, I planned to start throwing tasks of increasing complexity at her until she solves them, giving her a more or less complete coverage of all things programming. So far, she has written such things as
- Tetris, in the console, with keyboard input
- Snake game, with competing snakes which use wave algorithm to find path
- LZW algorithm to learn bits and compression and other things
Next my plan for her follows roughly this path:
- some GUI programming, using GTK and Windows Forms. Calculator or maybe Checkers or something.
- some web programming, backend and frontend. Most likely Django / jQuery
- maybe some neural networks since are all so hot now
- some hardcore assembler stuff, like maybe some simple game or visual demo
- some mobile development, Android or iOS
Once she'll be done with all that, I think she'll have quite a clear picture of most general areas of development and will be free to pursue the area she liked the most.
[0]: https://stepik.org