Syntactic and semantic issues in introductory programming education