Your DM is correct
The correct damage calculation for Spray of Cards cast at higher levels is
- (2 + 1 per each 2 levels above 2nd)d10 * 1 or 1/2
depending on whether the target makes their save. At 5th level, this would be 3d10 before the save.
This is common to many other spells that feature similar "At Higher Levels" text. For example Fireball normally deals 8d6 damage on a failed save, or half as much damage on a successful one. It has the text:
At Higher Levels. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 for each slot level above 3rd.
Casting Fireball with a 5th level spell slot deals 10d6, or half at much on a successful save.
Damage Rolls
From the Basic Rules for damage rolls we have (emphasis mine):
Each weapon, spell, and harmful monster ability specifies the damage it deals. You roll the damage die or dice, add any modifiers, and apply the damage to your target. Magic weapons, special abilities, and other factors can grant a bonus to damage.
(...) A spell tells you which dice to roll for damage and whether to add any modifiers.
If a spell or other effect deals damage to more than one target at the same time, roll the damage once for all of them. For example, when a wizard casts fireball or a cleric casts flame strike, the spell's damage is rolled once for all creatures caught in the blast.
If you are only intended to roll the damage of the spell once, we can infer that the spell's damage cannot be dependent on whether or not the target makes its save. Otherwise the damage calculation would not be correct for mixed results. Therefore "damage" refers to only the 2d10 in the spell's description. When casting at a higher level, this 2d10 is replaced with the new number and the rest of the spell is left unchanged.
Roll your total damage once. Then targets that save take half of that number.