Question: In my agile development course, after gathering user requirements, I'm asked to write a plan (for developing an application) that is supposed to define project activities, milestones - iterations and deliverables. The plan is actually the work breakdown. 

So what should the initial plan in an agile project look like? If I'm giving a plan of everything in advance (as the homework asks), isn't that the waterfall model. If each iteration in agile deals with the whole cycle of plan-do-check-act, then why do we need an initial plan?

Answer: 
You need an initial plan because somehow you have to decide how many people are going to work on the project and develop a budget. You can never know what your scope, time, and budget are all going to be, but generally one of these is going to be fixed. Figure out which is the most important and build a plan around that. Without this as a starting point, nobody is going to fund the project.

Build a project backlog with all of the known goals. Then pull out the biggest of the goals as key milestones. Generally, a client needs to see progress towards their desired feature set. A smart client will be prepared to adjust these as the project goes, but you can absolutely lay out a series of goals to give you targets for creating working software with each sprint.
You should read [Planning Extreme Programming](http://www.google.com/url?sa=t&rct=j&q=%20extreme%20programing%20by%20kent%20beck&source=web&cd=2&sqi=2&ved=0CDEQFjAB&url=http://www.amazon.com/Planning-Extreme-Programming-Kent-Beck/dp/0201710919&ei=EO7YTqnQNYPftgfXxczsAQ&usg=AFQjCNFoaczbmhVUWYjLhp5qOh3gq1b3tA) by Kent Beck. If you ignore the extreme part of the title you can easly adapt this to your agile methods.