The accident happened just before 6:30 a.m. at the intersection of Cooper Road and Robin Lane.
Police say the 17-year-old victim was crossing the street to get to his school bus when he was hit by a car driven by an 80-year-old man.
Investigators say that driver may have swerved around the bus, disregarding the stop signal and lights on the bus.
The teen was carried by the vehicle for some 50 feet before the car stopped.
He was taken to the hospital in critical but stable condition with head injuries.
There was no immediate word on the name of the driver.