1. Cultivation objectives
Software Engineering aims to cultivate application-oriented software engineers who have good humanistic quality, sense of social responsibility and professional ethics, have good communication ability, team spirit and innovation consciousness, can master the basic theory and practical skills of software engineering, and actively adapt to the professional and social development through continuous learning. Graduates will be able to engage in software system architecture, development, testing, operation, maintenance and management in the software service outsourcing industry.
2.Core courses
(1)Data Structure
The course cultivates students’ ability to choose the appropriate logic and storage structure for specific problems, and design appropriate algorithms for effective data storage and processing. It trains students’ ability to solve practical application problems.
(2) Introduction to Computer Systems
This course introduces the basic concepts of hardware and software of computer system, the hierarchical framework of computer system , helps students understand each abstract layer in computer system and their mutual transformation relationship, and establish the interrelationship among high-level language program, instruction set architecture, operating system, compiler, linker, etc. This course can cultivate students’ ability in debugging, performance optimization, transplantation and robustness assurance of programs by understanding the execution process of instructions on hardware and the underlying hardware execution mechanism of instructions
(3) Database Principles and Applications
The course aims to help students understand the basic concept, basic principle and application technology of database, master relational database, structured query language SQL and database programming, relationship standardization, database design, database protection technology and mainstream database management system. It cultivates students’ ability to design and use relational database according to application problems.
(4) Analysis and Design of Algorithms
Students can skillfully use some common algorithms to solve comprehensive application problems base on understanding algorithm complexity theory. This course can cultivate students' ability to analyze and solve problems by explanation of the basic skills and methods of algorithm design, master the common algorithm design strategies such as divide and conquer method, brute force method, backtracking method, branch and bound method, greedy method, dynamic programming method, network flow, geometric calculation, probability algorithm and approximate algorithm.
The course mainly explains the basic skills and methods of algorithm design, helps students master the common algorithm design strategies, such as the divide and conquer method, brute force method, backtracking method, branch and bound method, greedy method, dynamic programming method, network flow, geometric calculation, probability algorithm and approximate algorithm. It cultivates students’ ability to analyze and solve problems, and enables students to skillfully use some common algorithms to solve comprehensive application problems on the basis of algorithm complexity theory.
(5) Operating System
Taking Linux operating system as the platform, the course teaches the basic concept, basic principle and implementation technology of operating system so that students can master the basic idea, basic principle, implementation mechanism and basic algorithm of operating system construction. It also enhances students’ understanding and application of operating system principles, exercises students’ ability of system design and implementation through practice.
(6) Demand Analysis and System Design
Based on the object-oriented technology, students can understand the software requirements and tasks in the design phase, covering the definition of requirements based on use cases, object-oriented system analysis, the establishment of dynamic, interactive and static models, and the object-oriented system design. It includes the design of architecture, problem domain, human-machine interface and data model. Students can use UML and related tools to analyze and model requirements, and to evolve and iterate the system design.
(7) Software Design-Patterns and Architecture
This course introduces the software architecture and its design patterns, valuable experience and solutions for specific problems, aiming to help students master the relevant knowledge, principles and various types of design patterns of software architecture. On this basis, students are able to analyze the existing software system from the perspective of system structure, design scalable and reusable software system, and know how to select and use appropriate design patterns and software architecture in the actual application system development.