I agree with Dijkstra's view. Will one or two programming languages, will write the snake game, will write the website webpage, this does not call will write the procedure, can say is glimpse, Underbelly. and software engineering is to teach a person how to write a program from the macroscopic and microscopic two angles. One is how to use the programming language, how to design the algorithm, how to use the combination of statements to form a running program, on the other hand how the software architecture, how to use design patterns, how to test, how to run maintenance, how to develop a robust, safe, perfect, reliable software or system, It contains several aspects of software development techniques.
Some students in the school algorithm and data structures are good at, for example, to participate in the ACM Contest students, their programming ability than the average classmate strong. However, in the development of large-scale software systems, the code they develop is often not readable, and the code is redundant, complex, a lot of bugs and difficult to modify, which is the result of no systematic software engineering ideas. Software engineering is an important idea to solve the appeal problem, that is, the church will not write programs to develop software, the church will write programs for the people to better develop the software.
The 4th question of the first chapter of modern software Engineering--Deng Kun