I used to practice circuits on a hill quite often, for example warmup well first then:
4x (1/2 mile up, jog 1/2 mile, 1/2 mile down, jog 1/2 mile)
5x (2x 220 up, 1x 1/2 mi down, jog 220's), 6 1/4 mi total
4x (3x 220 up, 1x 3/4 mi down, jog 220's), 6 miles total
Uphills for me were working at a good steady pace all the way up, jogging each for recovery, then flying back down as easily as possible. Sometimes I'd run down fast, but usually it was about my pace for a 10k. Developing coordination is the main thing with the downhills, not pushing them hard in a practice. I could always run away from my competitors on the downhills due to my practice, and was relatively even going up. The uphills have a lot to do with bodyweight too.
Uphill only sessions:
24x 220 up 6% hill, jog back down at 1/2 speed
Run up any random hill for 50 to 60 seconds, jog back down, and repeat for an hour. I did this one a lot.
20x 220 up steep hill, jog down easy, start each 3 minutes
10x 220 uphill sprints, jog down easy, start each 6 minutes
The last session was quite intense as I ran them at full speed, and ran well at the 10k off this.