Hacker News new | past | comments | ask | show | jobs | submit login

Thanks, I think she has a potential to become a great developer, unless we all aren't replaced by that chatGPT thing everyone's talking about.

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




some hardcore assembler stuff, like maybe some simple or visual demo

Demoscene/sizecoding might be interesting, especially if she also likes artistic stuff.


Would you mind sharing:

1) sequence in which you gave her tutorials e.g. first tetris, then snake game, etc.

2) sources that you used to guide her through these tasks? e.g. youtube videos or other links.

Thanks.


First I have her the basic Python course, [0]

Then more advanced Python course [1]

Then we went for Tetris. I did provide her help in getting the initial loop running where you press the key and something happens, then she implemented the game logic by herself. I did ask her to explain the architecture to me in broad strokes prior to development, and gave her some feedback, so the architecture was adjusted a bit.

First version was built in a very direct way, so once it was done I told her about Object Oriented Programming and she rewrote Tetris using objects in a more elegant way.

Then she moved over to Snake game, and mostly did it by herself, reusing parts of the code that were used in Tetris (main game loop thing, mostly), I mostly provided feedback and beta testing. We had some interesting moments debugging the wave algorithm which computer player snakes used to find a target (a simple wave algorithm), and improving performance. Then, we moved on to this LZW thing and, unfortunately, its creators immediately started dying.

The reasoning why I chose these particular tasks is because they are all relatively limited in scope, so a studying task is not enormous in size so you never finish it and actually have a chance to ship a finished product to show it to friends/teachers.

[0]: https://stepik.org/course/67/promo

[1]: https://stepik.org/course/512/promo


Thanks for sharing.

I followed this teaching path: scratch > python > sqlite > javascript (web). I am missing algorithms and OOP, and will look for gradual learning resources in these area.

One recent area I tried was observability. With prometheus and grafana, they got into collecting more data points and creating visualizations for them. Bangle.js is another one.


And it seems to me, at least factoring in the upcoming projects, to cover different types of work, not merely progressive difficulty. So she'll get a taste of games, a taste of systems, a taste of web ui, a taste of embedded, etc. It sounds great.


> using GTK

Maybe Qt instead?

Suggestion that because the Qt docs tend to be much, much better + it's realistically cross platform, thus opens up more possibilities.


Maybe, that's not the point. I'd rather do a GTK because back in 2004 or so I had written some software that used GTK so I'm more familiar with it - back then QT still had those licensing issues so everyone who wrote non-free software considered it to be "good, but that license ..." .


I assumed the point was to get a taste of desktop ui app development along with a taste of 20 other kinds of developmemt, not to learn gtk or qt or any particular framework.


fantastic list! although obviously no such plan can really cover the whole space, i cant help but want to suggest adding some languages representation to the list; a simple interpreter or compiler project, or alternatively some symbolic computation eg algebra or differential calculus. being exposed to this stuff via Racket was hugely transformative for me (e.g. https://beautifulracket.com/stacker/why-make-languages.html), but if lisps arent your thing theres plenty of great projects in e.g. java as well: https://craftinginterpreters.com/contents.html


yes, the idea is to do these tasks using a variety of languages, not just Python. With this LZW task, for example, she has already created a compression and decompression in Python and is now working on doing it in C so that it can take a file compressed by a python script and decompress it back with C program.

Regarding Racket, it looks interesting. While I never did anything like it myself back in the day, it looks like it'll be an interesting task for my daughter further down the road.


> unless we all aren't replaced by that chatGPT thing everyone's talking about.

Yes. Bravo to you and your daughter for your perseverance in spite of the looming "disruption" coming for all human knowledge workers.


You are awesome and your daughter is awesomer




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: