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).
SE 365 HUMAN COMPUTER INTERACTION
Credits: 3 (3,1,0) Prerequisite: CS 210
This course covers the introduction to the concepts underlying the design of human-computer
interaction: usability, direct manipulation, systematic design methods, user conceptual models
and interface metaphors, design languages and genres, human cognitive and physical ergonomics,
information and interactivity structures, design tools and environments. This course teaches how
HCI affects the overall design of interfaces. The course covers four major parts: the
foundation, the design process, models and theories, and think outside the box.
SE 371 WEB ENGINEERING
Credits: 3(3,0,1) Prerequisite: CS 210
This course covers the major aspects of full-stack web applications development. Full-stack web
development involves the design and development of front-end and back-end applications in web
framework. The course starts with a short introduction on the web applications architecture and
underlying technologies, including HTML (focus on HTML 5), Cascading Style Sheets (CSS) and
JavaScript for client-side scripting. The course then proceeds to cover server side Web
application development in depth, including the multi-tier development model (data tier,
business tier, presentation tier), web database development, authentication, navigation, working
with XML, state management, caching, etc.
SE 381 EMBEDDED SOFTWARE ENGINEERING
Credits: 3 (3,0,1) Prerequisite: SE 322, CS 355
This course discusses software engineering practice and methods for embedded systems, focused
around state machines as a unifying formalism for understanding software, hardware, and systems.
It also discusses embedded software requirements, specification, analysis, principles of
embedded software architecture and design, design of concurrent systems, and testing and
analysis techniques for embedded systems.
SE 401 SOFTWARE QUALITY ASSURANCE AND TESTING
Credits: 3 (3,1,0) Prerequisite: SE 322
This course is designed to give an understanding of the key concepts and principles in creating
and managing successful software testing to meet specific requirements using best practices of
software quality assurance. Topics covered include software quality assurance, testing process,
test design & coverage techniques and testing strategy. Best practice strategies in
object-oriented software testing and web application are also discussed. An overview of test
automation methods and tools is also covered.
SE 403 SIGNAL PROCESSING SYSTEMS
Credits: 3 (3, 0, 1) Prerequisite: CS 210
Digital signal processing (DSP) systems have been enabled by the advances in very-large
scale-integrated (VLSI) technologies. New DSP applications constantly impose new challenges on
VLSI implementations. These implementations must satisfy real-time constraints imposed by the
applications and must fit increasingly stringent area and power envelope. This course will
survey methodologies needed to design efficient and high-performance custom or semi-custom VLSI
systems for DSP applications. The primary focus of the course is on design of architectures,
algorithms, and circuits, which can be operated with small area and low power consumption to
deliver a high speed and functional performance.
SE 407 MICROPROCESSOR BASED SYSTEMS
Credits: 3(3, 0, 1) Prerequisite: CS 355
This course is focused on the principles and practices of modern embedded systems design. It
will focus on computer architecture beyond the CPU, fundamentals of the hardware/software
interface, techniques for sensing and controlling the physical world, and a few other topics.
Introduction to microprocessors as embedded devices. Emphasizes Input/output techniques,
interrupts, real-time operation, high-level code debugging and interfacing to various types of
sensors and actuators.
SE 409 CLOUD COMPUTING
Credits: 3 (3,0,1) Prerequisite: CS 331, SE 322
This course will give students a theoretical foundation and hands-on experience with the various
technologies of the cloud computing paradigm. The course will cover topics related to cloud
infrastructure and software stack, programming models, underlying distributed storage layers, as
well as Virtualization. Students will also be exposed to various cloud frameworks and libraries.
SE 411 SOFTWARE CONSTRUCTION
Credits: 3 (3,0,1) Prerequisite: SE 401
This course will provide students with an in-depth study of software construction. Topics
include basic theory of grammars and parsing, use of parser generators, software construction
fundamentals (minimizing complexity, anticipating change, constructing for verification and
standards in construction), managing construction (construction models, construction planning
and construction measurement), practical considerations (construction design, construction
languages, coding, construction testing, reuse, construction quality, configuration management,
security, automation, and integration), and techniques for handling concurrency and
inter-process communication.
SE 413 SOFTWARE SYSTEM MODELLING
Credits: 3 (3,0,1) Prerequisite: SE 322
This course examines the underlying concepts and latest topics in software models. This course
considers many of the standard models for representing sequential and concurrent systems, such
as state machines, algebras, and traces. It shows how different logics can be used to specify
properties of software systems, such as functional correctness, deadlock freedom, and internal
consistency. Concepts such as composition mechanisms, abstraction relations, invariants,
non-determinism, inductive definitions and de-notational descriptions are recurrent themes
throughout the course. This course provides the formal foundations for the other core courses.
Notations are not emphasized, although some are introduced for concreteness. Examples are drawn
from software applications.
SE 415 GROUP DYNAMICS AND PROFESSIONAL PRACTICE
Credits: 3 (3,0,1) Prerequisite: SE 322
This course contributes to the domain of Group Dynamics (GD) in Software Engineering (SE).
Student will learn how to identify the Group Dynamics (GDs) within a traditional and global
software development environment. It also introduces the SE Professional Practice as one of the
fifteen knowledge areas of Software Engineering Body of Knowledge (SWEBOK) which states that SE
professional practice is concerned with the knowledge, skills, and attitudes that software
engineers must possess to practice SE in a professional, responsible, and ethical manner. This
course covers issues related with professionalism, GDs, psychology and communication skills.
SE 417 AGENT BASED SOFTWARE ENGINEERING
Credits: 3 (3,0,1) Prerequisite: SE 322
This course begins with an overview of the agent systems and software agents. Then it focuses on
agent system architecture and infrastructure from a software engineering viewpoint, including:
requirements for agent-based systems, modeling and design of agent-based systems, development
process for agent-based systems. Topics such as agent architecture, communication, knowledge
sharing, computing and uncertainty management are discussed. Studying society of agents and
models of agency follows. Finally, a perspective on a methodology for agent-oriented software
engineering and standards are presented.
SE 420 AGILE SOFTWARE ENGINEERING
Credits: 3 (3,0,1) Prerequisite: Senior level
This course is an introductory course to agile software development methodologies. It explores
theory, tools, and techniques for the practices of the agile approach. Students will gain
hands-on experiences in agile software development through projects dealing with various aspects
of agile development.
SE 421 SOFTWARE METRICS
Credits: 3 (3,0,1) Prerequisite: Senior Level
This course covers concepts of the pervasive system attributes: reliability, efficiency,
maintainability, reusability, etc., software quality management processes, software complexity
and measures, software process measures, product measures and resource measure, validation of
software measures, software measures and measurement theory, measuring, monitoring and
controlling reliability, and software quality tools.
SE 422 SOFTWARE MAINTENANCE AND EVOLUTION
Credits: 3 (3,0,1) Prerequisite: SE 401
This course provides students with a common understanding of software maintenance principles and
software evolution. Key issues in software maintenance, maintenance process, techniques for
maintenance, software maintenance tools, maintenance and Reengineering, reverse engineering, and
refactoring.
SE 423 SOFTWARE ENGINEERING PROJECT MANAGEMENT
Credits: 3 (3,0,1) Prerequisite: Junior Level
This course covers the main knowledge areas of project management (time, cost, quality, scope,
risk, human resources, communications, etc.) by focusing on software projects. It also covers
project planning, cost estimation, earned-value analysis techniques and scheduling, project
management tools, factors influencing productivity and success, productivity metrics, analysis
of options, risk management and dynamic adjusting of project plans, planning for change,
management of expectations, software contracts and intellectual property, approaches to
maintenance and long-term software development, standards in project management, such as
ISO10006, ISO12207, along with CMM model will be also discussed. Case studies of real industrial
projects will be discussed.
SE 430 SOFTWARE PROCESSES & PROCESS IMPROVEMENTS
Credits: 3 (3,0,1) Prerequisite: SE 401
Developing reliable software on time and budget is a challenging issue for many organizations. A
software process improvement focus offers the organization a better chance for success. In this
course, software process improvement methods, models and techniques will be studied with a focus
on software development practice. Topics that are covered in the course range from how to assess
software development organizations capability to how an organization can take advantage of
change artistry.
SE 436 SERVICE ORIENTED ARCHITECTURES
Credits: 3 (3,0,1) Prerequisite: SE 322
This courses covers service oriented architectures. The main purpose of this course is to
introduce the major concepts and technologies relating to service oriented architectures. This
includes the core architecture, main principles of service orientation, service oriented
analysis, service oriented design, and business process design.
SE 444 FORMAL METHODS AND MODELS IN SOFTWARE
Credits: 3 (3,0,1) Prerequisite: Senior Level
This course is an introduction to the use of formal methods for the specification, design, and
automatic analysis of software systems. A variety of specification notations such as
propositional and predicate logic, UML/OCL, temporal logic are presented. In addition, the
course covers the application of analysis techniques including theorem proving, constraint
checking, model checking using existing commercial and research tools.
SE 445 REAL-TIME SOFTWARE SYSTEMS
Credits: 3 (3,0,1) Prerequisite: CS 330
This course focuses on practical development and engineering approach issues of real-time
software. It assumes a reasonable proficiency in at least one programming language (C, C++,
Java, or others) and a basic understanding of the fundamental concept of object orientation. The
course emphasizes architectural analysis rather than programming. Topics include: architectural
aspects, scheduling and synchronization, design patterns for real-time software, and aspects of
software verification and model checking.
SE 450 DESIGN PATTERNS
Credits: 3 (3,0,1) Prerequisite: SE 322
This course provides an in-depth view of design patterns. The course is suitable for software
architects and developers who are already well-versed in software design. In addition, this
course will offer continuous opportunities for learning the most advanced features of the object
oriented languages and understanding some principles behind the design of its fundamental
libraries.
SE 453 Software Security Architecture
Credits: 3 (2,0,2) Prerequisites: SE 353
This course will study architectural patterns for integrating security into software such as web
applications. The course will cover several topics include: an overview of software security;
integration of authentication, access control, and auditing into software; programming with
symmetric-key and asymmetric-key cryptography, including key distribution and key management,
use of certificates, and SSL/TLS; security mechanisms in modern runtime environments, e.g., code
signing, code verification, access control, and security policies. Students will get hands-on
experience designing and implementing secure software.
SE 465 ENTERPRISE ARCHITECTURES
Credits: 3 (3,0,1) Prerequisite: SE 322
This course focuses on the analysis and design of an enterprise in its current and future states
from a strategy, business and technology perspective. This course provides an exposure to the
foundational concepts of enterprise architecture. The course will provide students with the
foundational knowledge needed to understand how EA serves to integrate strategic, business, and
technology planning methods, which support enterprise-wide information technology resource
development and governance in the context of business requirements.
SE 477 ADVANCED BUSINESS PROCESS MANAGEMENT
Credits: 3 (3,0,1) Prerequisite: SE 322 for SE students, Junior Level for CS students
Business Process Management (BPM) is a research field that focuses on improving performance by
managing and optimizing its processes. This course addresses techniques and concepts required to
map, implement, automate, and evaluate business processes. Components of BPM lifecycle will be
discussed with emphasis on modeling, analysis and optimization of processes in a data-driven
fashion. The course comprises concepts of Business Process Management such as Process modeling
using BPMN, qualitative and quantitative analysis of processes models, Process Redesign and
Automation. Additionally, the course focuses on introducing the importance of process mining
into the discovery and improvements of processes. Students learn the three basic steps of
Process Mining: discovery of models from data, conformance analysis of the resulting models with
data, and performance analytics.
SE 480 SOFTWARE ANALYTICS
Credits: 3 (3,0,1) Prerequisite: Instructor consent
This course covers the application of selected statistical analysis, data mining, and machine
learning techniques to the area of Software Engineering. These methods and techniques are used
to conduct stakeholder analysis, mining software repositories, trace retrieval, bug prediction,
recommender systems in Software Engineering domains, and software process improvement
techniques. The course demonstrates how these techniques can be used to enhance project
management and other software engineering activities in software intensive systems and provides
students with hands-on experience using them on real project data.
SE 489 SELECTED TOPICS IN SOFTWARE ENGINEERING
Credits: 3 (3,0,1) Prerequisite: Instructor consent
This course covers topics in the software engineering discipline not covered by other SE
courses. Students are encouraged to propose topics for this course.
SE 492 Co-op [COOPERATIVE EDUCATION]
Credits: 10 Prerequisite: Department consent
The Co-Op is a career related professional program available to all Software Engineering
students. It is designed to help students build on skills already learned in the classroom and
acquire new ones as well. Co-Op education is available to CCIS students who have accumulated the
requisite number or more credits. The Co-Op counts for 10 credit hours (CRs) for
practical onsite experience over a 7 month period, i.e. spanning one semester and a summer.
SE 495 EMERGING TOPICS IN SOFTWARE ENGINEERING
Credits: 3 (3,0,1) Prerequisite: Instructor consent
This course covers topics in the computer science discipline that recently gained innovative
attention in Computer Science. Students are encouraged to propose topics for this course.
SE 499 SOFTWARE DESIGN & DEVELOPMENT PROJECT
Credits: 3 (3,0,0) Prerequisite: Department consent
This course provides the students with a significant and iterative software development process experience in which they integrate much of the knowledge they learned in their program. Groups of students tackle real-world problems that require the development of a software solution, thereby applying fundamentals of software engineering; software requirements engineering; software design; software construction; software testing; and software project management.