The deal is worth $832,500 per year in the NHL and $70,000 in the AHL, with a signing bonus of $92,500 in each year.
The Burlington, Ont., native has spent the past three seasons with Union College in Schenectady, N.Y. In his final collegiate season he finished fourth in team scoring with 28 points (12 goals, 16 assists) in 39 games.
"Josh is a right-shot centre with size and skill," Flames general manager Jay Feaster said in a statement. "During our recent development camp he played an aggressive, up-tempo style and displayed good grit and a high compete level."