CSCI3100 Software Engineering

 

Course code CSCI3100
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.
本科介紹軟件生命週期:系統模型化、要求分析及規格、設計技術、實踐方案、測試、維護及工程實驗。分析工具:軟件度量、系統性能之測量及評價。管理技術:估計、規劃、計劃之管理、通信技巧及文件編制。計算機輔助系統工程(CASE)導論及保密性。 
Unit(s) 3
Course level Undergraduate
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
Semester 2
Grading basis Graded
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;
– correctness;
– 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.
Assessment
(for reference only)
Final Exam: 40%
Project: 30%
Mid-term exam: 20%
Assignments: 10%
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);
TPM
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);
P
5. succeed in research or industry related to computer science (K/S/V);
TP
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