Когда-то, в конечные 90-е годы прошлого тысячелетия, мне попалась очень занятная книга. Это был учебник для первого курса по программированию то-ли стенфардовского университета то-ли MIT. Учебник был переводной, на русском языке.
Как раз для двух семестров. В первом семестре излагалась теория автоматов и языков программирования. Курсовая работа — это создать свой язык программирования. Второй семестр — это теория компиляторов и интерпретаторов. работа с программами yacc, flex. Курсовая работа — это написание компилятора либо интерпретатора к своему, ранее придуманному языку программирования.
В общем этот учебник стал базовым. И что примечательно. Как только я усвоил оба курса. Этот учебник так же загадочно исчез как и появился.
Учебник очень увлекательный и очень практичный. С него и начался для меня мир Unix. (Ну конечно, еще Керниган, Ричи, Пайк — Unix-универсальная среда программирования, Программирование на языке С.)
Поищите, если найдете, ваши труды окупятся многократно. Авторов, к сожалению не помню.