Course Descriptions
COMPUTER ENGINEERING COURSES
COE 4330 Computer Networks
Three credit-hours. Two two-hour lectures per week.
Co-requisite: CECS 3234 or CECS 4230
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
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
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-requisite: CECS 2202, CECS 2203
Co-requisite: 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-requisite: CECS 2202, CECS 2203
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: CECS 2202, CECS 2203, CS 2302
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, CECS 2203
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, CECS 2223
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, CECS 2223
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, CECS 2223
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 3216 Machine Learning
Three credit-hours. Two two-hour lectures per week.
Pre-requisite: ENGI 2270, CS 3010
Algorithms and Models covered in this course include Linear Regression, Logistic Regression, Support Vector Machines, Gradient Descent, Dimensionality Reduction: Principal Component Analysis, K-means Clustering, Decision Trees, Ensemble Learning, Basic Introduction and Overview of Artificial Neural Networks and Deep Learning including Convolutional Neural Networks and Recurrent Neural Networks. Topics include; Data Collection and Preparation, Problems with Data, Data Imputation, Data Imbalance, Supervised vs. Unsupervised Learning, Training Data, Validation Data, Test Data, Activation Functions, Parameters vs Hyperparameters, Overfitting, Underfitting, Performance Metrics, Confusion Matrix, Learning Curves, Cross Validation, The Bias-Variance Problem, Learning Rate, Transfer Learning, Local Minima vs. Global Minima, Backpropagation, The Vanishing Gradient Problem in Deep Neural Networks, Generalization Ability, Regularization Techniques, Initialization Schemes, Fast Optimizers, and Applications. A project or incremental projects including reports and/or oral presentations are required. The software used is MATLAB, Python, Tensor Flow, Keras and Scikit-Learn.
CECS 3218 Data Engineering for Machine Learning I
Three credit-hours. Two two-hour lectures per week.
Pre-requisite: ENGI 2270, CS 3010
Review of the Machine Learning Process. Covers best practices, classes of techniques and criteria for their selection when performing Data Preparation for Machine Learning (ML). Data Cleaning and feature selection following sound statistical and modeling techniques that avoid data leakage and model distortion. Data transform algorithms most suitable to different variable types and their probability distributions, for single and multiple variables. How to transform prediction targets and integrate these into the final model. Address machine learning computational complexity issues with dimensionality-reduction algorithms.
CECS 3220 Human-Computer Interaction
Three credit-hours. Two two-hour lectures per week.
Pre-requisite: CECS 2222, CECS 2223
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, CECS 2223
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: CS 2302
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, CECS 2223
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.
Co-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 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, CECS 2223
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 2223, 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 4224 Deep Learning
Three credit-hours. Two two-hour lectures per week.
Pre-requisite: ENGI 2270, CS 3010
Machine Learning Overview, The Perceptron, Multi-Layer Neural Networks, Deep Neural Networks, Backpropagation, Transfer Learning, Convolutional Neural Networks, Recurrent Neural Networks, Attention Mechanism, Transformers, Autoencoders, Generative Adversarial Networks, Reinforcement Learning, other ANN architectures such as Boltzman Machines, Self-Organizing Maps, and others. Topics include: Data Collection and Preparation, Problems with Data, Data Imputation, Data Imbalance, Training-Test Data Split, Gradient Descent, Activation Functions, Hyperparameters Selection, Overfitting, Underfitting, Performance Metrics, Confusion Matrix, Learning Curves, Cross Validation, The Bias-Variance Problem, Learning Rate, Local Minima vs. Global Minima, The Vanishing/Exploding Gradient Problem, Generalization Ability, Regularization Techniques, Initialization Schemes, Fast Optimizers, and Deep Learning Applications. A project or incremental projects including reports and/or oral presentations are required. The software used is MATLAB, Python, Tensor Flow, Keras and Scikit-Learn.
CECS 4226 Computer Graphics
Three credit-hours. Two two-hour lectures per week.
Pre-requisite: CECS 2222, CECS 2223
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: CS 3300
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 4232 Data Engineering for Machine Learning II
Three credit-hours. Two two-hour lectures per week.
Pre-requisite: CECS 3218
Covers the processes pipeline for collecting, storing, and analyzing big-data at-scale for Machine Learning from the perspective of the Data Engineering life cycle. Presents a historical summary of the evolution of computing for big-data and machine learning. Reviews enterprise data architectural frameworks. Studies the layered models for cloud computing and hybrid clouds. Discusses and analyzes tradeoffs between the key issues of consistency, scalability, fault tolerance, and complexity. Studies ML design patterns and their adoption in major implementation frameworks. Studies the principal ML model experimentation and deployment platforms. Reviews training, validation and deployment of ML algorithms and re-training actualization. Provides practice in the utilization of some of the leading Cloud-computing platforms for ML. Covers open and standardized cloud computing management and orchestration frameworks for your application infrastructure containers, as in Doker, and Kubernettes. Discusses data governance, security, and ethical issues.
CECS 4236 Software Requirements Engineering
Three credit-hours. Two two-hour lectures per week.
Co-requisite: CECS 4202
Explores the process of requirements, elicitation, generation, modeling, tracing, and utilization in the development of software systems under plan-based and agile software development methodologies.
CECS 4240 Real-Time Operating Systems
Three credit-hours. Two two-hour lectures per week.
Pre-requisite: CECS 3234 or CECS 4230
Real-time operating systems (RTOS) are used primarily in embedded systems. In these systems, the time factor is a priority to ensure that all processes are carried out within established time frames. Examples are industrial control applications, telephone switching equipment, flight control and real-time simulations. The course introduces concepts such as task states and scheduling triggers, process and thread synchronization, and others, all emphasized on the real-time operating system. Simulator will be used to expose students to these concepts
CECS 4248 Software Testing and Verification
Three credit-hours. Two two-hour lectures per week.
Co-requisite: CECS 4202
The course presents the concepts, processes, strategies, methods, and techniques for software verification and validation. It also covers how to write a test plan and test report.
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: CECS 4204, 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: 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
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.