The title of your question does not match its content, since they are each asking different things. The title asks:
What to do about a student whom I suspect plagiarized but claims not
If you suspect that a student plagiarized, you should investigate the matter further to see if you can come up with solid evidence. The student should be punished (with a failing grade and/or reporting to your university's student judicial affairs or equivalent unit) if, and only if, the evidence points to the student's guilt with a reasonably high degree of certainty.
Given that you already decided to give the student a zero grade for the assignment, and that suspicion alone does not merit such punishment, you should reverse the decision and grade the student's assignment as if he had done it himself. It may be appropriate to nonetheless tell the student that you have suspicions that he plagiarized the assignment, and give him a stern warning that from now on you'll be watching his every move and that he should not try to play any more such games.
On the other hand, the body of your question tells a different story:
I caught a student plagiarizing on a programming assignment by copying
someone else's code [...] What should I do?
This is substantially different from what the title was asking. If you don't just suspect the student plagiarized but believe you "caught the student plagiarizing", i.e., you have what you consider to be solid evidence and are willing to defend your accusation in the event that the student challenges it, then you may consider your decision to have been an appropriate one. In that case, ff524's answer gives very good advice about how to proceed. However, I would strongly caution you that we humans are fallible beings, and in particular we have a distinct tendency to be overconfident of our own judgments. This overconfidence is known as the illusion of validity (described here, and more in detail in this wonderful article by Daniel Kahneman, the behavioral economist who coined the term).
I saw this effect with my own eyes in a plagiarism case I was involved with at my university, in which an instructor suspected two of his students had shared code because the plagiarism-detection software he used flagged their code as having a high similarity score. As an objective party who inspected the two students' code (and being more than knowledgeable enough about the programming aspects of the case), I was far from convinced that any of them had committed plagiarism, and after also interviewing the students I was close to 100% certain that they hadn't. Nonetheless, throughout this process the instructor who had accused them of plagiarism (a very smart and accomplished computer scientist) remained adamant, quite bizarrely in my opinion, that some misconduct must have occurred.
The bottom line is that your decision to punish the student should be based on more than just your own feeling of confidence that your suspicion is founded, since such feelings have been scientifically shown (by Kahneman, who won the Nobel prize for such work, and others) to be extremely inaccurate. If that means letting a potential cheater go unpunished, that may be annoying but it is still much better than punishing someone for an offense they did not commit.