SOEN 3311: Requirements Engineering (3,0,3)
This course exposes students to the problem of determining and specifying what a proposed software system should do, why and for whom the system is needed—not how the system should do it, which is the topic of downstream software engineering activities such as design and coding. The course will discuss concepts for systematically establishing, defining, and managing the requirements for a large, complex, changing and software-intensive systems, from technical, organizational, and management perspectives. The course will consider the past, present, and future paradigms and methodologies in requirements engineering. The course will cover informal, semi-formal, and formal approaches, while striking a balance between theory and practice. The course will involve building models of both requirements engineering process and requirements engineering product, concerning both functional and non-functional goals/requirements/specifications, using a systematic decision-making process.
SOEN 4371: E-Commerce (3,0,3)
The primary objective of this course is to expose students to the advanced use of information technology in the design and implementation of Web-based business applications to support c-commerce. The course presents concepts, methodology, and tools for designing, implementing, and management of e-commerce applications in a business-to-business paradigm.
SOEN 4311: Software Architecture and Design (3,0,3)
Designing software is an integral part of engineering a software product. Poorly designed software exposes systems and the organizations they serve to many risks ranging from innocent defects injected during development to more sinister assurance vulnerabilities that might compromise the systems’ mission. Effectively designed software ensures a product that evolves with its changing environment, providing the requisite functionality within the expected performance parameters. Design is both a process and a product – a creative process producing a software artifact that models key aspects of the system.
The main goal of this course is to provide an introduction to the area of designing a software system. The challenges that are faced and the techniques used in professional design of complex industry-grade software will be covered. This course will also expose students to several research topics in the area of software engineering. This course presents software design principles in the context of software engineering that enables software engineers to produce and deliver software on-time, on-budget, and on specification.
SOEN 4312: Software Testing and Quality Assurance (3,0,3)
The main goal of this course is to provide an introduction to software testing, bug detection, and maintenance techniques. This course covers concepts of software quality, software quality metrics, software quality assurance planning and implementation, quality process standards, validation and verification, reviews, walkthroughs and inspections, and mechanisms for testing and validating software systems test data.
SOEN 4313: Software Project Management (3,0,3)
This course will introduce the concepts and techniques for managing software projects. The students will learn the basic project management concepts including process groups, knowledge areas and project management lifecycles with special focus on Agile approaches. The students will learn techniques for initiating, planning, launching and monitoring software projects. They will also learn tools and techniques related to software configuration and build management. They will learn software project management tools and use it to manage their software project.
SOEN 4322: Software Security (3,0,3)
This course is aimed at helping students understand how to develop secure software. This course will provide students with a good understanding of the theories and tools used for secure software design, threat analysis, secure coding, and vulnerability analysis. Students will study, in-depth, vulnerability in order to understand how to protect software and how to secure software. Students will learn various software vulnerabilities, and the strategies to prevent them during software lifecycle. Students will also be exposed to best security practices and will learn about models for analyzing software security. The class will also cover various analysis and design techniques for improving software security, as well as how to use these techniques and tools to improve and verify software designs and security. Finally, the course will discuss technical trends affecting software security.
SOEN 3314: Formal Methods in Software Engineering (3,0,3)
Formal Methods in Software Engineering introduces students to the mathematical tools used to rigorously specify, design, implement, and validate software. Mathematical precision that leads to achieving the required level of quality can be used in all phases of the software development cycle, from requirements specification to module specification (whether axiomatic, algebraic or trace specifications) and ending with verification and specification-based validation.
SOEN 3321: Programming in UNIX Environments (3,0,3)
Programming in UNIX Environments teaches students how to write software that interacts with a computational device through a UNIX-based operating system. The course starts by covering the essential commands and script languages used in a UNIX environment, continues with UNIX application programming in C and ends with program development in assembly language.
SOEN 4312: Concurrent Programming (3,0,3)
A concurrent program consists of multiple “threads of control” that execute at the same time, possibly on multiple processors. It is quite challenging to write efficient and correct concurrent programs. This course provides an introduction to the models, mechanisms and techniques that can be used to write concurrent programs.
SOEN 4463: Data Mining (3,1,4)
The astronomical growth of data during the past decade has created an unprecedented opportunity for data mining (sometimes called data or knowledge discovery). This is the process of analyzing data from different perspectives and summarizing it into useful information—information that can be used, among other purposes, to increase business revenue, cuts costs, or both. In SOEN 4463: Data Mining, students will be taught many topics related to data mining, including data clustering, classification, association rules / sequential patterns, and anomaly detection. Surveys of some data mining tools and applications will also be covered. Students will be provided with hands-on training to visualize and interpret the results using data mining toolkits.
SOEN 4315: Cloud Computing (3,0,3)
Cloud computing has emerged in recent years as a new paradigm for hosting and delivering services over the Internet. This course is designed to introduce the fundamental concepts of this technology and allow students to have an opportunity to explore the various terminology, principles and applications of cloud computing. The course will expose students to different views of understanding cloud computing such as theoretical, technical and commercial aspects. A variety of real-world case studies and existing cloud-based tools will be identified and studied in order to provide students with a close overview of cloud computing applications.
SOEN 3361: Computer Networks (3,0,3)
This course covers the architecture and protocols of local and wide-area networks, including signaling, data representation, error control, flow control, and routing. The C++ or Java-based sockets API is used to provide practical examples of communication, error control, and flow control. Peer-to-peer and client/server configurations based on UNIX/Linux and Windows architectures are explored.
SOEN 3463: Distributed Systems (3,1,4)
This course is designed to introduce the students to the concept of distributed systems. Such systems consist of a set of PCs or workstations connected by a network that run special software and allow for transparent sharing of the distributed computing resources and data. The main area of focus will be the ways in which computer resources connected by a network can be used and shared. This includes using them for parallel computing, resource and file sharing, data and communication, and availability. SOEN 3463: Distributed Systems will also provide students with an appreciation of the scopes and limitations of distributed systems, to make them familiar with current design trends and philosophies in distributed systems seen from both software, hardware and applications viewpoints.
SOEN 4461: Programming Languages (3,1,.4)
Programming languages is the study of basic concepts and constructs underlying the design of the modern programming languages. Various programming paradigms, including object-oriented, functional, logic, and concurrent programming, are discussed.