Charles Edward Tyson, 20, also faces charges of aggravated child abuse, child endangerment and violating a restraining order, Delray Beach police spokesman Jeffrey Messer said. Messer said Tyson admitted tossing his son into the canal.
"Our detectives were just dumbfounded," he said.
Tyson was held Thursday in the Palm Beach County jail and set to appear in court Friday morning.
Tyson and the child's mother, Shameka Mosley, 17, were driving with the 9-month-old infant early Thursday when Tyson accused her of cheating on him, according to an arrest report.
Mosley stopped the car she was driving and Tyson tossed the child out of the window where he "landed face down in the dirt," according to the report. The man then grabbed the boy by the leg and "in a swinging motion slammed the infant's head onto the hood of Mosley's vehicle," the report said.
Tyson then sped off in the car with the infant, and later stopped and tossed the child into a canal, the report said.
Authorities found the boy floating nearby and attempted to revive him. The infant, Charles Edward Tyson Jr., died a short time later at Delray Medical Center.
"Tyson stated he was aware the infant landed in the canal because he heard a splash," the report said.
Mosley had a restraining order against Tyson issued in December after a domestic violence incident.