
Computer Vision
Computer vision is a field of artificial intelligence that trains computers to interpret and understand the visual world. Using digital images from cameras and videos and deep learning models, machines can accurately identify and classify objects — and then react to what they “see.”

Software Engineering I
This course comprises of two (2) sequence semesters. The first part of the course covers the fundamental concepts and methodologies of software engineering. It emphasizes the main phases of the software lifecycle, such as requirements, design, implementation, testing, project planning. Also, it stresses the difference between the software product and process. The course incorporates a class project.

Application Development and Emerging Technologies
Technology is rapidly changing and evolving. An IT professional must be able to identify the potential benefits of new technology and determine the feasibility of implementation into a given system. Students will learn to research and apply new and/or innovative technologies which are being integrated into the Information Technology environment. This course will provide students with the opportunity to investigate trends and examine the potential impact of the technology.

Fundamentals of Programming
This course covers the use of general purpose programming language, the C programming language in particular, to solve problems. The emphasis is to train the students to design, implement, test, debug and assess programs intended to solve computing problems using fundamental programming constructs.

CSEC 311 - Defensive Programming
The course provides learning to avoid common security defects, to analyze the relationship between defensive programming and confidentiality, integrity and availability, and to write a secure program. Topics include defensive programming, secure input validation and output handling, buffer overflow attack and prevention, vulnerabilities in mobile programming, access control and confidential information, mobile malware, restriction on access to components, and isolation of file system and database, injection and inclusion, accessibility and extensibility, mutability, and serialization and deserialization.

SOFTWARE ENGINEERING 1
This course comprises of two (2) sequence semesters. The first part of the course covers the fundamental concepts and methodologies of software engineering. It emphasizes the main phases of the software lifecycle, such as requirements, design, implementation, testing, project planning. Also, it stresses the difference between the software product and process. The course incorporates a class project.

Introduction to Computing - CS
This course provides an overview of the Computing Industry and Computing ofprofession, including research and Applications in different fields; an Appreciation Computing in different fields such as Biology, Sociology, Environment and Gaming; an Understanding of ACM Requirements; an Appreciation of the history of computing; and Knowledge of the Key Components of Computer Systems (Organization and Architecture), Malware, Computer Security, Internet and Internet protocols, HTML5 and CSS.

Automata Theory and Formal Languages
The course introduces some fundamental concepts in automata theory and formal languages including grammar, finite automaton, regular expression, formal language, pushdown automaton, and Turing machine. Not only do they form basic models of computation, they are also the foundation of many branches of computer science, e.g. compilers, software engineering, concurrent systems, etc. The properties of these models will be studied and various rigorous techniques for analyzing and comparing them will be discussed, by using both formalism and examples.

Fundamentals of Programming

Architecture and Organization
This course is the introduction and overview of
basic computer organization. Topics include Computer arithmetic: binary,
hexadecimal and decimal number conversions, binary number arithmetic and IEEE
binary floating-point number standard. Basic computer logic: gates,
combinational circuits, sequential circuits, adders, ALU, SRAM and DRAM. Basic
assembly language programming, basic Instruction Set Architecture (ISA), and
the design of single cycle CPU.

Discrete Structures 2
This course is the second sequence of Discrete Structures 1 with an emphasis on applications to computer science concentrating on
number theory, combinatorics, discrete probability, sequence and recursions, and
graph theory. The
topics shall develop mathematical foundations in preparation to more
specialized computer science courses.

Operating Systems
The
course will start with a brief historical perspective of the evolution of
operating systems over the last fifty years and then cover the major components
of most operating systems. This discussion will cover the tradeoffs that can be
made between performance and functionality during the design and implementation
of an operating system. Particular emphasis will be given to three major OS
subsystems: process management (processes, threads, CPU scheduling,
synchronization, and deadlock), memory management (segmentation, paging,
swapping), and file systems; and on operating system support for distributed
systems.

Object Oriented Programming (CS 214)
This course is an introduction to procedural and
object-oriented programming methodology. The course allows the student to learn
and apply the basic language syntax and principles of object-oriented
programming to solve computational problems adhering to the standards and
guidelines of documentation using java programming language. Topics include
program structure, conditional and iterative programming, procedures, arrays
and records, object classes, file I/O, and exceptions. It further discusses the
concepts and characteristics of object-oriented technology (on encapsulation,
inheritance, polymorphism and abstraction).

Data Structure and Algorithms
The course covers the standard data representation and algorithms to solve computing problems efficiently (with respect to space requirements and time complexity of algorithm). This covers the following: Stacks, Queues, Trees, Graphs, Maps and Sets. Thorough discussion of sorting and searching.

Network Security
Students will perform a variety of network support skills necessary to keep a company's network running efficiently - with less downtime. Students will solve advanced company wide support problems and high-level network problems. Additionally, students will perform planning, installation, configuration, troubleshooting and upgrade services for networks.