I agree with @Rob, effective thrust vector control is not a simple problem. Your best approach is probably to use fins, and "ensure that it's nose up and not aimed at anything, then fire and hope for the best." But there are some specific things you can do to up the probability of "the best".
Since you'll be launching from a balloon, and you don't want the rocket to be aimed at anything, you won't launch the rocket exactly vertically upward—at the balloon! There'll be a non-zero zenith angle to the rocket's initial pointing. If the rockoon isn't in a turbulent region, that angle is easy to control via the design of the launch platform suspended beneath the balloon. A nice long tether between the balloon and the platform decreases the angle subtended by the balloon as seen from the platform, and that allows launch at a smaller zenith angle. As we'll see, larger zenith angles are not your friend.
Few rockets without thrust vector control systems have their thrust vector perfectly aligned through the rocket's CM. In the absence of a control system this causes a torque that turns the rocket, in pitch or yaw or both. Fins are such a control system, at least to a point. They provide a stabilizing moment (negative feedback) that gets larger with higher speed. With fin stabilization, before a thrust offset can cause large angular deflections, you must get the rocket's speed up to where the stabilizing moment is equal (and opposite!) to the offset thrust's moment, with a very small angle of attack. At high altitude that speed is higher than at low altitudes.
Getting to high speed as quickly as possible sounds like an easy approach, requiring only a large thrust-to-weight ratio, i.e. high thrust. But for a non-spinning rocket, if the inertial moment of the rocket stays the same, and the thrust vector offset angle stays the same, the angular acceleration caused by the offset thrust is increased by the same ratio as the increase in linear acceleration, so you don't "win". Also, fixed fins cannot completely correct for offset thrust! If there is an offset, once effective the fins will limit the pitch/yaw rate, but the offset thrust will always cause a pitch/yaw moment and thus a net angle of attack. The simplest way (without active control systems) to mostly counteract the offset thrust is to spin the rocket around the roll axis. I say mostly because in the initial few moments of the launch, before the spin-up occurs, some turning can occur.
Spinning a rocket with a video camera is probably not what you had in mind; you don't want viewers to get vertigo. During the boost phase spin might be unavoidable to limit the zenith angle. But if you want to teach the students some control theory and control systems, you could have them build moveable fins, or moveable control surfaces on the trailing sides of the fins, to provide spin-up to a pre-determined rate during boost and then cancel the spin when boost is over. You can also propulsively spin (see below) before the fins become effective, then use the fins to spin down after boost.
On to the effects of a flight path at a non-zero zenith angle. If you launch vertically (zenith angle = 0), the vector sum of the acceleration vector due to the engine (assumed aligned with the rocket's long axis, call it the z axis, and the CM is in that axis) and the acceleration vector due to gravity are parallel so there's no pitch or yaw moment, and the rocket doesn't turn. But if you launch at a non-zero zenith angle, the acceleration vector due to the engine and the acceleration vector due to gravity are not parallel, so the vector sum of acceleration is not along the z axis; it is biased toward Earth. As a result of the offset net force vector, there is a component of acceleration earthward from the initial flight path, changing the flight path to a higher zenith angle. Fins turn the rocket to the new flight path angle, into the relative wind. But since gravity is still acting, the net force vector is still groundward of the new flight path angle, so the rocket winds up turning even farther from vertical. The larger the zenith angle (up to 90°), the faster this turn goes, because the gravitational acceleration vector is farther from parallel to the thrust acceleration vector.
So as I said above: large zenith angles are not your friend. Two things contribute to large turning angles from this effect: long duration burns, and low thrust-to-weight ratios (acceleration magnitude). Long, low-thrust burns can have the rocket headed almost straight down at burnout.
The conclusions from all this: 1) launch with as high an initial acceleration as feasible. You can use a technique the modern Atlas rockets use: thrust augmenters ("strap-ons"). Small, short-duration but high-thrust augmenters might be very useful here. If you're launching with, say, a K-class engine, strapping on 2 long core-burner H's might help a lot. 2) Canting them ever so slightly to provide roll moment might help too, giving the rocket a spin before the fins become effective. Be sure the strap-ons and fins spin the rocket the same direction!
Getting those strap-ons to jettison after burnout would also be good, so you're not dragging along extra mass during most of the K (or whatever) burn.
@PaulKaup , I hope this is helpful!