Uma pincelada: considerando que o paradigma imperativo é presente e o mais usado em todas as linguagens de programação com grande volume de projetos, nao é equivocado, em termos praticos, dizer que, ao saber lógica, você programará em qualquer linguagem.

A chance de um programador qualquer ter que lidar com linguagens como Haskell ou linguagens Assembly é minima, a menos que a pessoa seja uma entusiasta, e neste caso, ela saberá de antemão com o que está lidando.

O principal ponto da minha crítica é que não é deixado claro que estruturas de controle, procedimentos e orientação a objetos estão relacionados a uma forma específica de programar. Fui ensinado na faculdade que lógica de programação era basicamente o paradigma imperativo. Quando me deparei com outras formas de pensar ou fui para algo mais teórico perecebi que era mais complexo que isso.

Como Análise e Desenvolvimento de Sistemas é um curso a nível tecnólogo, que em tese, serve para formar mão de obra e não necessariamente cientistas como na Ciência da Computação, é justificavel que se assuma um olhar mais pragmático e ensine apenas o paradigma imperativo, pois como você mesmo disse, é de longe o mais popular, mas, mesmo que pragmaticamente digamos que ao saber o paradigma imperativo se programa em qualquer linguagem, há pessoas que acreditam nisso de forma literal, e que teoricamente todas as linguagens se resumem a ele. Evitaria muita confusão e promoveria um olhar teórico muito mais sólido se fosse deixado claro que o que se está aprendendo é a lógica do paradigma imperativo.

Percebo que em linguagens impertivas, mesmo que meus amigos consigam usar o mínimo de lambda, ainda acaba por ser um ponto de dúvida e a maioria não consegue produzir códigos mais elaborados justamente por não entender que é outra forma de pensar. Hoje em dia todo mundo se beneficiaria pelo menos um pouco do estudo da programação funcional.