I think "irrelevant" is putting it a bit strong, but then I always like strong opinions, more interesting to read. There are a lot of things first year CS needs to communicate to students

1) Problem Solving (this is where most students fail, in my opinion)
2) Writing Code (few fail here, it's rare I've seen a student who can articulate a solution but can't generate code to do it).
3) Software Engineering (the bigger picture stuff, i.e. methods, classes, the whole abstract thinking piece)

My opinion is that there are only four significant concepts in programming that first years really need to master. Everything else (i.e. everything from the lambda calculus y-combinator stuff through to the JUNIT system integration testing) should wait until the basics are nailed.

These 4 concepts are CRAP, That is to say they are

C - Concatenation, the notion that statements are sequential. i.e a=4; b=2; a++; b=a; What does b=?

R - Repetition, the notion that pieces of a program can repeat. Loops of all sorts basically

A - Alteration, the notion that programs do one thing OR the other, IF-statements basically

P - Parentheses, the idea that pieces can be grouped together and re-used. (This is the abstract part).

Now, I'm sure that these 4 concepts are familiar to you already. They are after all the foundation of Regular Expressions.
if (s =~ m!(a+[b|c])*d!) {...} and the like

For me, I'd be happy if every student possessed a full understanding of these concepts at the end of first year.

The other stuff is kinda what splits the scientists from the engineers and I think they should be taught once that split has been made.

Or maybe not, I'm just throwing ideas out there :)