Officials say the 17-year-old male student punched the administrator around 3:30 p.m. Thursday.
There was no word on what sparked the incident, which happened after school had been dismissed for the day.
The teen is being charged with aggravated assault on a schoolteacher, simple assault and harassment.
The student's name is not being released, since he is a minor.
The assistant principal was transported to Lankenau Hospital for treatment of head and neck pain and later released.