Алексей Анисимов, какой вопрос такой ответ. Геометрию и комбинаторику должны объяснять в школе и в школьных учебниках, а по поводу дискретной математики либо идите в ВУЗ на лекции либо попытайтесь найти частого учителя/репетира или придется читать "сухой математический язык". Но лучше просто учитесь тому что дают и через несколько лет пойдете в вуз где вам все расскажут.
Любой компилятор на выходе имеет циферки в двоичной системе. Можете заняться реверс инженеренгом и посмотреть во что преобразует ваш компилятор обычный hello world. Если вы хотите с нуля писать команды нулями и единицами,то вам придется еще адаптировать вашу программу чтобы виндовс принял её за экзешник и запустил, а для этого придется еще изучить из чего состоит исполняемый файл в виндовс.