How to design an undergraduate internship project?
The number one thing that I would advise you to expect is the unexpected.  The skills and performance of undergraduates is almost impossible to predict, because their work with you is likely to be one of their first deep technical experiences.  Among the key implications of this:


their true skills and background vary greatly and are often not well indicated by transcripts (and they often have little ability to self-evaluate)
their motivation and ability to act professionally varies wildly and is very difficult to judge before they are actually working on a project (they often do not really know themselves)
there is often little possibility of obtaining a meaningful reference for them


Given this, I have found that the following are very useful to do when designing a project for an undergraduate:


Do not put them on anything critical path.  Choose an interesting side project that you've wanted to get around to, but won't be sad if nothing happens on.
Create a set of milestones that starts with simple "warm-up" work, and then builds sequentially.  Make sure they will see a concrete result that they can feel proud of at each milestone.
A good rule of thumb is to plan assuming that 1 week of work for you will be 1 month of work for the undergraduate.  A really good one, though, may progress much, much faster, though, so...
Also add a set of "stretch goals" that will give a really good undergraduate a chance to do some really cool things, rather than running out of work after the first few weeks.


Every undergraduate is a roll of the dice.  Many will simply waste your time.  Many will be marginal in value at best.  But the good ones really make up for all the rest, and may become your future colleagues.