Shure, we know that it is not always "homework", and we also know that the Arduino is geared towards a community of people in "non programming" like arts and design where programming and hardware are secondary to the real issues they want to solve.
But we also have our share of people wanting us to do their homework. Many of them are not able to, or have not done enough work to even describe what they require, the current project state and the problems that hinders progress in any understandable way.
When it comes to hardware versus software, if you get a hardware diagram you still have to build it and get all the connections correct in the actual working piece. This requires some skill.
For software this corresponds to the "textual pseudocode, algorithm description" and this is always handed out freely if the problem is described well enough to make this possible.
Creating the actual exact C/C++ code from this analysis is similar in a way to building the hardware. Otherwise the code can be copied and that leaves nothing.
And lastly, there is lots of sharing of code in this community. People share enormous amounts of code, high quality code.