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 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 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 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 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 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 SENIOR PROJECT
Credits: 3 (3,0,0) Prerequisite: Completion of 88 credit hours + Department consent
Provides students, working in groups, with significant project experience in which they can integrate much of the material they have learned in their program, including matters relating to requirements, design, human factors, professionalism, and project management. Students will develop a significant software system, employing knowledge gained from courses throughout the program. Includes development of requirements, design, implementation, and quality assurance. Students may follow any suitable process model, must pay attention to quality issues, and must manage the project themselves, following all appropriate project management techniques. Success of the project is determined in large part by whether students have adequately solved their customer’s problem.