castigate

To scold someone very harshly, often in public.