Academics
Course Descriptions
SE 501 SOFTWARE DEVELOPMENT PROCESSES
Credits: 3 (3-0-0) Prerequisites: None
This course will study software development lifecycle models starting from the classic waterfall through evolutionary, to recent agile and lean methods. The definition of process models, their design issues, as well as process improvement methods will be addressed. A special emphasis is put on advanced models such as cleanroom and component-based process models and on process quality improvement models such as PSP, TSP, and CMM.SE 502 SOFTWARE REQUIREMENTS ENGINEERING
Credits: 3 (3-0-0) Prerequisites: None
The course will introduce the tasks of eliciting, modeling, analyzing, specifying, documenting, validating, and managing a set of software requirements. Techniques and methodologies for requirements engineering will be studied. This includes such issues as scenario/use case approaches, documentation standards, structured analysis, detection of conflicts and inconsistencies, requirements management, and application of requirement engineering to various types of systems.SE 503 SOFTWARE PROJECT MANAGEMENT
Credits: 3 (3-0-0) Prerequisites: None
This course describes the key aspects of a software project. It begins with the job description of a software manager and then addresses those topics germane to successful software development management including organizing the software development team; interfacing with other engineering organizations (systems engineering, quality assurance, configuration management, and test engineering); assessing development standards; selecting the best approach and tailoring the process model; estimating software cost and schedule; planning and documenting the plan; staffing the effort; managing software cost and schedule during development; risk engineering; and continuous process improvement. Personnel management topics, including performance evaluations, merit planning, skills building, and team building, are also covered.SE 504 SOFTWARE TESTING AND QUALITY ASSURANCE
Credits: 3 (3-0-0) Prerequisites: None
This course is designed to give a greater understanding of the key ingredients in creating and/or managing a successful testing program to meet project needs. Topics covered include software quality assurance, test lifecycle planning, test design & coverage analysis, complexity, levels of testing such as unit, integration, system, performance and stress testing. Best practice strategies in software testing such as verification & validation, object- oriented software testing, early lifecycle testing, risk based testing and automation will also be examined including exposure to test automation methods and tools.SE 505 SOFTWARE DESIGN AND ARCHITECTURE
Credits: 3 (3-0-0) Prerequisites: None
This course covers both architectural design and module design. In- depth study of object-oriented analysis and design modelling using the Unified Modelling Language (UML) notation. Study of design concepts and notations, design patterns, software architecture, quality attributes architectural styles, frameworks and components. Designing for qualities such as performance, security, reusability, reliability, metrics and measurement. Basics of software evolution, re-engineering, and reverse engineering.SE 511 FORMAL METHODS IN SOFTWARE ENGINEERING
Credits: 3 (3-0-0) Prerequisites: None
In software engineering, the term “formal methods” refers to a class of mathematically rigorous methods used to analyze, design and implement complex software systems. The main purpose is to build, with high confidence systems that behave according to their specifications. These methods are usually associated with some formal specification languages and some tools to realize the theoretical specifications. The main purpose of this course is to introduce some of the well-known formal methods used in the areas of software specifications, model checking and verifications.SE 517 REAL-TIME SOFTWARE SYSTEMS
Credits: 3 (3-0-0) Prerequisites: None
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 521 ANALYSIS OF SOFTWARE ARTIFACTS
Credits: 3 (3-0-0) Prerequisites: None
Analysis is the systematic examination of an artifact to determine its properties. This course will focus on analysis of software artifacts--primarily code, but also including analysis of designs, architectures, and test suites. We will focus on functional properties, but also cover quality attributes like performance and security.SE 523 SERVICE ORIENTED ARCHITECTURES AND WEB SERVICES
Credits: 3 (3-0-0) Prerequisites: None
Service Oriented Architectures represent a new rising approach for building interoperable, loosely coupled distributed systems. The main attraction of service orientation is that it makes it easy to separate concerns and integrate heterogeneous system components irrespective of the vendor or platform. System components interoperate while maintaining their independence from other components. 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 526 WEBSITE ENGINEERING
Credits: 3 (3-0-0) Prerequisites: None
This course introduces concepts, techniques, technologies and APIs for web application development. The main focus of the course is on the Model-View-Controller design pattern employed by modern full-stack web frameworks. Concepts and techniques covered include client/server programming, database abstraction APIs, and asynchronous JavaScript.SE 527 DISTRIBUTED SOFTWARE SYSTEMS
Credits: 3 (3-0-0) Prerequisites: None
SThis course addresses key concepts for designing and building distributed software systems. Topics that will be covered include: definition and scope of distribution, principles of communication, software architectures of distributed systems, middleware systems, service discovery, quality of service, adaptive systems, mobility, security, and fault tolerance.SE 529 ENTERPRISE ARCHITECTURE FRAMEWORKS
Credits: 3 (3-0-0) Prerequisites: None
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 531 SOFTWARE MEASUREMENTS
Credits: 3 (3-0-0) Prerequisites: None
Service Oriented Architectures represent a new rising approach for building interoperable, loosely coupled distributed systems. The main attraction of service orientation is that it makes it easy to separate concerns and integrate heterogeneous system components irrespective of the vendor or platform. System components interoperate while maintaining their independence from other components. 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 523 SERVICE ORIENTED ARCHITECTURES AND WEB SERVICES
Credits: 3 (3-0-0) Prerequisites: None
This course will provide a basic understanding of measurement methods and problems, discuss the practical aspects of metric collection, give examples of metrics and management indicators, discuss measurement initiatives underway throughout the world, develop an understanding of measurement techniques that are utilized in practice, discuss new paradigms for measurement. Attendees will acquire solid knowledge of what measurement is, how to implement it, and how to use it in software engineering practice.SE 533 SOFTWARE RISK MANAGEMENT
Credits: 3 (3-0-0) Prerequisites: None
Phenomena and approaches involved in the evolution and reuse of large-scale software, including design for modifiability and tool support. Strengths and weaknesses of industrially-current techniques as well as recent research results.SE 537 BUILDING SECURE DEPENDABLE SOFTWARE SYSTEMS
Credits: 3 (3-0-0) Prerequisites: None
This course addresses key concepts for designing and building highly dependable software systems. The course emphasizes methods and techniques that improve software reliability and security. Topics that will be covered include: software dependability, principles of software reliability, software reliability models, software testing, quality assurance, model checking, software verification, software security, security engineering.SE 539 MOBILE APPLICATION DEVELOPMENT
Credits: 3 (3-0-0) Prerequisites: None
This course covers how to develop applications for mobile platforms. Differences between mobile and desktop computing will be investigated, sample mobile apps will be dissected, and tool suites for the development of mobile software will be covered, including programming languages, frameworks, libraries and integrated development environments.SE 541 SOFTWARE QUALITY ASSURANCE & ENGINEERING
Credits: 3 (3-0-0) Prerequisites: None
This course prepares students to take leading roles in software development, management, and maintenance processes in particular, to plan software quality assurance activities in software development, to lead and execute the activities, and to improve software processes used. It discusses theoretical issues such as software products and product quality (in accordance with current ISO and IEEE software engineering standards), project management activities providing planning and monitoring software product quality during a project, and application of software quality techniques and tools in numerous software life cycle activities and to different software products.SE 543 BUSINESS INTELLIGENCE
Credits: 3 (3-0-0) Prerequisites: None
This course a gentle introduction to Business Intelligence and Business Analytics through practical business problems. the course provides a good coverage of Business Intelligence (BI) and data analytics. The focus is on the underlying data mining techniques and the architectural aspects of BI, with special emphasis on Big Data architectures and technologies. The course starts by defining Business Intelligence and introducing the BI Spectrum (levels of analysis in BI systems). The techniques and algorithms used across the spectrum are then covered in depth with some examples and problems to solve. A special module on Big Data analytics covers Big Data Architectures and Technologies such as Hadoop, MapReduce, Hive etc.SE 545 COMPUTER NETWORKS ROUTING AND SWITCHING
Credits: 3 (3-0-0) Prerequisites: None
This is an advanced course on IP routing and switching protocols. The course will start by reviewing the basic routing and switching protocols. Then more advanced topics in both routing and switching will be covered. The routing topics include Advanced IP Addressing Management such as VSLM and Route Summarization, EIGRP, Multi-area OSPF, IS-IS, BGP, and Route Optimization including Redundancy, Symmetry, Load Balancing and Redistribution. The switching topics will cover VLANs, STP, VTP, inter- VLAN routing, redundancy, Quality of Service issues, campus LAN security, and transparent LAN services. The course is associated with a set of lab experiments that gives hands-on experience on network design, routing techniques, and LAN switching protocols.SE 547 USER INTERFACE ANALYSIS AND DESIGN
Credits: 3 (3-0-0) Prerequisites: None
Current theory and design techniques concerning how user interfaces for computer systems should be designed to be easy to learn and use. Focus will be on cognitive factors such as the amount of learning required and the information-processing load imposed on the user. The user-interface development process. Introduction to methods for practicing user-centered design including user and task analysis, user interface design principles and testing using low-fidelity prototypes. Multimedia software design will also be covered.SE 549 ADVANCED ARTIFICIAL INTELLIGENCE
Credits: 3 (3-0-0) Prerequisites: None
Course that covers advanced topics in artificial intelligence. The target audience for this course are primarily graduate students who are interested in Artificial Intelligence or its applications to problems in other areas of computer science (e.g. intelligent databases, information retrieval, program synthesis, automated design, robotics). The course might also be of interest to some graduate students in engineering, especially those interested in applications of Intelligent Systems in Engineering (e.g. in distributed design and manufacturing, power systems, etc.). Some chapters will be in form of a Research Seminar.SE 551 DATA WAREHOUSING AND DATA MINING
Credits: 3 (3-0-0) Prerequisites: None
This is an advanced course on IP routing and switching protocols. The course will start by reviewing the basic routing and switching protocols. Then more advanced topics in both routing and switching will be covered. The routing topics include Advanced IP Addressing Management such as VSLM and Route Summarization, EIGRP, Multi-area OSPF, IS-IS, BGP, and Route Optimization including Redundancy, Symmetry, Load Balancing and Redistribution. The switching topics will cover VLANs, STP, VTP, inter- VLAN routing, redundancy, Quality of Service issues, campus LAN security, and transparent LAN services. The course is associated with a set of lab experiments that gives hands-on experience on network design, routing techniques, and LAN switching protocols.SE 593 SEMINAR IN SOFTWARE ENGINEERING
Credits: 3 (3-0-0) Prerequisites: None
This course examines the underlying concepts and latest topics in software engineering. Potential topics include effective software development techniques such as agile and extreme programming; use of UML to define testing strategies; useful development tools and environments; patterns; metrics issues in system generation; teamwork in successful developments. Each student will select and report on a software engineering topic, perform independent reading, and prepare a paper describing a major software engineering issue. The course is taught using a seminar format in which significant portions of the class period are set aside for students to lead and actively participate in discussions.SE XXX SOFTWARE SYSTEMS MODELLING