Software engineering is a hard-to-teach course, and the reason is nothing more than a few:
1. Software engineering is polished in the work for several years before it is possible to have a firsthand experience. There is no strong driving force in school, because it seems like no need, and unlike a language class, it is a "hard" skill. In addition, the theoretical knowledge of software engineering is not as high as the number or the depth of the algorithm, learning to feel not to learn any advanced knowledge. In short, it is difficult for students to get to a driving force.
2. Software engineering to be practical, you have to have a better foundation, such as familiar with a language, a number of programs, in the inside toss. But, is the basic study in front good or bad? Sometimes can only laugh and cry, object-oriented do not know what is. This greatly affected the course of the teaching, to get on the software engineering class teachers have to teach anything to be able to, even if the teacher will, students in just a semester inside can not fill the foundation of the previous years.
3. Say that the software engineering major, but most students are not interested in this direction of employment, a class can have One-fourth of this idea is very good. So, when the teacher tells the students how important software engineering is, the feedback is: good, important, but with me, I just want to pass a close.
Teaching a few years of software engineering, a little discouraged, especially the student's desire to learn is simply disappointing. Teachers are willing to teach, but someone is willing to learn. So, willing to learn nature has become a teacher to solve the problem. Let everyone do practical projects, most people are copy and paste, anyway, is a normal result, the final test results as the leading. Do not do the project, this course is really uninteresting, many times is another form of the soul of chicken soup, listen to can, but useless.
How in a short period of a semester, in the student base are very poor situation, in the people are also willing to cooperate with the academic Department of the situation, to teach a little effect of software engineering class it?
First of all, it must be with the hospital leader to fight for the usual results accounted for at least 60%, this is the premise. Exams are also tested, not against the basic paradigm of school teaching.
Again, the requirements and workload must be reduced.
Software engineering must rely on individual projects, pairs of projects, team project three project bombing will be effective, this is the "construction of the law" Zou Teacher's core philosophy: to do high school. Doing something is important for stimulating learning interest, and it is more important to realize the core idea of software engineering. Traditional teaching may be focused on whether the object in the DFD is round or square, but the idea of doing secondary school is not paying attention to this. What is the relationship between a round and a square and software engineering? Never mind. How to draw a valuable DFD is the embodiment of the software engineering thought. But these things are not in practice, not in the project, how to teach good?
For junior students, three projects must be in place and a team project for sophomore students (Introduction to learning software engineering).
How to plan the teaching is very important, here are some of my ideas:
1. Usually studies, each score is very, divided into three blocks, 10 points, have their own practice, a valuable point of view, 5 points, have their own elaboration, not through practice, to deal with the majority; 0 points, non-submitted or late or quoted does not indicate the source or the full copy. At ordinary times, homework accounted for 50% of the points. Usually homework at least once a week, you can do more, but later to an average score as a result of the work, the formula: score=50%*10* (S1+S2+S3+...+SN)/n,n>=8. When they do not hand in their homework, do more valuable work, pull the high average score. No longer consider the additional points, all summarized into the work of the Sub.
2. Usually work from the actual project to extract the topic, combined with practice, such as black box testing There are several methods, you in your project is how to use the boundary value method to test, examples, and there are test results. In this way, some of the work in the project is moved to the job, the workload is reduced, but also a good comprehensive study of the theory.
3. Individual projects in the project should be able to integrate into the project, a pair of projects in the project should be able to integrate into the team project. In this way, the code and documentation will not be wasted, greatly reducing the workload, but also to ensure that the learning effect, after all, software engineering is a concept, through the practice to better understand, it is not a programming class, can not be the course into a Java training class. For example, a team project is a game, that pair of projects can do in-game scene and character programming, the individual project can do character animation program implementation. It is best to choose between pairs of teams.
4. Individual projects are mainly brought in, so that students go into this course, the pair of projects mainly focus on knowledge points of practice, such as how to do UML, code review How to Do, white box test how to do, etc., team project is the main transmission or more in-depth understanding of software engineering core concepts, such as iterative upgrade, team communication.
5. Because usually homework to do a lot of things in the project, so the personal project accounted for 10% of the performance, the proportion of the project accounted for 20%, the team project accounted for 20%, the score distribution in the project by two people to negotiate, not the same, team project score distribution by the team to negotiate, not the same. All three items are percentile. Team project must have a captain, the captain is in charge.
6. It is not recommended that individual project and knot pair project adopt proposition composition, generally a teacher will teach three classes at the same time, about 100 people, so many people use proposition composition, basically will appear copy of the situation, the teacher also no way one by one to troubleshoot who copied who, even if you require more specific and detailed, copy is ignored this. At present, the use of open-ended. Individual project evaluation is divided into three, 100 points, completely self-made, can run, there is a project description, 50 points, I modified a part, also understand, can run, there are project description, 0 points, not handed, late, copy, slightest modification. A pair project requires a low point on the document, and the team project must have all the required documentation.
7. This kind of teaching method, examination question is a big problem. Here to provide a method, not a pure memory problem, a few big questions can be, the big problem is usually homework, such as a white box test questions, write a small program, please write the path covered test cases. If you do the homework carefully, the exam is not a problem, meaning that there is actually no test link, but the form has.
Finally, the core of software engineering is to "do", but through the means of simplifying the complex teaching process, the purpose of simplification is to make the teaching achieve better results. The core purpose of this course is to understand the core idea of software engineering through "doing", which can not cover language course, algorithm course, innovation and entrepreneurship course, Database Principle course, Java Course practice and so on.
The teaching idea of "original" "Software Engineering"