Under certain circumstances, unfortunately not stated in the question, even point 4 would be ok. This is work at the graduate level, and even there, not every student is a great programmer. Moreover, there is a lot to CS that isn't really about programming, even when it depends on programming at some level.
My question, rather, would be, who designed the program and the work that it contributes to. If it was the OP, then I see no issue at all in having someone help debug the program(s). The line would come when debugging moves over to design of the code. But even then, there might be more to the research than the code. If the OP has designed the research and knows enough to come to appropriate conclusions, I see no problem. (Old and retired CS professor).
The first three points in the question raise no issues for me at all. But the person giving help should be acknowledged, of course.
If I can draw a parallel with work in other scientific fields, it isn't necessary that the lead author of a work have personally performed all of the experiments on which the work is based. It is enough that he/she had a key role in design and giving direction to the work.