The Elements of Language Curriculum: A Systematic Approach to Program Development