Coding theorems for point-to-point communication systems using sparse matrix codes