The real world software development projects require different programming skills. Taking WEB application for example, engineers with very different technical background are needed to fulfill such tasks, from the backend database engineers who can use Structured Query Language (SQL) to create the database, to the frontend UI engineers who can manipulate Hyper Text Marking Language (HTML) freely. In order to prepare students major in Computer Science and Engineering to be industry-ready graduates, such as above mentioned WEB application engineers, it is necessary to include project-oriented courses covering different programming languages and the whole development process from design to implementation. In this study, we describe our program design and execution practice in Chengdu University of Information Technology, China, which adopts the CDIO initiative. First of all, by extracting requirements for WEB application developers, we build the ability matrix for graduates. Secondly, the ability matrix is translated to integrated courses. Thirdly, after take separated courses, students are asked to work in teams to finish a given project, whose requirements are extracted form real world scenario. At last, professors, who have experiences in real world software developments, are asked to assess learning outcomes and provide suggestions for possible future improvements for both the curriculum and the faculty teaching competency. In our practice, we would like to highlight several effective methods, which guarantee the success of the whole process. 1)A computer-based testing system is developed to evaluate the learning outcomes of programming language courses. Students need to type real code rather than write ‘fake’ code on the paper, and the code will be checked by real compiler and test cases rather than naked eyes, which may ignore minus mistakes such as missing terminators or brackets. 2)A phase-based grading mechanism is introduced to monitor the learning process, in which students have to pass a test before they move to a new chapter or stage. Such mechanism not only guarantees students meet all setting goals, but also makes sure students are active participants. 3)Multiple evaluation methods are used for different course types. As mentioned above, in programming language courses, the traditional paper-based test is replaced by the computer-based test. Moreover, in those project-oriented courses, students have to submit their source code and report covering design, implementation and test instead of taking a test. 4)An inspection conducted by senior professors is carried out irregularly in order to find possible enhancements for current courses including whether the course content is up to date, whether the lab computers are in good shape, and etc.. Besides that, it is the senior professors’ responsibility to make sure those suggestions will be adopted for future improvement of those courses. We believe that our work is an implementation of the CDIO initiative, and a practice to produce future-ready engineers. Both our self-evaluation data and the third-party job market report show that our practice is an effective way for computer software engineer training, which can also be adopted in designing other engineer training programs.
Proceedings of the 12th International CDIO Conference, Turku, Finland, June 12-16 2016