Computer Science (COMP)


An introductory course covering the fundamental concepts and skills of programming in a high-level language. Emphasis is placed on problem solving, algorithm development, program design and structure, code documentation and style, and testing and debugging. Topics include hardware and software systems, data types and variables, device/file input and output, flow control and functions, use of basic data structures, as well as principles and applications of object-oriented programming. (4 credits) fall, spring


This course is an advanced introduction to computer science. It focuses on object-oriented programming. Topics include abstraction and encapsulation, classes and methods, objects and references, overloading, inheritance, polymorphism, interfaces, console/file input/output, dynamic data structures, generics, and GUI applications. Prerequisite: COMP1000 or ELEC3150 (4 credits) fall, spring


This course provides an introduction to networking and computing systems including operating systems, technical aspects of the Internet and internetworking. (4 credits) fall, spring


This course introduces the students to routing, packet forwarding, and switching technologies. Both static routing and dynamic routing protocols are covered as well as basic switching concepts. Students will learn how to configure industry standard networking equipment. Prerequisite: COMP1100 or COMP2100 (4 credits) fall, spring


This course covers binary number and codes, logic elements, combinational and sequential logic, architectural design of a computer using these elements, and introduces concepts such as process and memory management. Prerequisite: COMP1000; Corequisite: MATH2300 (4 credits) fall, spring


This course is an introduction to the analysis and implementation of data structures. Topics include bags, sets, lists, queues, trees, maps, recursion, sorting and searching. Prerequisites: COMP1050 and MATH2300 (4 credits) fall, spring


This course provides an overview of how modern systems communicate over the Internet. An emphasis is placed on application programming interfaces common to all forms of network programming. Students will gain practical experience with several operating systems and network protocols relevant to computing. Prerequisite: COMP1050 (4 credits) fall, spring


Modern enterprise and business systems rely on a stable network and server infrastructure to function. This includes many network protocols and services that are required in any network operations environment. Students in this course will configure and manage these critical services in their own virtualized environment following best practices and standards from the operations community. Prerequisite: COMP1150 (4 credits) spring


This course will give introduction to the state of the art wireless and mobile networks. This course will cover the fundamental principles, architectures, and standards of modern wireless communication systems, including their applications and uses. Prerequisite: COMP1100 or COMP2100 (4 credits) spring


This course introduces algorithmic design and analysis: students assess the complexity of algorithms in terms of time and space requirements for large input sizes. Topics include searching, sorting, pattern matching, hashing and encryption. Prerequisites: COMP1050 and MATH2300 (4 credits) fall, spring


This course covers the principle analysis, design and implementation methodologies, and tools to develop business applications using the system development life cycle (SDLC). Students will gain experience in the analysis, design, and development of business applications via a series of case studies. (4 credits)


The course introduces computer and network security concepts and techniques. Theoretical concepts of security are examined as well as implementing system and network security. Prerequisite: COMP1100 or COMP2100 (4 credits) fall


Concepts and methods for the design, creation, querying, and management of relational database management systems. Covers modeling the conceptual and logical organization of databases, including the entity-relationship model; the relational data model and SQL; as well as functional dependencies and normal forms. Students will further strengthen their database skills by developing a substantial project with a team. Prerequisite: COMP1050; MATH2300 or MATH2800 (4 credits) fall, spring


System administration is the practice of installing, configuring, and maintaining a computing system. This course provides students an overview of these and related concepts as well as the skills required to become an entry level system administrator. In particular, topics covered include file systems, process control, access control, account management, software management, and scripting. Prerequisite: COMP1000; COMP1100 or COMP2100 (4 credits) fall


The aim of this course is to provide the fundamental knowledge and skills commonly required to solve data-driven problems. The curse introduces computational and inferential approaches using set off skills that are cross-disciplinary. The course will train well-rounded professionals who can provide quantitative analysis, gather and analyze (big) data, and interpret and share results in a meaningful way. Prerequisites: COMP1000 or ELEC3150; and MATH1030 or MATH2100 (4 credits)


An advanced course in assembly language, including data representation, data storage, arithmetic, control flow, stacks and procedures, integer and character I/O, encryption, and applications to embedded computing. Prerequisites: COMP1200, COMP2000 and COMP2350 (4 credits)


An introduction to programming language concepts, including language evaluation criteria, context free grammars, parse trees, syntax diagrams, symbol tables, data types, control structure, and language translators. Prerequisite: COMP2000 and COMP2350 (4 credits) summer


In this comprehensive course, we will study the basic facilities provided by the Operating System. Students will cover the functions of operating systems, including process management (processes, threads, context switch, concurrency control, synchronization, scheduling, deadlocks, etc.), primary memory management, virtual memory management, file systems, resource allocation, and information protection. Prerequisites: COMP2000 and COMP2350 (4 credits) fall


This course covers topics related to parallel and distributed computing, including parallel and distributed architectures and systems, parallel and distributed programming paradigms, parallel algorithms, and applications of parallel and distributed computing. Prerequisites: COMP2000 and COMP2350 and COMP2100 (4 credits) summer


This course covers the functions and organization of operating systems, including process management, input/output systems, memory management, resource allocation, data management, and information protection. Prerequisite: ELEC2850 (4 credits) spring


This course covers all aspects of securing and protecting a local area network from threats and vulnerabilities. Students will configure, test, and validate standard network services and devices at all layers of the network. Prerequisites: COMP2150 and COMP2500 (4 credits) fall


This course covers all aspects of securing and protecting a computer system from threats and vulnerabilities. Topics include password hashing and protection, virus detection, server security hardening, and application software protection. Prerequisites: COMP2500 and COMP3100 (4 credits) summer


Cybersecurity and forensics are part of an ever-changing field of computing and all other things "cyber". This course intends to examine many of the challenges and current problems that exist within these fields. Specifically, this course will provide an overview of the distinct challenges that cybersecurity professionals and forensic investigators face, identify the appropriate platforms for tools to be created that resolve or remediate some of those challenges, and ensure that integrity of evidence is maintained for appropriate post-event actions. Existing and emerging research in the field of cybersecurity, digital forensics, law, human factors will be examined. Prerequisites: COMP3100 or COMP3400 (4 credits)


This course introduces the fundamentals of digital forensics and analysis of crime scenes that may involve computers, cell phones, and other digital devices. Formal methodologies, frameworks, processes and procedures for conducting digital forensic investigations are discussed in detail. Distinctions between Digital Forensics, eDiscover, and Incidence Response processes are explained. Relevant laws, regulations, and governance requirements dealing the different aspects of forensic investigations are examined as well. Prerequisites: COMP3100 or COMP3400 (4 credits)


This course is an introduction to the basic theory and practice application of cryptographic techniques used in modern information security systems. Cryptography provides important tools for ensuring the privacy, authenticity, confidentiality, an integrity of data involved in modern information systems, and frames the approach used in this course. This course examines the progress from historical symmetric encryption standards and protocols to the modern public key encryption processes. Basic concepts of ciphers, blocks, hashes, MACs, and key rotation strategies are discussed. Different implementation approaches are presented along with their performance impacts, along with potential attach strategies and their efficacy are discussed. Prerequisites: COMP3100 or COMP3400 (4 credits)


This course is an introduction to mobile application development. It focuses on the creation of software systems for mobile devices. Topics include: platform introduction, environment setup, version control system, system prototyping, project structure and resources, application lifecycle, UI components, system services, sensors, security and permissions, data storage, testing and debugging, and application deployment. Prerequisite: COMP1050 (4 credits)


This course introduces software tools used in biology for gene sequencing, pattern matching, etc. Tools may include database, data mining, statistical analysis, algorithms and visualization. (4 credits)


This course covers practical applications of descriptive and inferential statistics with an emphasis on principles and methods of summarizing biological data using statistical software package. Prerequisites: COMP1000 and MATH2100 (4 credits) summer


Presents topics that are not covered by existing courses and are likely to change from semester to semester. Refer to the Class Schedule for a specific semester for details of offerings for the semester. (4 credits)


Introduction to the field of machine learning. This course focuses on algorithms to help identify patterns in data and predict or generalize rules from these patterns. Topics include supervised learning (parametric/non-parametric algorithms, kernels, support vector machines), model selection, and applications (such as speech and handwriting recognition, medical imaging, and drug discovery). Students who have basic programming skills and who have taken a course in probability are encouraged to take this course. Prerequisite: MATH2100 and COMP1000 (4 credits)


This course is a follow-on course to System Administration that dives deeper into system and network environments found in modern enterprises. Students will build fully functional virtual networks, configure shared storage, deploy network account systems, utilize configuration management tools, monitor system health and set up a variety of standard applications. Scripting is used throughout the course to solve problems and automate common tasks. Prerequisites: COMP3100 (4 credits)


Systems programming involves writing software that is intended to interact with the Operating System rather that with the user directly. This course covers UNIX/Linux systems programming including system calls, file I/O, memory management, processes, threading, and other related topics. Students will rewrite fundamental parts of the UNIX/Linux userspace. Prerequisite: COMP3400 (4 credits)


This course covers the principles and techniques used in the design of compilers. Compilers are the programs that translate code written in higher level languages into executable code. Topics include lexical and semantic analysis, transition, code generation and optimization. Prerequisite: COMP3350 (4 credits)


This course identifies the tools, techniques, strategies, and motivations of system intruders. In doing so, this course provides students with the skills necessary to ethically search, identify, and perform active assessment of enterprise systems, typically called penetration testing. Thus, students are able to preemptively identify the mechanisms by which attacks are perpetrated and the methods by which they can be prevented, defended or remediated. The hands-on activities will be based on environment(s) that minimize risk, and possible legal, ethical or network availability issues. Prerequisites: COMP3500 (4 credits) spring


This course covers the process and implementation of incident response plans that adhere to appropriate business continuity plans. Students will design, implement, and test incident response processes for a variety of scenarios to ensure that the recovery time of their systems is within the limits specified in a continuity plan for an organization. Different incident response strategies, such as SAN PICERL, Lockheed Cyber Kill Chain, MITRE ATT&CK, etc. will be investigated. The tools, techniques and methodologies for enacting the incident response plan, processes, and procedures will be utilized. Critical documents such as Disaster Recovery Plan, Business Impact Analysis Plan, and Business Continuity Plans will be analyzed, developed and assessed. Prerequisites: COMP4500 (4 credits) summer


Network forensics is the intersection of network and communication principles, security, investigative processes, and the law. This course examines many different types of network protocols and technologies as the foundation of criminal or civil investigations. Critical concepts, such as forensic models, chain of custody, Daubert criteria, and verification and validation, are presented, discussed, and experienced through performing and replicating network forensics investigations. Different acquisition approaches and systems are identified and utilized. Existing and emerging research in the field of network forensics will be introduced as required readings. Prerequisites: COMP3100 or COMP3400 (4 credits)


In-depth project-oriented work in modern web development including page organization, interactive databases, responsive design, security, and client and server side scripting. Students will create robust, effective, and secure web applications. Prerequisite: COMP2650 (4 credits) spring


This course introduces the philosophical foundations of the underlying techniques involved with the design and implementation of intelligent computer systems. Topics include problem-solving via search, knowledge representation, reasoning in deterministic and stochastic tasks, as well as learning. Prerequisites: COMP2000 and COMP2350 and MATH2100 and MATH2860 (4 credits)


This course covers artificial intelligence algorithms that can be ported to embedded systems. The course can be divided into four categories: background materials, embedded systems, artificial intelligence (AI), and the final project. Prerequisites: COMP3125 (4 credits)


This course will expand the fundamental concepts related to parallel and distributed computing. This includes the examination of multicore and manycore architectures, methods for solving real world problems on massively distributed systems and performance analysis of parallel algorithms. Prerequisites: COMP3450 (4 credits) spring


This course provides students with a detailed understanding of the Systems Development Life Cycle (SDLC) and the methodologies to manage computing, networking, and security projects. Prerequisite: COMP2650 (4 credits) spring


This course presents a formal approach to state-of-the-art techniques in software design and development. Students work in teams on an externally collaborative software projects. Prerequisites: COMP2000, COMP2350 and COMP2650 (4 credits) spring


This course provides the opportunity for students to participate in design and implementation of solutions to large project in a team-based environment. Projects will in general be interdisciplinary in nature. Students will be required to provide written documentation and give oral presentations about their projects. The projects will be chosen in conjunction with the instructor for the course. Prerequisites: COMP4950 or COMP4960 (4 credits) summer


This course covers artificial intelligence algorithms that can be ported to embedded systems. The course can be divided into four categories: background materials, embedded systems, artificial intelligence (AI) and a final project. (4 credits)


This course will expand on the fundamental concepts related to parallel and distributed computing. This includes the examination of multicore and manycore architectures, methods for solving real world problems on massively distributed systems and performance analysis of parallel algorithms. (4 credits) spring


This course recaps foundational material covered in typical undergraduate degrees. Topics covered may include computer science theory, computability and complexity, computer organization and architecture, operating systems, and data communications. (3 credits) fall


This course looks at the four main programming paradigms: imperative, functional, logic, and object-oriented. The paradigms are compared and students gain experience with each of them. The second half of the course looks at systems and the various techniques needed. These include parallel and distributed systems, real-time systems, and embedded systems. Prerequisite: COMP7000 (3 credits) fall


This course addresses the breadth of managing software development and is designed to help technically trained software engineers to acquire the knowledge and skills necessary to lead a project team, understand the relationship of software development to overall project engineering, estimate time and costs, and understand the software process. The nature of software development is sufficiently unique to require specialized management techniques, especially in the areas of estimating and scheduling. Prerequisite: COMP7050 (3 credits) spring


Data Science and Web Services are provided through a service-oriented architecture (SOA) applied to data sourced from the internet. Web data services enable maximal mashup, reuse, and sharing of structured data (such as relational tables), semi-structured information (such as XML documents), and unstructured information (such as RSS feeds, content from web applications). Applications that can serve as a consumer or provider of web data services include mobile computing, web portals, enterprise portals, online business software, social media, and social networks. Prerequisite: COMP7050 (3 credits) spring


Mobile application development focuses on the creation of software systems targeting low-power handheld devices such as cell phones. This course examines the client-server model, considers various hardware configurations (e.g., screen size, hardware specifications) and user interface design. Security of mobile applications will be examined as devices such as smartphones become increasingly ubiquitous and owners store ever increasing amounts of personal information on them. Prerequisite: COMP7050 (3 credits) summer


Enterprise computing refers to business oriented information technology that is critical to an organization’s success. This course considers mainframe computing and compares it to distributed and cloud-based computing. It examines the architecture, operating system, application programming environment, networking, security and management of mainframe systems. Prerequisite: COMP7050 (3 credits) summer


Computer Security, also known as cybersecurity, is information security as applied to computers and mobile computational devices such as smartphones, as well as computer networks. The course examines the processes and mechanisms by which computer-based equipment, information and services are protected from unauthorized or unintended access, changes, or distribution, how threats are assessed and attacks are handled, and how analysis is undertaken to determine what information was lost or compromise as an attack took place. Prerequisite: COMP7050 (3 credits) fall


Big Data is an all-encompassing term for any collection of data that is so large and complex that it becomes difficult to process using traditional data processing applications. The challenges include analysis, capture, classification, search, sharing, storage, transfer, visualization and privacy violations. Big Data is of interest to science, government, and the private sector as more and more data is collected daily. This course examines techniques to capture, manage, and manipulate large data sets. Prerequisite: COMP7050 (3 credits)


Data mining is the analysis step in knowledge discovery in databases. It is an interdisciplinary field involving the computational process of discovering patterns in large data sets, and involves methods at the intersection of artificial intelligence, machine learning, statistics, and database systems. The overall goal of data mining is to extract information from large data sets and transform it into an understandable structure for future use. Topics examined in this course include the raw analysis step, addresses database and data management aspects, data preprocessing, model and inference considerations, metrics to determine how “interesting:” a result is, complexity considerations, post processing of discovered structures, visualization, and online updating. Prerequisite: COMP7050 (3 credits)


Software Engineering is the study and application of engineering to the design, development and maintenance of software. Topics covered include requirements engineering, software design, software construction, software testing, software maintenance, software configuration management, software engineering management, software engineering process, software engineering tools and methods and software quality management. Prerequisite: COMP7050 (3 credits)


The capstone experience brings together the material learned earlier in the Master’s programs. Students are guided by a faculty member to build a software system that integrates the knowledge they have learned and the skills developed throughout the program. Where possible, projects will be developed in collaboration with industry partners. Prerequisite: COMP7050 (3 credits) spring


Presents topics that are not covered by existing courses and are likely to change from semester to semester. Refer to the Class Schedule for a specific semester for details of special topics course offerings. (4 credits)