|Course title||Software Engineering
|Course description||This course introduces software life-cycles: system modelling, requirements analysis and specifications, design techniques, implementation methodology, testings, maintenance and engineering laboratory. Analytical tools: software metrics, system performance measurement and evaluation. Management techniques: estimations, planning, project management, communication skills and documentations. Introductions to CASE tools and security.
|Pre-requisite||CSCI1110 or 1120 or 1130 or 1510 or 1520 or 1530 or 1540 or ESTR1100 or 1102|
|Exclusion||ENGG3820 or ESTR3308 or IERG3080|
|Grade Descriptors||A/A-: EXCELLENT – exceptionally good performance and far exceeding expectation in all or most of the course learning outcomes; demonstration of superior understanding of the subject matter, the ability to analyze problems and apply extensive knowledge, and skillful use of concepts and materials to derive proper solutions.
B+/B/B-: GOOD – good performance in all course learning outcomes and exceeding expectation in some of them; demonstration of good understanding of the subject matter and the ability to use proper concepts and materials to solve most of the problems encountered.
C+/C/C-: FAIR – adequate performance and meeting expectation in all course learning outcomes; demonstration of adequate understanding of the subject matter and the ability to solve simple problems.
D+/D: MARGINAL – performance barely meets the expectation in the essential course learning outcomes; demonstration of partial understanding of the subject matter and the ability to solve simple problems.
F: FAILURE – performance does not meet the expectation in the essential course learning outcomes; demonstration of serious deficiencies and the need to retake the course.
|Learning outcomes||1. Students will know how to apply state of the art methodology in software design, development, measurement and evaluation for large-scale software systems;
2. Students will know what are the following software engineering techniques:
– software management;
– software requirement engineering;
– specification techniques;
– structured design;
– Unified Modeling Language (UML);
– Design Patterns; – structured programming;
– top-down design and development;
– segmentation and modularization techniques;
– information hiding;
– iterative enhancement;
– design and code inspection techniques;
– software validation and verification techniques;
– software metrics;
– software reliability measurement;
– data collection and analysis;
3. Students will learn how to apply software engineering techniques for the development of large software projects.
(for reference only)
|Final Exam: 40%
Mid-term exam: 20%
|Recommended Reading List||1. Fundamentals of Software Engineering, Ghezzi, Jazayeri, and Mandrioli, Prentice Hall, 2nd Edition, 2003.
2. Software Engineering: A Practitioner’s Approach, Pressman, McGraw-Hill, 6th Edition, 2005.
3. Software Engineering, Sommerville, Pearson/Addison Wesley, 7th Edition, 2004.
4. Software Engineering: Theory and Practice, Pfleeger, Prentice Hall, 2nd Edition, 2001.
5. Object-Oriented Software Engineering – Using UML, Patterns, and Java, Bruegge and Dutoit, Pearson/Prentice Hall, 2nd Edition, 2004.
6. Handbook of Software Reliability Engineering, Lyu (ed.), McGraw-Hill, 1996.
|CSCIN programme learning outcomes||Course mapping|
|Upon completion of their studies, students will be able to:|
|1. identify, formulate, and solve computer science problems (K/S);||T|
|2. design, implement, test, and evaluate a computer system, component, or algorithm to meet desired needs (K/S);
|3. receive the broad education necessary to understand the impact of computer science solutions in a global and societal context (K/V);||T|
|4. communicate effectively (S/V);
|5. succeed in research or industry related to computer science (K/S/V);
|6. have solid knowledge in computer science and engineering, including programming and languages, algorithms, theory, databases, etc. (K/S);||TP|
|7. integrate well into and contribute to the local society and the global community related to computer science (K/S/V);||P|
|8. practise high standard of professional ethics (V);||P|
|9. draw on and integrate knowledge from many related areas (K/S/V);
|Remarks: K = Knowledge outcomes; S = Skills outcomes; V = Values and attitude outcomes; T = Teach; P = Practice; M = Measured|