Marxist theory, college foreign languages, advanced mathematics, college physics, physical experiments, linear algebra, probability theory and mathematical statistics, programming language, data structure, discrete mathematics, operating system, compilation technology, introduction to software engineering, unified modeling language, software architecture, software requirements, software project management.
In addition to basic courses, this major will systematically study discrete mathematics, data structure, algorithm analysis, object-oriented programming, modern operating system, database principle and implementation technology, compilation principle, software engineering, software project management, computer security and other courses. Other elective courses can be selected according to students' interests.
Practical links: graduation practice, curriculum design, computer engineering practice, production practice, graduation design (thesis).
The objectives of software engineering are:
Under the premise of given cost and schedule, develop software products with applicability, effectiveness, modifiability, reliability, understandability, maintainability, reusability, portability, traceability, interoperability and meeting the needs of users. Pursuing these goals will help to improve the quality and development efficiency of software products and reduce the difficulty of maintenance.
(1) Applicability: How easy it is for the software to meet the needs of users under different system constraints.
(2) Effectiveness: The software system can make the most effective use of the computer's time and space resources. All kinds of software take the time/space cost of the system as an important technical index to measure the quality of software. On many occasions, the pursuit of time effectiveness and space effectiveness will be contradictory, so we have to sacrifice time effectiveness for space effectiveness, or sacrifice space effectiveness for time effectiveness. Time/space tradeoff is a common technique.
(3) Modifiability: The system can be modified without increasing the complexity of the original system. It supports software debugging and maintenance, which is an unattainable goal.
(4) Reliability: It can prevent software system failures caused by imperfect concept, design and structure, and has the ability to recover software system failures caused by improper operation.
(5) Understandability: The system structure is clear and can directly reflect the needs of the problem. Understandability is helpful to control the complexity of system software and support the maintenance, transplantation or reuse of software.
(6) Maintainability: After the software is delivered for use, it can be modified to correct hidden errors, improve performance and other attributes, and make the software products adapt to the changes in the environment. Software maintenance costs account for a large proportion of software development costs. Maintainability is a very important goal in software engineering.
(7) Reusability: define one or a group of related modules with relatively independent concepts or functions as soft components. It can be assembled in any position of the system, reducing the workload.
(8) Portability: the ease with which software can be transferred from one computer system or environment to another.
(9) Traceability: the ability to trace back software design and procedures according to software requirements, or to trace back software requirements according to software design and procedures.
(10) Interoperability: The ability of multiple software elements to communicate with each other and cooperate to complete tasks.
Reference to the above content: Baidu Encyclopedia-Software Engineering; Baidu encyclopedia-software engineering major