What problems arise?
-
A client (maybe your instructor) tells you what he wants. You write a program to do it. It takes a long time, but you finally finish. You deliver it to the client. The client says "Oh. Well now that I see how the program works, I would really rather have it do .... instead. Can you fix that by tomorrow for the big meeting?
-
A client describes what he wants. You write up his requirements and get him to sign a requirements document which says that he will accept a system that meets those requirements!
Next you start writing code for the system. But after about a week each new part of the system you write causes earlier working parts of the system to fail. Uh oh! How are you going to meet the promised delivery date?
Software engineering processes (if they are any good) should help to direct larger system development to help solve these and other such problems, independently of the actual algorithms and data needed in any specific system.