Accidentally discovered the goal of a software engineering graduate set by David parnas, one of the pioneers of software development, on the Internet. Reading it, you can't help but feel ashamed .... Objectives of software engineering graduates 1. Overall 1.1 moral behavior and social responsibility Graduates must be habitually honest with their achievements. Graduates will soon share their honors with those who have contributed. Graduates need to understand their responsibilities to employers and customers. Graduates need to understand their obligations to society. 1.2 individual accomplishments and maturity Graduates must discover commonalities from things that seem very different. Graduates should understand their limitations and abilities and be able to work within their limits and abilities. Graduates should be able to handle the pressure and know how to seek help or adjust methods when necessary. Graduates need to understand the conditions for them to reach the optimal working state and achieve their own balance. Graduates must be brave enough to admit their mistakes and failures and make appropriate responses. Graduates must be able to face criticism rather than always defend themselves. 1.3 Professional Cultivation and maturity Graduates need to understand what is their unknown field. Graduates should not be afraid to explore and ask questions beyond their professional fields. Graduates need to know how to manage their own time. Graduates need to understand how to develop long-term projects, rather than looking for shortcuts rashly. Graduates need to know when to take risks and what risks should they take. Graduates should get used to predicting potential problems and be prepared. Graduates need to understand the importance of trade-offs and how to make such a decision. 1.4 flexibility Graduates must be flexible and change as the environment changes. Graduates should take the initiative to do something they think is "correct", even if they are not told to do so. It is necessary to present its constructive initiative as needed. Graduates should be able to analyze various situations and find appropriate solutions. This requires them to understand under what conditions a method is appropriate and when another method must be selected or invented. Graduates must be able to apply what they have learned to other fields, or even different fields. 1.5 thinking, learning and work skills Graduates must habitually improve their abilities (lifelong self-scholars ). Graduates should be able to work well in the group. Graduates must be able to establish and lead a group. Graduates should habitually study the history and detailed definitions of ideas and concepts they have not yet understood. Graduates must habitually seek accurate definitions of terms. Graduates need to know when and how to use trial and error methods to explore a problem. Graduates must learn to habitually use the principles they learned for the first time. Graduates must habitually apply the divide and conquer principles to deal with complex problems. Graduates must be able to question or refute certain speculation and arguments. 2. Communication Graduates should be able to organize conversations, documents, and papers reasonably and communicate their information to the audience in an appropriate manner. Graduates must be proficient in English to cope with communication at work. Graduates need to learn new natural languages. Graduates should have communication skills within the group, especially regarding goals, tasks and progress. Graduates need to know how to explain complex theme in less understandable words. Graduates must be able to consciously express their principles used unconsciously. 3. Mathematics 3.1 General mathematical skills Graduates need to know how to think carefully and logically. Graduates need to know how to abstract and find more general and reusable concepts. Graduates should be familiar with many mathematical concepts that have been studied. Graduates need to know how to create real-world models by removing irrelevant details. Graduates need to know how to use mathematical knowledge and other abstract models in their work and daily life. 3.2 application mathematics in software development Graduates must use mathematical logic to describe the software status and functions. Graduates must understand basic logical concepts, propose proofs, and know how to choose and apply logic-based tools, such as automated theorem proving machines. Graduates should understand how to apply the concept, tree, and relationship of Discrete Mathematics in software development. Graduates need to know how to use numerical mathematics ). Graduates need to know how to use Symbolic mathematics. 4. Software Development 4.1 software Basics Graduates need to understand the basic mathematical laws that govern what we can do with software, and the physical laws that govern application and design activities. Graduates need to know why software development is difficult. Graduates should understand the current software development methods, whether correct or wrong. Graduates should understand why "man-month" is not a unit to measure the complexity of software tasks. Graduates need to know how to reduce the workload of developing and maintaining software. 4.2 software technology Graduates need to know how to use existing tools and how to learn how to use new tools. Graduates must master programming skills. Graduates need to know how to develop network application software. Graduates know how to choose appropriate development tools. 4.3 Software Design and Analysis Graduates must be able to write programs that meet the provided software specification. Graduates should be able to prepare program tests based on specifications. Graduates should be able to check the procedures and determine whether the specifications are met. Graduates should be able to "modularize" the software so that each module can be independently developed, tested, and understood. Graduates must be able to design software products and design software components by writing interface specifications. Graduates need to know how to develop (distributed) software independent of setup and equipment. Graduates must be able to develop software that requires parallel processing. Graduates need to know how to develop real-time software. Graduates need to know how to estimate/limit the accuracy of digital results in scientific computing. Graduates need to know how to select and design effective algorithms. Graduates need to know how to solve the problem before the problem is described in detail, and how to determine a complete set of consistent requirements. Graduates need to learn how to organize data for products that need to store and process large amounts of data. 5. Scientific Methods Graduates must understand what "Know something" means and how to "know something. Graduates need to know how to design and conduct experiments. Graduates should learn how to draw correct conclusions from observation. 6. Management, Project Planning and Economics Graduates must have basic legal and commercial knowledge. Graduates should have basic knowledge in accounting and taxation, and be able to operate small companies or work with specialized software experts. Graduates should know how to protect information to avoid loss and leakage. Graduates should have a good understanding of information protection strategies so that they can put forward correct questions to policy makers. Graduates should be well aware of intellectual property laws to understand their rights and obligations. Graduates need to know how to plan projects, define milestones, and set the deadline for reaching milestones. Graduates should be familiar with different methods of Software Project Cost Evaluation
|