S1-PRO5-4 - An Ability-oriented Approach for Teaching Programming Courses

2. Research-to-Practice Work In Progress
YING LI1 , You Song1, Anas Moukrim1, Qianqi Ben1
1 Beihang University

The rise of new engineering profiles is changing the education system. The Washington-Accord, Sydney-Accord and Dublin-Accord proposed the concepts of Student-Centered Learning, Outcome-Based Education and Continue-Quality Improvement respectively and undergraduates need to develop their abilities to solve Well-defined Problems, Broadly-defined Problems and Complex Problems.

This paper proposed an innovative method of Four-Dimensional Outcome-Based Education, which are, 1)Goal-oriented indicates what outcomes can students obtain; 2)Demands-oriented indicates why let students get these outcomes; 3)Problem-oriented indicates how to effectively enable students to obtain these outcomes; 4)Process-oriented indicates how to know students have achieved these outcomes. We establish an outcome-based teaching system which takes theoretical teaching as the foundation, programing contest as assistance-teaching means, engineering project as cases and application as a direction.

1.Ability-oriented teaching
Based on original Bloom's Taxonomy, we propose a new two-dimensional teaching objective consisting of knowledge taxonomy and practice taxonomy. Teaching contents are reconstructed to comply with OBE requirements and each knowledge point is associated with a specific ability. It mianly reflects the changes from spreading knowledge to improving ability, from organizing teaching in the order of chapters to teaching according to the correlation and connectivity of knowledge points and from over-emphasis on results to process assessment. We explore a spiral and progressive teaching process from theory to practice to engineering by designing engineering-cases.

2.Student-centered learning
We use CDIO teaching mode to guide students from passive indoctrination learning into active exploratory. Student-centered learning reflects that the teaching plan is updated regularly according to learning effect; the teaching objectives fit the students’ cognitive abilities; the teaching process involves the coordinated-bilateral activities between teachers and students and the teaching method is characterized by inspiring students to internalize knowledge into application.

3.Contest-driven practicing
Introducing competition mechanism into practical teaching can both consolidate students’ theoretical knowledge and improve their practical ability. We adopt contest-driven model to develop students' programming ability. It includes,
1)To improve teaching method: taking ACM-ICPC programming contest problems as teaching cases can evoke students' interest in solving problems and make them better understand the contents
2)To improve teaching contents: we describe the cases as the style of ACM-ICPC problems (input, output and test cases) to make the contents more interesting and readable and to emulate practical application scenario
3)To improve learning style: driven by programming contest, both individual leaning and teamwork learning are used to improve students’ ability of communication and practice
4)To improve assessment approach: by taking the advantage of Online Judge, automatic and intelligent evaluation methods are used to judge code quality accurately and instantly which inturn can spark their enthusiasm for programming

4.Project-based training
In order for students to use knowledge to solve engineering problems, we design engineering projects originating from the industry which include four types.
1)Basic project taught by teacher: using basic programming knowledge to solve simple-defined problem
2)Validating project guided by teacher: designing efficient algorithm to solve well-defined problems
3)Comprehensive project learned by student-himself: linking theory with practice to solve broadly-defined problems
4)Engineering project finished by teamwork: using computational thinking to solve complex-defined problems