CS Catalog
CS Catalog
General Statement: The Department of Computer Science offers a B.S. degree in Computer Science (CS). The CS
program provides the CS majors with a broad based knowledge in various contemporary computer science fields
such as Programming Languages, Computer Architectures and Operating Systems, Algorithms, Database Systems,
Computer Communications and Networks, Cyber-Security, Artificial Intelligence and Robotics, Computer Vision and
Graphics, Bioinformatics and High-Performance Computing, and Software Engineering. The CS program includes
adequate courses from mathematics, natural sciences, ethics, communications, and other areas of general education
to provide the base knowledge required for understanding computer science topics, for gaining the skills required for
entering in diverse careers in private and public sectors and/or pursuing graduate studies. The CS program also
offers a concentration in Bioinformatics under the B.S. degree.
The mission of the Department of Computer Science, commensurate with the mission of the University and the
College of Engineering, is to provide quality Computer Science education, to pursue theoretical and applied research
in the critical areas of computer science, and to engage in service to its constituents.
The Program Educational Objectives of the Computer Science Undergraduate Program describe the career and
professional accomplishments that the Program is preparing graduates to achieve in three to five years after
graduation. These objectives are:
The Computer Science Program Outcomes require that the graduating students demonstrate the following:
The B.S. degree program in Computer Science is accredited by the Computing Accreditation Commission of the
Accreditation Board for Engineering and Technology (CAC of ABET).
Program Requirements
A minimum of 120 semester credit hours are required for completion of the BS degree in Computer Science. The
distribution of these credits is outlined below.
Communication (9)
1. ENGL 1010 Freshman English I (3)
2. ENGL 1020 Freshman English II (3)
3. COMM 2200 Public Speaking (3)
History (6)
1. HIST 2010 American History I (3)
2. HIST 2020 American History II (3)
HIST 2010 OR HIST 2020 may be replaced by HIST 2030.
Mathematics (18)
1. MATH 1910 Calculus & Analytic Geometry (4)
2. MATH 1920 Calculus II (4)
3. STAT 3110 Probability and Statistics I or equivalent (3)
4. COMP 3200 Discrete Mathematics (4)
5. MATH Elective (3) (must be 2000 or higher level with approval of academic advisor. MATH 2500, 3130, 4500,
4724, 4750, 4900 are not accepted).
Important Rules for Elective Courses: All of the elective courses must be chosen in such a way that the total
credits at the 3000-4000 levels must be at least 42 credits.
SOPHOMORE YEAR
FALL SEMESTER SPRING SEMESTER
(4)
History 3 COMM 2200 3
(5)
COMP 2400 (2)
3 COMP Science Elective 3
Natural Science 4 COMP 3200 4
(3) (4)
Humanities/Fine Arts 3 History (1)
3
COMP 3190 2 Social/Behavioral Sciences 3
__ __
TOTAL 15 16
JUNIOR YEAR
FALL SEMESTER SPRING SEMESTER
COMP 3040 3 COMP 4100 3
COMP 3050 (2)
3 COMP 3310 (3)
3
Natural Science 4 Humanities/Fine Arts 3
(3)
Humanities/Fine Arts 3 COMP 3560 3
COMP 3300 3 STAT 3110 3
__ __
TOTAL 16 15
SENIOR YEAR
FALL SEMESTER SPRING SEMESTER
(6)
MATH Elective 3 COMP 4510 (5)
2
COMP 4500 1 COMP Science Elective 3
(5)
COMP 4700 (5)
3 COMP Science Elective
(7)
3
COMP Science Elective 3 Technical Elective 3
(7) (7)
Technical Elective 3 Technical Elective 3
__ __
TOTAL 13 14
Notes:
(1) Social and Behavioral Sciences Electives must be chosen from the General Education list of Social and
Behavioral Science courses approved by the University.
(2) Natural Science must be chosen from: PHYS 2110&2111 (or PHYS 2010&2011), PHYS 2120&2121 (or PHYS
2020&2021), CHEM 1110&1111, CHEM 1120&1121, BIOL 1110&1111, or BIOL 1120&1121.
(3) Humanities/Fine Arts Electives must be chosen from the General Education list of Humanities and Fine Arts
courses approved by the University. One Humanities/Fine Arts Elective must be chosen from ENGL 2120, 2310,
2012, 2013, 2210, 2320, 2022, or 2023.
(4) History must be from the General Education list of History courses approved by the University. They are currently
HIST 2010 and HIST 2020. HIST 2030 may replace HIST 2010 or HIST 2020.
(5) At least one of COMP 3110 or 31220 or 3130 or 3140 or 3150 must be taken (not more than two of those
courses are allowed). COMP 1210 and COMP 3000 may not be chosen as a Computer Science Elective course.
(6) MATH Elective must be 2000 or higher level with approval of academic advisor. MATH 2500, 3130, 4500, 4724,
4750, 4900 are not accepted.
(7) Technical Electives may be chosen from Computer Science, Engineering, Mathematics, Natural Sciences, and
Business Information Systems.
a. They can be also chosen at any level courses from the departments other than Computer Science
in the College of Engineering, Technology and Computer Science; however, the credit hours
selected from 1000 level should not be more than three (3).
b. They can be any level Natural Science courses.
c. They can be any level Math courses at the 2000 level or above. Math 1115 may also be accepted.
Important: All of the elective courses must be chosen in such a way that the total credits at the 3000-4000 level must
be at least 42 credits.
SOPHOMORE YEAR
FALL SEMESTER SPRING SEMESTER
(4)
History 3 COMM 2200 3
COMP 2400 (2)
3 COMP 3710 3
Natural Science 4 COMP 3200 4
(3) (4)
Humanities/Fine Arts 3 History (1)
3
COMP 3190 2 Social/Behavioral Sciences 3
__ __
TOTAL 15 16
JUNIOR YEAR
FALL SEMESTER SPRING SEMESTER
COMP 3040 3 COMP 4100 3
COMP 3050 3 COMP 3310 (3)
3
BIOL 4110/4111 4 Humanities/Fine Arts 3
(3)
Humanities/Fine Arts 3 COMP 3560 3
COMP 3300 3 COMP 3112/3113 4
__ __
TOTAL 16 16
SENIOR YEAR
FALL SEMESTER SPRING SEMESTER
(6) (8)
MATH Elective
(8)
3 COMP 4510 (5)
2
COMP 4500 1 COMP Science Elective 3
(5)
COMP 4700 3 COMP Science Elective
(7)
3
STAT 3110 3 Technical Elective 3
(7)
COMP 4820 3 Technical Elective 2
__ __
TOTAL 13 13
Notes:
(1) Social and Behavioral Sciences Electives must be chosen from the General Education list of Social and
Behavioral Science courses approved by the University.
(2) Natural Science must be chosen from: PHYS 2110&2111 (or PHYS 2010&2011), PHYS 2120&2121 (or PHYS
2020&2021), CHEM 1110&1111, CHEM 1120&1121, or BIOL 1120&1121.
(3) Humanities/Fine Arts Electives must be chosen from the General Education list of Humanities and Fine Arts
courses approved by the University. One Humanities/Fine Arts Elective must be chosen from ENGL 2120, 2310,
2012, 2013, 2210, 2320, 2022, or 2023.
(4) History must be from the General Education list of History courses approved by the University. They are currently
HIST 2010 and HIST 2020. HIST 2030 may replace HIST 2010 or HIST 2020.
(5) At least one of COMP 3110 or 31220 or 3130 or 3140 or 3150 must be taken (not more than two of those
courses are allowed). COMP 1210 and COMP 3000 may not be chosen as a Computer Science Elective course.
(6) MATH Elective must be 2000 or higher level with approval of academic advisor. MATH 2500, 3130, 4500, 4724,
4750, 4900 are not accepted.
(7) Technical Electives may be chosen from Computer Science, Engineering, Mathematics, Natural Sciences, and
Business Information Systems.
d. They can be also chosen at any level courses from the departments other than Computer Science
in the College of Engineering, Technology and Computer Science; however, the credit hours
selected from 1000 level should not be more than three (3).
e. They can be any level Natural Science courses.
f. They can be any level Math courses at the 2000 level or above. Math 1115 may also be accepted.
(8) Students in Bioinformatics Concentration are required to complete a Bioinformatics related research project for
COMP 4500 Senior Project I and COMP 4510 Senior Project II courses.
Important: All of the elective courses must be chosen in such a way that the total credits at the 3000-4000 level must
be at least 42 credits.
COURSE DESCRIPTIONS
COMP 1210 Introduction to Computing (3). This course is for non-CS majors. The purpose is to introduce students to
computer hardware and use. Topics covered include: Computer hardware, operating systems and some of the
commonly used application software such as a word Processor, an Internet browser, an email manager, a
presentation manager and a spreadsheet processor. Course includes hands-on work with computers. Not open to CS
majors.
COMP 1500 Introduction to Computer Science (1). The purpose is to introduce students to essentials of computer
hardware and software, concept of operating systems and problem modeling and solving. Topics to be offered are
number representations, computer memory and data storage methods, basic digital logic, problem modeling and
solving, introduction to algorithm development, basic programming skills, basics of computer operating systems, and
current issues relating computing to society presented.
COMP 2140 Computer Programming I (4). This course is designed to introduce programming fundamentals. Students
will learn to write programs involving variable storage, formatted input/output, control structures, program repetition,
logical operations, functions, file interaction, elementary data types including array and string, and aggregated data
types defined by struct. Students are required to use computer labs.
COMP 2240 Computer Programming II (4). This course will continue to develop programming skills and focus on
Object Oriented design. Topics include constructors, destructors, operator overloading, inheritance and
polymorphism, exception handling, and multi-dimensional arrays of aggregated data. Students are required to use
computer lab. Prerequisite: COMP 2140 or equivalent.
COMP 2400 Computer Organization (3). This course introduces the structures and working principles of the different
hardware units of a computer. Computer systems organization, the digital logic level (gates and circuits, memory),
micro-architecture level (data path, microinstructions), instruction set architecture level (instruction format,
addressing), basics of assembly language, and parallel computer architectures are discussed. Prerequisites: COMP
1500 or one semester of programming.
COMP 2600 Assembly Language (3). This course introduces low level programming through an assembly
programming language. Topics include: quick review of main memory and CPU, use of memory, data types, data
processing, addressing, compilation and linking processes. Prerequisite: COMP 2400.
COMP 2630 Selected Programming Languages (1-3). The purpose of this course is to teach all components of a
selected programming language. Some of the languages to be offered are Visual Basic, C, Unix shell programming,
Python, and Prolog. Prerequisite: COMP 2140.
COMP 3000 Computer Programming for non-CS majors (3). This course is a computer programming for non-CS
majors. Topics covered include: Introduction to computer hardware, problem solving and algorithm development, and
implementation of algorithms using an object oriented programming language. Schedule will include two (2) lecture
hours and one (1) lab hour.
COMP 3030 Windows Programming (3). This course introduces basics of windows programming, web programming
and data driven programming using an event driven paradigm. Topics discussed include: language facilities for event
driven programming, .NET frame class hierarchy, delegate, events and event handling, graphic user interface,
graphics device context, I/O with files and database and web applications. Prerequisite: COMP 2240 or equivalent.
COMP 3040 Data Structures (3). This course introduces elementary and abstract data structures. Topics discussed
are: array and linked list, hash table, binary tree, heap, stack, FIFO queue, dynamic dictionary, priority queues, graph,
and some sorting and searching algorithms and their implementations. Prerequisite: COMP 2240.
COMP 3050 Programming Languages (3). This course exposes students to various programming languages, their
structures and characteristics. The course provides an overview of key concepts used in developing modern
programming languages. Programming language principles and paradigms will be introduced by highlighting several
programming languages (such as Lisp/Prolog, Python, and Java) so that students will be able to choose an
appropriate programming language to solve a particular problem. The course will increase the capacity to use
existing languages and learn new languages. Prerequisite: COMP 2240 or equivalent.
COMP 3110 Java Programming (3). Object-oriented programming concepts including classes, interfaces, inheritance,
and polymorphism are emphasized using Java programming language. An overview of more advanced programming
concepts including database connectivity, multi-threading, and networking is given. Students are expected to work in
teams to design and implement a software system as a semester project. Prerequisite: COMP 2140 or equivalent or
approval of the instructor.
COMP 3120 C++ Programming (3) This course will provide a broad introduction to C++ programming language and
focus on object oriented design. It will start the syntax of C++ for elementary language structures and data types
such as operators, conditions, loops, strings and array. The main topics include pointers, destructors, operator over-
loading, inheritance and polymorphism, exception handling, multi-dimensional arrays and dynamic memory allocation.
Students are required to use computer lab. Prerequisite: COMP 2140 or equivalent.
COMP 3130 C Programming (3). This course provides a broad introduction to the C programming language. The
course aims to teach the syntax and use of major constructs of the C language and will focus on problem solving and
algorithm implementation using a universal subset of the C programming language. Some of these constructs include:
conditional statements, loops, functions, operators, unions, arrays, pointers, strings, structures, and file I/O, problem-
solving and algorithm design. Students are expected to learn how to program through hands-on exercises and
project. Prerequisite: Comp 2140 or Equivalent.
COMP 3140 Python Programming (3) This course will introduce the fundamental techniques of programming using
Python. Topics covered include the basics and syntax of the language, introduction to object-oriented programming,
and data and information processing. The course aims at expose the students to algorithmic and procedural problem
solving using Python. This course is intended for persons with a prior background in any programming language.
Prerequisite: COMP 2140 or equivalent.
COMP 3150 COBOL Programming (3). This course provides a broad introduction to the programming concepts and
to the widely used business language, Common Business-Oriented Language (COBOL). The course aims to teach
the syntax and use of major constructs of the COBOL language and will focus on problem solving and algorithm
implementation using a universal subset of the COBOL Programming Language. Prerequisite: Comp 2140 or
Equivalent.
COMP 3112/3113 Introduction to Bioinformatics (4). B-ioinformatics is an interdisciplinary field in which biology and
computer science merge. This course is designed to introduce students with basic concepts, methods and tools to
analyze biological problems, prepare students with skills necessary to communicate across the fields of computer
science and biology. Topics include (but not limited to) biological sequence and literature databases, strategies to
search these databases to solve significant biological problems, principle and algorithms used in analysis of
sequence problems. Prerequisite: BIOL 1110/1111 and COMP 2140.
COMP 3170 Applied Operating Systems (1-3). This course is designed for presenting advanced features of some
commonly used operating systems and their uses. It can be taken more than one time, provided each time a different
operating system is taught. Examples of operating systems to be offered are Mac OS, LINUX, and Solaris.
Prerequisite: COMP 2400.
COMP 3185/86/87/88 Cooperative Education (3). This course is to provide students with the opportunity applying the
knowledge, skills and abilities gained in classrooms and labs in Computer Science into real-world work. Students
undertake learning projects in governmental, business, industry, or university settings. Formal proposals, project
objectives, and learning plans must be reviewed and approved by faculty advisor. Student activities and progress are
monitored, evaluated and graded by an assigned faculty. Prerequisite: Approved by the Department Chair.
COMP 3190 Ethics and Professionalism in Computing (2). This course presents the important topics of
communications and ethics for computer professionals. Topics discussed include: Introduction and definitions, ethics
for computing professionals and computer users, computer and Internet crime, privacy, freedom of expression,
intellectual property, security, and the Software Engineering Code of Ethics and Professional Practice.
COMP 3200 Discrete Mathematics (4). This course presents discrete mathematical structures needed for computer
science. Topics include: logic and methods of proof, structures of sets and functions, fundamentals of algorithms,
relations, permutations and combinations, discrete probability, graphs and trees and their applications, introduction to
mathematical structures such as modular arithmetic, groups, ring, and field. Prerequisite: Math 1910 or COMP 2140
or equivalent.
COMP 3230 Information Systems Analysis (3). This course provides a comprehensive discussion of analysis and
design of information systems. It discusses information systems from multiple perspectives including system
specifications, logical and physical design, database selection, integration, performance, prototyping, and
deployment. Prerequisite: COMP 2240.
COMP 3300 Software Engineering (3). A practical understanding of all phases of software development including
system design and analysis is provided. The software life cycle including software specification, design,
implementation, verification, and evolution is investigated in detail. Students are expected to work in teams to design,
analyze, and partially implement a large-scale software system as semester project. Prerequisite: COMP 2240 or
equivalent.
COMP 3310 Data Communications and Computer Networks (3). This course presents basic concepts of data
communications and computer networks. Topics include: Definitions, signals, encoding and modulation, analog and
digital data transmission and transmission media, error detection and control, types of networks, structure of an open
network model, data link and data link protocols, Internet protocol, routing and routing algorithms, and security issues.
Prerequisite: COMP 2400.
COMP 3410 Advanced Computer Organization (3). This course focuses on advanced computer organization and
architecture. Topics include RISC and CISC architectures, 1-bus and multi-bus processor design, pipelining,
microprogramming, memory system, and performance measures. Students will work in teams on design projects.
Prerequisite: COMP 2400.
COMP 3500 Digital Logic Design (3). A comprehensive introduction to the digital logic design theory, techniques,
simulations, and practical applications. The course covers combinational and sequential logic networks, network
reduction, adders, multipliers, decoders, multiplexers, shifters, counters, latches and flip-flops, finite-state machines,
and arithmetic logic units. Students are expected to work in laboratory in teams to design and implement some logic
networks. Prerequisite: COMP 2400 or equivalent.
COMP 3560 Introduction to Theory of Computing (3). This course presents various models of computation and the
relationships between these models and various classes of languages. Topics include: finite automata, regular
languages, context-free languages, Turing machines, complexity and limits of algorithmic computation, new
computation paradigms. These topics are used as a basis for exploring computability, complexity, and more
advanced areas of theory. Prerequisite: COMP 3200.
COMP 3650 Microprocessors (3). This course presents the architecture and instruction sets of different
microprocessors and microcontrollers, and the application system design based on these processors. The contents
contain the architecture and memory interfacing, interfacing I/O devices, instruction sets, addressing modes,
assembly language programming, interrupts, timing diagram, microprocessor application, for microprocessors,
microcontrollers, and general purpose processors. Prerequisites: COMP 2400.
COMP 3710 Relational Databases (3). This course presents basic principles of relational databases and a relational
database management system. Topics include basic definitions of database systems, relations and their operations,
design of and implementation of a relational database, creating queries and the SQL (structured Query Language).
Prerequisite: COMP 2140.
COMP 3900 Numerical Analysis (3). This course is for programming some scientific problems including solutions of
non-linear equation and simultaneous linear equations, matrix related computations, numerical differentiation and
integration, interpolation and approximation. Prerequisites: MATH 3610 or equivalent.
COMP 4100 Operating Systems (3). This course presents both theory and practical lab exercises of operating
systems. The course will start with a brief historical perspective of the evolution of operating systems over last five
decades and then cove the major components of the most operating systems. Particular emphasis will be given to
five core components of OS: process management, memory management, inter-process communication, file
systems, and I/O manager. The lab exercises are based on Linux and Mac OS. Prerequisites: COMP 2400.
COMP 4200 Compiler Construction (3). This course is for teaching fundamentals of developing compilers for
programming languages. Topics include: lexical analysis, parsing, semantic analysis and code generation.
Prerequisites: COMP 3560.
COMP 4280 Web-based Application Development (3). This course is an introduction to current Web technologies.
Contents include basic XHTML, CSSs, Client-Side programming, and advanced ASP.NET, Students are required to
implement several Web-based projects. It also provides a practical training to senior undergraduate to enhance their
programming skills and information processing skills. Prerequisite: COMP 2240.
COMP 4400 Artificial Intelligence (3). This course is a study to the design of computer systems that exhibit traits
normally associated with intelligence in human behavior, such as the ability to understand natural language, to reason
about the visual environment, and to solve complex problems. Topics includes knowledge representation formalisms
and search techniques, natural language processing, logic and theorem proving, expert systems, planning, vision,
machine learning, neural networks, and genetic algorithms. Prerequisite: COMP 3040.
COMP 4440 Mobile Robotics (3). This course provides students with hands-on experience in mobile robot design,
implementation, and testing. It covers mobile robot topics such as robot hardware, robot sensing, actuation,
embedded system programming, and algorithms for localization, path planning, and mapping. It briefly covers multi-
robot systems. Students are expected to work in laboratory in teams to build and test increasingly complex LEGO-
based mobile robots and compete in an end-of-semester robot contest. Prerequisite: COMP 2140 or equivalent.
COMP 4450 Computer Network Architecture (3). This course presents basic concepts of computer network
architectures and devices. Topics include: Network layers and services types, circuit switching, bridges, routers,
control signaling, traffic control, architectures of LANs, MANs, WANs, digital network and wireless and mobile
networks. Prerequisite: COMP 3310.
COMP 4500 Senior Project I (1). An opportunity for students to integrate the theory, knowledge, design and analysis
ability, and programming skills gained in previous computer science work into a team-based project carried out under
the supervision of a member of the Computer Science faculty. Senior project I leads to the completion of the project in
COMP-4510. Students are required to develop a written technical partial report as well as an oral status report.
Prerequisite: Graduating Senior.
COMP 4510 Senior Project II (2). Continuation of senior project I leading to completion of the project. Students are
required to develop a written technical report and have an oral defense of the project. Prerequisite: COMP 4500.
COMP 4550 Computer Network Protocols (3). This course presents concepts of computer network protocols. Topics
include: Basic flow control, MAC, routing protocols, transport, contention, redundancy checks, encryption and
decryption, Ethernet and Internet protocols, protocols of wireless and mobile networks. Prerequisites: COMP 4450
COMP 4600 Game Programming (3). This course introduces the basic concepts of computer gaming and problem-
solving in the context of computer games. The concepts and techniques that students will learn are also core
concepts in computer programming and basic problem solving strategies. These concepts and strategies are not
limited to game programming, but also applicable to other applications. The students will implement their game
projects on various environments such as Windows PC and the state-of-the-art mobile devices. Prerequisite: COMP
2240.
COMP 4610 Object Oriented and Hybrid Database Systems (3). This course presents Object Oriented and hybrid
database concepts. Topics include: definitions of objects and attributes, methods and messages, classes, object-
oriented data models, architectural issues, the object-oriented database system manifesto, object-oriented database
design, object-oriented database management systems, and object/relational database management systems.
Prerequisite: COMP 3710.
COMP 4700 Algorithms (3). This course is to teach the principle of design, analysis, and implementation of
algorithms. Topics include: algorithm complexity, mathematical tool for analyzing algorithm complexity, algorithm
design techniques, such as divide-and-conquer, dynamic programming, and heuristics, fundamental algorithms, such
as sorting, searching, and pattern matching, selected advanced data structures and algorithms. Prerequisites: COMP
3040 & COMP 3200.
COMP 4720 Cryptography and Computer Security (3). This course provides an introduction to modern cryptography
and its applications in computer and network security. Topics includes mathematics in cryptography, attack and
threaten models and security goals, traditional cryptography, modern cryptography, design of private and public key
encryption schemes, digital signatures, authentication and key management, and selected applications. Prerequisite:
COMP 3200 or equivalent.
COMP 4750 Computer Network Management (3). This course presents basic concepts of computer network
management and tools. Topics include: Network interfacing, measuring failures and availability, reliability, security,
maintenance, network statistics, reconfiguration and documentation. Prerequisites: COMP 3310.
COMP 4800 Computer Graphics (3). This course presents basics, including mathematical topics used in writing
graphics software. Topics include: Introduction, passive and interactive computer graphics, hardware, user languages
and output devices, transformations, algorithms, object modeling, storage and manipulations and image processing.
Prerequisite: COMP 2240.
COMP 4820 Introduction to Bioinformatics Computing (3). This course presents fundamental theory and practical
skills for biological information processing. Topics include bioinformatics-oriented programming, data base, data
structures, algorithms, visualization tools, hands-on training. Prerequisite: COMP 3112/3113 or BIOL 4112/4113.
COMP 4910 Special Topics (1-3). This course is for teaching important emerging computer science topics that are
not covered in other CS courses. Prerequisites: junior or senior status and successful completion of at least 18 hours
of CS courses.