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).
   106   107   108   109   110   111   112   113   114   115   116