Хотя бы один язык программирования должны знать оба студента: на это указывает форма множественного числа сказуемого. При этом из предложения не следует, что они должны знать один и тот же язык программирования.
Оба варианта возможны.
О человеке может быть сказано только я не знаю (никого) русского, о языке — я не знаю русский и я не знаю русского (хотя последний вариант носит разговорный оттенок).
Действительно, смысл фразы в данном случае не равен сумме смыслов всех слов, которые эту фразу составляют.
Запятые не ставятся, если "почему" - единственное слово в придаточной части предложения.
Предложение стилистически небезупречно. Лучше сказать (в зависимости от контекста): Моя специальность — инженер-строитель. У меня специальность инженера-строителя.
Можно так: за-лью, со-лью, по-лью.