Theory Part (40 points)