Computer Science

The field of computer science is one of the most popular academic disciplines within our information society. Computer Scientists build computer-aided design tools, manage information technology enterprises, develop business information systems for various industries, including finance and healthcare, support wide-area, local, and cellular networks, and design embedded computer-controlled products. The computer science program is a flexible program that can be tailored to the student’s interests and adjusted to the rapid changes in the industry.

Sign up for more info!

Take the next step!

Apply Today! Visit Department

Description

The field of computer science is one of the most popular academic disciplines within our information society. Computer Scientists build computer-aided design tools, manage information technology enterprises, develop business information systems for various industries, including finance and healthcare, support wide-area, local, and cellular networks, and design embedded computer-controlled products.

The computer science program is a flexible program that can be tailored to the student’s interests and adjusted to the rapid changes in the industry. The computer science curriculum was designed to satisfy the following criteria:

  • University general education requirements
  • A common core of computer science courses to ensure a good level of understanding of computer science
  • A breadth requirement to provide the students with a broad knowledge of the computer science field
  • A depth requirement to ensure that the students have substantial competence in a concentration area
  • A senior project experience under the supervision of a faculty member
  • Elective courses to permit further breadth/depth customization of the student’s program

Mission

To prepare students with a holistic formation in mathematics, science, computation fundamentals, computers, ethical and legal aspects of computing, languages, design and analysis of algorithms, interface design, database systems and software engineering, capable of joining the workforce as computer scientists and/or pursuing graduate studies.

Program Educational Objectives

Within a few years of graduation, graduates from the Computer Science Program will be able to:

 

1. Participate as key team members in the creation of robust and usable solutions to complex computing problems in any domain.

2. Participate as computer science professionals in leadership positions using appropriate communication skills, contextual awareness and ethical standards.

3. Perform as entrepreneurs, computer consultants, or providers of computing services and solutions.

4. Stay at the forefront of technological change and innovation by pursuing graduate studies, participating in professional organizations, and/or engaging in self-learning.

Degree Offered

Bachelor of Science in Computer Science (BSCS) degree

Student Outcomes

Graduates of the program will have an ability to:

1. Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions.

2. Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline.

3. Communicate effectively in a variety of professional contexts.

4. Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles.

5. Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline.

6. Apply computer science theory and software development fundamentals to produce computing-based solutions.

Enrollment

ACADEMIC YEAR ENROLLMENT
2013-2014 53
2014-2015 58
2015-2016 81
2016-2017 100
2017-2018 138
2018-2019 140

Graduation Data

ACADEMIC YEAR DEGREES AWARDED
2013-2014 1
2014-2015 7
2015-2016 12
2016-2017 13
2017-2018 12

 

Graduation Requirements

Bachelor of Science in Computer Science (BSCS) degree MINIMUM GRADUATION REQUIREMENTS
  • 14 Credit-hours in Mathematics
  • 14 Credit-hours in Basic Sciences
  • 18 Credit-hours in Socio-Humanistic Studies & Languages
  • 3 Credit-hours in Engineering Sciences
  • 58 Credit-hours in Basic Computer Sciences
  • 6 Credit-hours in Computer Sciences Technical Electives
  • 3 Credit-hours in Management Courses
  • 6 Credit-hours in Free Electives

122 Total Credit-Hours

COMPUTER ENGINEERING COURSES

 

COE 4330 Computer Networks

Three credit-hours. Two two-hour lectures per week.

Co-requisite: CECS 4230, COE 4331

Using the public Internet as the model, a top-down approach to the data transport conventions from the Application to the Link layer are analyzed, relying on the protocols published by the IETF and IEEE. The course opens with a concise history of the Internet, followed by an introduction to the organizations involved in Internet governance. The socket concept is examined along with the most important Application, Transport, Network, Link layer open protocols. Routing algorithms, IP addressing, and NAT schemes are discussed. The course closes with the discussion of protocols for multimedia networking, network security, and network management. A team design project is required.

 

COE 4331 Computer Networks Laboratory

One credit-hour. One four-hour or two two-hour lectures per week.

Co-requisite: CECS 4230, COE 4330

The laboratory exemplifies the techniques and devices that implement the solutions to communication problems discussed in class. Covers structured wiring schemes and their combination with wireless access schemes. Configures communication protocol stacks within various operating systems. Simulation and analysis of techniques that solve important communication problems. Covers various communication applications and issues of security and reliability related to different network topologies and configurations.

 

 

COMPUTER ENGINEERING AND COMPUTER SCIENCE COURSES

 

CECS 2004 Discrete Structures

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: MATH 1330 or Equivalent

Co-requisite: MATH 1340

Fundamental mathematical concepts related to computer science, including finite and finite sets, relations, functions, and prepositional logic. Introduction to other proofing techniques. Modeling and solving problems in computer science. Introduction to permutations, combination graphs, and trees with applications.

 

CECS 2200 Computer Programming Fundamentals

One credit-hour. One four-hour or two two-hour lectures per week.

Pre-requisite: MATH 0110 or Equivalent

Introductory laboratory teaching the concept of an algorithm as a systematic solution to a problem. Students learn to represent algorithms using flowcharts and pseudocode. Fundamental constructs of structured programming languages such as variables, operators, selection, and repetition statements are then used to capture these algorithms for automated execution in a computer. Students learn to use a development environment and a high level language such as C++.

 

CECS 2202 Computer Programming I

Four credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 2200

Co-requisite: CECS 2203

The course is a follow-up to the CECS 2200 course and continues with the development of algorithms and programming skills using C++. It emphasizes modular program design using functions, arrays, and pointers. The course introduces fundamental object-oriented concepts such as class, object, instance variables, instance methods, and constructors and destructors.

 

CECS 2203 Computer Programming I Laboratory

Zero credit-hour. One four-hour or two two-hour lectures per week.

Pre-requisite: CECS 2200

Co-requisite: CECS 2202

This course is the laboratory companion to the Computer Programming I course (CECS2202). It uses two different pedagogic strategies to assure that student carry out their lab projects successfully. The students complete a set of mini-projects in a closed laboratory setting. Each set of mini-projects provides them with the practical skills required to tackle a major project as a take home open-lab assignment. All projects are carried out using an Integrated Development Environment for the C++ language.

 

CECS 2222 Computer Programming II

Four credit-hours. Two two-hour lectures per week.

Pre-requisites: CECS 2202

Co-requisites: CECS 2223

This course continues the development of the students’ skills in algorithm programming using the object oriented paradigm. It emphasizes dynamic memory allocation, composition, inheritance, templates, exception handling, and file processing.

 

CECS 2223 Computer Programming II Laboratory

Zero credit-hour. One four-hour or two two-hour lectures per week.

Pre-requisites: CECS 2202

Co-requisites: CECS 2222

This course is the laboratory companion to the Computer Programming II course (CECS 2222). The students complete a set of mini-projects in a closed laboratory setting. Each set of mini-projects provides them with the practical skills required to tackle a major project as a take home open-lab assignment. All projects are carried out using an Integrated Development Environment for the C++ language.

 

CECS 3200 Assembly Language Programming

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: COE 2300 or CS 2302 for CS Majors

This course introduces students to the fundamental principles of machine language. Basic concepts such as number or data representation (binary, hexadecimal and others), branching and looping, memory organization, operands, instruction cycle, addressing modes, exception handling, etc. are introduced.

 

CECS 3202 Visual-Oriented Programming

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 2202

This course is an introduction to Visual Basic. Course covers the fundamentals of visual programming in Visual Basic. Topics discussed cover: variables and operators, using decision structures, loops and timers, strings, modules, procedures, arrays, and graphical user interfaces.

 

CECS 3210 Advanced Programming

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 2222

This course aims to advance your basic programming skills, with special attention to user interface design, problem solving, and coding style in an object-oriented event-driven language, such as C#. Topics include: objects, classes and events, GUI design, and multithreading. Optional topics are: graphics and databases.

 

CECS 3212 Data Structures

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 2004, CECS 2222

The course covers fundamental data structures, the tradeoffs these imply for various sorting and searching algorithms, and their application using C++ or similar high-level language. The course emphasizes recursion, and the use of pointers, lists, stacks, queues, tables, and trees. The computational performance of searching and sorting techniques using big-O notation are also discussed. Several programs are assigned.

 

CECS 3214 Internet Programming I

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 2222

Covers the fundamental concepts guiding the emergence of the Internet and WWW. Focuses on technologies used at the browser’s side. Includes, XHTML, advanced elements such as tables, forms and frames, use of JavaScript for DOM manipulation. Emphasizes efficiency and scalability in the creation and maintenance of websites, including style sheets (CSS) and separation of content from presentation. An introduction to XML and related standards is included.

 

CECS 3220 Human-Computer Interaction

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 2222

The course explores user-centered design approaches in information system applications. Addresses the user interface and software design strategies, user experience levels, interaction styles, usability engineering and collaborative systems technology.

 

CECS 3234 UNIX Operating System

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 2222

Concepts of the UNIX operating system are presented. The course will also provide a deep and thorough knowledge of UNIX and its utilities. Topics include system commands, system editors, awk, sed, text formatting, and shell programming. The use of modem and terminal software and system maintenance utilities are covered as well as system call in C, lex, yacc, ar, and make.

 

CECS 3302 Data Communications

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: COE 2300 or CS 2302 for CS Majors

This course is concerned with the exchange of data between directly connected devices. The key aspects of transmission, interfacing, link control, and error-free data transfers are examined. The physical and data link layers are discussed for a variety of LAN and WAN technologies. Design projects are required.

 

CECS 4200 Programming Languages

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 3212

The course covers general concepts and constructs of several major programming paradigms. The design issues involved in the various language constructs are discussed and how these choices lead to different languages. Imperative, declarative, logic, functional, and object-oriented programming paradigms are illustrated in languages such as Pascal, Prolog, Lisp and C++. Methods used for describing the semantics and syntaxes of programming languages are introduced, such as: EBNF, syntax graphs, attribute grammars, operational, and denotation semantics.

 

CECS 4202 Database Systems

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 2004, CECS 2222

This course is an introduction to the database concept. The course covers data models, relational database concepts, hierarchies, relational algebra and SQL, storage structures, and the role of databases and computers in application environments. Various programming assignments in SQL and a design project are required.

 

CECS 4204 Software Engineering

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 4202

The course presents the different phases for the development of software: project planning, object-oriented analysis, design, coding, and testing techniques using the Unified Modeling Language (UML). In addition, some tools to support the development to complete the activities necessary to develop software. Students are required to use what is presented to develop an application (the implementation is optional).

 

CECS 4206 Design and Analysis of Algorithms

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 3212

This course covers issues that arise in the analysis and design of algorithms used for solving computational problems. A number of common algorithm design paradigms and examples are presented and explained. Algorithm design issues are contemplated. Computability and computational tractability concepts are introduced. Examples of computational problems with no algorithmic solution are analyzed. The importance of time and space requirements are greatly considered as the student designs algorithms to solve computational problems.

 

CECS 4208 Computer Forensics

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 3212

The computer forensics course teaches students the basics of how a computer forensic case is carried out. The course covers the basic elements of criminology, legal theory as it applies to computer forensics, as well as the investigative process. The course teaches the necessary technical theory and practical aspects of forensic investigations. It emphasizes proper collection of evidence, proper documentation handling and information disposal procedures.

 

CECS 4210 Ethical Hacking

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 3212

This course covers the basic skill set in the area of ethical hacking. The course explains how to analyze exploits by examining and coding them, while discussing how to protect the computing infrastructure from those same attacks. It will also examine how the process of ethical hacking is carried out in a business environment.

 

CECS 4212 Artificial Intelligence (AI)

Three credit-hours. Two two-hour lectures per week.

Prerequisite: ENGI 2270, CECS 3212

The course surveys the major topics in Artificial Intelligence (AI). It begins with an overview of what constitutes AI and an introduction to intelligent agents. This is followed by a series of traditional AI topics such as logic, knowledge representation, reasoning, planning, inference using predicate calculus, heuristic and adversary search, genetic algorithms and machine learning. Other units follow on natural language processing and speech recognition.

 

CECS 4214 Network Security

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 3212

This course covers current network technologies and the methodologies used to secure them. The course provides a hands-on approach where the student will learn the theory as well as the implementation of network security technologies in a controlled environment. The course includes a “Capture the flag” simulation where students are expected to protect the infrastructure from real attacks on an isolated network.

 

CECS 4216 Reverse Engineering

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 3212

The subject of reverse software engineering is the process of analyzing binary code to create a higher-level representation of the program being examined. This is accomplished by applying reversing techniques to obtain the assembly code from the binary executable and then obtain the C/C++ structure from the recovered assembly code. The course will study the ways in which protection mechanisms have been circumvented in the past through reverse engineering and the current methods employed to protect programs from reverse engineering. The course also emphasizes the methods by which IT personnel and programmers can protect software applications from circumvention by an attacker, thereby protecting the IT infrastructure.

 

CECS 4218 Introduction to Game Design

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 2200

This course is an introduction to the process of game design prior to game development, including the development of an idea and the production of a game design document. Topics include game elements, player motivation, game dynamics, game culture, game design team roles and game design process workflow.

 

CECS 4220 E-Commerce

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 2222

This course will study the structure, organization, and use of the Internet. Internet technologies and their potential applications are examined including electronic commerce, database connectivity, and security. An emphasis will be placed on evaluating, organizing, and developing efficient models of electronic transactions and Web Information Systems.

 

CECS 4222 Game Programming Fundamentals

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 2222, CECS 4218

In-depth coverage of the object-oriented architectures and software design patterns used for game design. Students work with a game engine software framework to design and implement several kinds of games. Additional topics include animation techniques, physics simulation, user controls, graphical methods, and intelligent behaviors.

 

CECS 4226 Computer Graphics

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 2222

The course covers the representation and manipulation of two and three-dimensional transformations, projection, illumination and shading models. The course will focus on algorithms and techniques that have emerged in the past several years. Topics include basic modeling and rendering methods; volumes and scientific visualization techniques, visual programming languages and environments, and computer animation. Also presents computer graphics as an aid in the presentation and analysis of information.

CECS 4228 Computational Theory

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 3212

Introduces basic concepts in computation and computability theory. The course covers formal languages, models of computation and computational complexity. Major topics include regular languages, context-free languages, decidability, reducibility, time complexity and space complexity.

 

CECS 4230 Operating Systems

Three credit-hours. Two two-hour lectures per week.

Co-requisites: COE 4320 or CS 3300 for CS Majors

Operating systems are the programs that manage the computer hardware resources, and augment or enhance their basic functionality on behalf of the application programs that use the computer. The course discusses various aspects of computer operating systems including processes, process scheduling, memory management, concurrent programming, deadlocks, and others.

 

CECS 4234 UNIX Administration

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 3234

This course consists of an overview of the UNIX operating system and focuses on the Administrative tasks related to maintaining an UNIX based system, interconnecting UNIX with other operating systems and securing UNIX in a networked environment. A basic knowledge of the UNIX operating is required as well as general knowledge about computer systems. During the course the students will participate in several workshops ranging from the initial installation of an operating system to the final configuration and implementation.

 

CECS 4256 Internet Programming II

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 3214, CECS 4202

Focuses on technologies used at the Server’s side for developing web applications. Includes XML, DTD’s, XML Schemas, XSL, XSLT, and various markup languages based on these. Covers the configuration, management and development environments around major Web servers. Tools and patterns for application of various frameworks are covered including Java Servlets, JSP, ASP, ASPX and others. An introduction and overview of advanced techniques such as Web Services, JINI, and Java Spaces is carried out when possible.

 

CECS 4911 Computer Engineering Seminar I

One credit-hour.

Pre-requisite: Departmental Permit.

Topics are limited to those which are not part of content of regular courses offered by the department. Credit-hours earned can fulfill the graduation requirements in Computer Engineering and Computer Science. It will also serve to stimulate further advanced studies.

 

CECS 4912 Computer Engineering Seminar II

Two credit-hours.

Pre-requisite: Departmental Permit.

Topics are limited to those which are not part of content of regular courses offered by the department. Credit-hours earned can fulfill the graduation requirements in Computer Engineering and Computer Science. It will also serve to stimulate further advanced studies.

 

 

COMPUTER SCIENCE COURSES

 

CS 2302 Digital Logic for Computer Science Majors

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 2200

The course covers the following topics: digital and analog systems, binary systems, digital systems, structure and behavior, design levels, combinational and sequential systems.

 

CS 3010 Numerical Analysis for Computer Science Majors

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 2202, MATH 1360

Co-requisite: SCIE 1440

This course gives students the ability to apply solutions for approximations and errors, numerical solutions of linear and non-linear algebraic equations, ODE, PDE, numerical solutions of scientific problems, curve-fitting.

 

CS 3300 Computer Architecture for Computer Science Majors

Three credit-hours. Two two-hour lectures per week.

Pre-requisite: CECS 3200

Instruction set architecture, functional organization, and implementation of a computer are studied from the performance point of view, to provide the students with the principles and techniques used in the design of modern computer systems.

 

CS 4002 Computer Science Project I

Three credit-hours. Two two-hour meetings per week.

Pre-requisite: All Computer Science core courses before 3rd year. Senior standing. Departmental permit.

First part of a two-term course on projects based on open-ended requirements. Projects will be selected in accordance with the student’s area of interest. Students must approve both Computer Science Project Courses in sequence and without interruptions. Students that approve the first course and miss the second course will be required to repeat the first course again.

 

CS 4022 Computer Science Project II

Three credit-hours. Two two-hour meetings per week.

Pre-requisite: CS 4002

Second part of a two-term course on projects based on open-ended requirements. Projects will be selected in accordance with the student’s area of interest. Students must approve both Computer Science Project Courses in sequence and without interruptions. Students that approve the first course and miss the second course will be required to repeat the first course again.

 

CS 4902 Undergraduate Research in Computer Science

Three credit-hours.

Pre-requisite: Third-year Computer Science student with 3.00 or higher GPA. Departmental Permit.

Research study in advanced topics in areas of computer science like artificial intelligence, databases, knowledge discovery, data warehousing, computer security, distributed systems, and parallel computation, among others. The research can be conducted in two ways: a research paper or the implementation of a project. Each project will be evaluated observing the use of the recommended guidelines required to develop the project.

 

CS 4904 Undergraduate Research in Computer Science II

Three credit-hours.

Pre-requisite: CS 4902. Departmental Permit.

Extension of research study in advanced topics in areas of computer science like artificial intelligence, databases, knowledge discovery, data warehousing, computer security, distributed systems, and parallel computation, among others. The research can be conducted in two ways: a research paper or the implementation of a project. Each project will be evaluated observing the use of the recommended guidelines required to develop the project.

 

CS 4990 Special Topics in Computer Science

Three credit-hours. One four-hour or two two-hour lectures per week.

Pre-requisite: Departmental permit according to topics to be addressed.

Advanced topics (3rd and 4th year level) in areas of current research in computer science. Many include topics in data mining, e-commerce, evolutionary algorithms, and data warehousing, distributed computing, computer security, human computer interaction, e-learning, knowledge.

ities such as current, voltage, energy, and power. Study of the ideal behavior of resistors, inductors, and capacitors as well as various independent and dependent ideal energy sources. Introduction to basic techniques of electrical circuit analysis.