Page 111 - University Bulletin
P. 111
110
SOFTWARE ENGINEERING COURSES
SE 201 INTRODUCTION TO SOFTWARE ENGINEERING
Credits: 3 (3,0,1) Prerequisite: CS 102+ ENG 103
This course introduces software engineering as a discipline. It starts by a general
introduction on the evolution of the discipline, then introduces the software life-cycle,
software processes, requirement analysis, design, implementation, testing. This course
covers the various Software Development Processes and requires students to appreciate
and apply various aspects of software engineering principles. Classical Software
Development Life-cycles from waterfall, spiral, incremental, evolutional to recent lean,
agile methods and component based systems are covered. Special emphasis is put on
quality and process improvement models such as CMM, PSP and TSP. This introduction is
complimented by practical training to develop some of the basic software engineering
skills. The skills covered include planning, estimation, scheduling, testing, debugging,
quality management …etc
SE 311 SOFTWARE REQUIREMENTS ENGINEERING
Credits: 3 (3,0,1) Prerequisite: SE 201 for SE students, CS 225 for CS students
This course covers software requirements, applied to a variety of types of software. It also
covers techniques for discovering and eliciting requirements, requirements
documentation standards, languages and models for representing requirements, analysis
and validation techniques, including need, goal, and use case analysis, requirements in the
context of system engineering, specifying and measuring external qualities: performance,
reliability, availability, safety, security, etc., and requirements management: handling
requirements changes, traceability, resolving feature interactions.
SE 322 SOFTWARE DESIGN AND ARCHITECTURE
Credits: 3 (3,0,1) Prerequisite: SE 311
This course covers software design in-depth. Study of fundamental design concepts,
design notations, and architectural design methods for large-scale software systems;
several design methods are presented and compared, with examples of their use;
Concepts such as information hiding, data abstraction, concurrency, and object-oriented
software construction are discussed in depth; Students participate in a group project on
software design.
SE 353 BUILDING SECURE SOFTWARE SYSTEMS
Credits: 3 (3,1,0) Prerequisite: CS331
This course studies approaches, mechanisms, and tools used to make software systems
more secure. The course will motivate the study by discussing common software security
dangers (e.g., buffer overflow attacks, cross-site scripting). The majority of the course will
be divided into four main modules: architectural approaches to building secure software
(e.g., confinement, virtual machines, trusted computing); software analysis (e.g., static
analysis and testing, model checking); language-based approaches to building secure
software (e.g., type systems, proof-carrying code); and run-time enforcement of security
policies (e.g., dynamic taint analysis).