Level Down: Using Games as a Teaching Tool for Low-Level Computer Science