Можно изучать какую-то теорию, информатику, математику, программную инженерию, решать соответствующие задачи. Но тем не менее непосредственно программирование это про программирование. Нормально учиться ты не сможешь, если не будешь решать практические задачи и писать код. Конечно, код можно писать и на бумажке, но проверить ты его не сможешь.