Course Catalog

GEIT Courses

GEIT 1411: Computer Science I (3,1,4)
The course is an introduction to programming and to the use of algorithms in designing programs. A software engineering approach to developing computer programs is stressed and object-oriented concepts are introduced. The course examines standard control structures, approaches to modularization, and the use of primitive and structured data types. 
GEIT 1412: Computer Science II (3,1,4)
This course is a continuation and extension to GEIT 1411 Computer Science I. It introduces the student to a systematic study of basic data structures such as queues, stacks and binary trees including searching and sorting algorithms and their associated computational costs. A software engineering approach to developing computer programs is stressed and object-oriented concepts are emphasized. Reusability of code, effective software development methodologies and good programming practices are significant components of the course. 
GEIT 2421: Data Structures (3,1,4)
Data structures is the systematic study of some advanced data structures, including list, stack, queue, dictionary, and graph. Sorting and hashing algorithms and their associated computational costs are discussed. Algorithm analysis techniques are also investigated to provide a metric to measure the performance of an algorithm in question. 
GEIT 2291: Professional Ethics (2,0,2)
This course is designed to educate students on the impact ethical issues have on the use of information technology in the modern business world. It examines the ethical codes of the professional societies and the philosophical bases of ethical decision-making. Students acquire the foundation that helps them make appropriate decisions when faced with ethical dilemmas ethics and professional conduct in the workplace. 
GEIT 2331: Mathematical Reasoning & Algorithmic Thinking (3,0,3)
This course is about the study of objects that have discrete as opposed to continuous values including the foundations of logic, algorithms and their complexity, mathematical reasoning, relations, graphs, trees and combinatorics. 
GEIT 3331: Computer Organization (3,0,3)
This course examines the functional components of computer systems. Topics discussed include processors, memory types and hierarchies, buses, I/O, interrupts, etc. with emphasis on how they affect program execution, parameter passing and inter-program communications between programs written in diverse languages. 
GEIT 3341: Database I (3,0,3)
The objective of this course is to give students an understanding of key issues related to database design and implementation to support the automation of key business processes in organizations. The course is designed so as to cover topics that are relevant from a database design and implementation perspective; particularly one that involves the provision of online access to data resources to a variety of physically distributed organizational users. It includes a mix of lectures (some of which are conducted in the laboratory) and discussions on contemporary articles from industry publications. 
GEIT 3351: Principles of Software Engineering I (3,0,3)
The course is designed to provide an introduction to the theory and practice of software development and maintenance. The focus is on the full software development life cycle, including coverage of tools, techniques, principles, and guidelines for software requirements, specification, design and implementation. Particular emphasis is placed on the principles and methods used to develop and validate software requirements. Students are guided toward a better understanding of the various tasks and specialties that contribute to the development of a software product. 
GEIT 4361: Practical Training (3,0,3)
This course provides opportunities for students to apply the academic concepts, skills and techniques learned in their coursework to a professional work-oriented setting. The course offers the potential for a one-semester internship with a regional employer or a directed study course providing practical learning experiences that benefit the community. 
ASSE 4311: Learning Outcome Assessment III – Software Engineering (3,0,3)
This is the capstone course required of all students pursuing an undergraduate degree program within the College of Information Technology. The objective of this course is to bring together in an applied manner the knowledge and skills obtained by the students throughout their undergraduate program. The course is designed so as to cover topics that are relevant from an integrated IT systems design and implementation perspective. The term “integrated IT systems design and implementation” refers to complex collaborative efforts that bring together knowledge skills in the related areas of computer science, computer engineering, and information technology (as covered by the three undergraduate programs offered by the College of Information Technology). The course is very applied. One of its main components is a team project focusing on integrated IT systems design and implementation. The course also includes a mix of speakers’ presentations, project work, and discussions on contemporary articles from industry publications. 

SOEN Courses

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 4321: Software Maintenance and Evolution (3,0,3)
This course studies the problems and solutions related to developing large-scale software systems. It examines topics from the motivation for change-maintenance-evolution in software and its limitations and implications to the process of change-maintenance-evolution and its tools.

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.