Recall from Module 2 that C does no bounds checking at all – arr[index] for an out-of-range index silently
reads whatever memory happens to be there. Implement get_at to guard against that: assert that index is
within [0, length) before indexing, then return arr[index].
Every test case here passes a valid index, so the assert will never actually fire – that’s normal. Its job isn’t to change what correct input does; it’s to make the function’s requirement explicit and enforced, so a future caller passing an invalid index gets an immediate, clear failure at this exact line, instead of a silent out-of-bounds read that might not misbehave visibly until much later.