В процессе обучения важную роль играет "проблемно-ориентированный подход"
Задача программирования решать проблемы или задачи!
Т.е ставите задачу на начинаете ее решать.
В процессе решения вы будете сталкиваться с непонятками, вот их решение вы и будете искать в теоретических материалах.
Я бы делал так:
1) Программирование ради программирования не имеет смысл.
Нужен результат работы который бы удовлетворял ваше эго (результат который реальный пользователь сможет потрогать и оценить, а возможно и купить)
2) C# заменил бы на на что то более практичное например на Java или Obj-c,
Объяню С# применяется B2B секторе или B2C, обычно - это некие проекты для компаний, т.е пока у вас нет компании и проекта, результат вашей работы никто не оценит, соответственно смысла этим заниматься особо нет.(Вам будет скучно,т.к это "Обезьяний труд")
Лучше начать учиться с разработки мобильных приложений, так кол-во скачиваний и лестные отзывы будут греть ваше эго, т.е уже появляется цель для чего это делать
3)Как лучше это делать.
Берете любое приложение с большим кол-вом скачиваний ипытаетесь сделаеть, такое же, но только лучше(Лучше в интерфейсе или каких то плюшках. В общем главное сделать лучше).