Assuming you know how to draw to the OpenGL, I'll just give you the relevant parts:
Make a tetrahedron class, to build up the vertices, use this info to construct the class:
v0 = 0, 1, 0
v1 = 0, 0, 1
v2 = 1, 0, 0
v3 = -1, 0, 0
t0 = v1, v2, v3
t1 = v1, v2, v0
t2 = v1, v3, v0
t3 = v2, v3, v0
and in the draw method does something like this pseudo-code:
glScale(scalefactor, scalefactor, scalefactor);
Well, you can actually draw with a lot of methods, there are
glDrawElements, choose yours.
And i don't mentioned rotation because it can be done in a lot of ways too, you haven't cited it in your question, so i let it out.
For your camera, take this simple as example:
float x, y, z;
glTranslatef(-x, -y, -z);
Simple huh? If you dont know yet, the basis of a camera in OpenGL(and maybe in every lowlevel GPU API) is just move your world in the opposite direction. May look strange, but if you think hard on it, it will look fine!
Outside, you can make a linked list of tetrahedrons to initialize your code.
I dont know how you'll get your input(as i dont know your platform, language, you should cite those to help on answers), but here's a simple pseudo code to move the camera:
void keyPress(keyCode key, boolean pressed)
yacceleration = (pressed ? -15 : 0)
yacceleration = (pressed ? +15 : 0)
xacceleration = (pressed ? -15 : 0)
xacceleration = (pressed ? +15 : 0)
zacceleration = (pressed ? +15 : 0)
zacceleration = (pressed ? -15 : 0)
Tedious and simple camera movement.
for your update method, do this:
camera.x += xacceleration;
camera.y += yacceleration;
camera.z += zacceleration;
The fun part, the main draw code!
foreach(Tetrahedron t in tetralist)
Very simple, but functional.
Just to mention, i haven't tested any of this, just theory to make you find your way.