Your basic design is workable, but requires that R1 be small enough that even when the supply voltage is at minimum D1 will be kept in saturation. Variations in supply voltage (e.g. 120Hz hum) will cause the current through D1 to vary, which may in turn cause the output voltage to vary. Performance may be improved by using a three-transistor circuit with negative feedback. Since it sounds like this is a homework assignment, I'll just describe the essentials. Feed power from the source to the load by a PNP transistor Q1 whose base is fed by an NPN transistor Q2 to ground (you may want to experiment with having a resistor between the Q2's base and ground). Use NPN transistor Q3 to implement a circuit which bypass current away from Q2's base when the output is at or above a voltage controlled by a Zener.
Using such a circuit, the current through the Zener will be independent of the input voltage, remaining constant at the level where Q3 starts to turn on. Further, the circuit can work with input voltages that are within a few hundred millivolts of the desired output voltage. It should be possible to implement the basic circuit with the aforementioned three transistors, two resistors (not counting the load), and a Zener. Adding more resistors may improve performance, but the described circuit should work pretty well as a starting point. Note that in this latter circuit one may replace the Zener with a resistor in exchange for less precision on the output voltage.