Pues primeramente yo te diría que comenzaras por pseudocodigo. Aprender buenas formas de programar antes de empezar a aprender cualquier lenguaje de programación. Seguro que googleando encuentras algunos ejercicios de pseudocodigo. Después cuando te empapes y sepas estructurar las ideas en tu cabeza y escribirlas correctamente, escoges un lenguaje. Te recomiendo C o algun lenguaje orientado a objetos (este te lo aconsejo más xD). En mi caso aprendí C# con Visual Studio Express. Para aprender no está nada mal.