CS 110 Computer Programming (2-3-3) | Prerequisite: None |
This course covers the fundamentals of the C++ programming language such as data types, input/output, control structures, one and two-dimensional arrays, strings, and functions. Emphasis will be on scientific and engineering problems solving techniques using C++ programming language that employs a problem solving methodology to consider a diverse range of scientific and engineering challenging issues, reusable computer solutions and structured programming operations, such as sequencing, selection and iteration. Lab work (Closed Lab) Programming assignments to exercise the use of the various features of C++. This may include the implementation of basic programming constructs: decision, loops, program controls, etc. |
CS 120 Programming I (2-3-3) | Prerequisite: None |
Overview of computers and computing. Introduction to a typical programming language, such as Java Basic data types and operators. Basic object-oriented concepts. Console input/output. Logical expressions and control structures. Arrays and strings. Lab work(Closed Lab) Programming assignments to exercise the use of the various features of the object oriented programming taught in the course. |
CS 230 Digital Logic Design (3-3-4) | Prerequisite: SCI 153 |
Introduction to Computer Engineering. Binary number system. Digital circuits. Boolean algebra and switching theory. Manipulation and minimization of Boolean functions. Combinational circuit analysis and design, multiplexers, decoders, adders. Sequential circuit analysis and design, basic flip-flops, clocking, and edge-triggering, registers, counters, timing sequences, state assignment and reduction techniques. Lab work (Closed Lab) Laboratory experiments aim to provide the students with hands-on experience in digital logic. Use of simulators and digital trainer boards for the design, simulation, and implementation of digital logic, combinational and sequential digital systems. |
| |
CS 231 Programming II (3-3-4) | Prerequisite: CS 120 |
Advanced programming concepts. Simple graphical user interfaces. Basic data structures. File I/O. Searching and sorting techniques. Survey of computer science areas. Case studies and practice in developing small scale programs. Lab work (Closed Lab) Programming assignments to practice different problem solving strategies, with emphasis on sound object-oriented basis. File I/O Operations. Solving basic problems using static and dynamic data structures. Solving various searching and sorting algorithms using iterative approach. |
| |
CS 241 Data Structures (3-3-4) | Prerequisite: CS 231 |
Analysis of basic data structures. Specification and design of advanced abstract data types (ADTs) and garbage collection. Secondary storage structures and file processing. Introduction to design patterns. Case studies and practice in developing medium scale programs. Software development using inheritance, frameworks and component architectures. Lab work (Closed Lab) Programming assignments and projects for software applications that make use of the data structures introduced in class. Emphasis on design and implementation of object-oriented abstract data types. Stress on software development of medium scale applications using the developed ADTs. |
| |
CS 242 Computer Architecture and Organization (3-3-4) | Prerequisite: CS 230 |
Introduction to computer architecture and Organization. Computer History and Evolution. Computer Performance. Assembly language, CISC and RISC instructions sets, internal data representation, computer arithmetic, processor data path and control, memory hierarchy, I/O devices and interconnects, and an introduction to parallel processing. Lab work (Closed Lab) Low-level programming assignments using x86 and/or MIPS assembly. |
| |
CS 350 Database Systems (3-3-4) | Prerequisite: CS 241 |
Basic database concepts. Conceptual modeling. Relational data model. Relational theory and languages. Database Design. Database security and integrity. Introduction to query processing and optimization. Introduction to concurrency and recovery. Lab work (Closed Lab) Programming assignments to learn database design using CASE tools. Introduction to back-end/Server-based Relational Database Management System (RDBMS). Learning Standard SQL (interactive/embedded). Introduction and programming assignments on Front-End tools. Programming team projects to design and develop real life database systems using the learned tools. |
| |
CS 351 Design and Analysis of Algorithms (3-0-3) | Prerequisite: CS 240, CS 241 |
Introduction to algorithms and review of data structure; Time and space analysis; Algorithm design techniques: divide-and-conquer, greedy algorithms, dynamic programming, search techniques; NP-complete problems and approximation algorithms. |
| |
CS 352 Computer Network Systems (3-3-4) | Prerequisite: CS 242 |
Introduction to computer networks, Application layer protocols, Transport layer protocols, and congestion control mechanisms. An in-depth analysis of Network layer design issues, and internetworking. Data link layer design issues and protocols. Wireless LANs. Lab Work (Closed Lab) Use of network traffic analysis tools and network simulator |
| |
CS 360 Operating Systems (3-3-4) | Prerequisite: CS 242, CS 241 |
History and evolution of operating systems. Types of operating systems. Case histories of significant operating systems. Processes, inter-process communication, process coordination and synchronization. Process scheduling. Memory management. File systems. Security and protection. Case operating systems. Lab work (Closed Lab) Implementation of user-defined utilities/commands for UNIX by writing system programs using different types of system calls including those for file/directory management, process management, signal management, and client-server management. Also involve practice on various aspects of shell environment and shell programming. |
| |
CS 361 Computer and Network Security (3-1-3) | Prerequisite: CS 352 |
This course introduces students to computer and network security. Topics include Security management practices; Computer security, Network security; Security services: confidentiality, integrity, availability; Hacker techniques and motivation; Cryptography tools: Public and private key encryption; authentication, digital signatures; User identification and access control; Computer viruses, Trojans and worms; Risk management and analysis; Security policy and recovery. Internet security protocols; Security technologies and systems: Firewalls, VPN, IPS and IDS. The course includes theoretical as well as hands-on components. Lab work (Closed Lab) Students will use various security tools, encryption, auditing, and network vulnerability scanning to gain hands-on experience on computer and network security topics taught in the course. |
| |
CS 362 Web Engineering and Development (2-3-3) | Prerequisite: CS 231 |
Examining a systematic, disciplined and quantifiable approaches to developing high-quality, reliable and usable web applications; introduces the methodologies, techniques and tools that support their design, development, evolution, and evaluation. Topics covered include requirements engineering for Web applications, design methods and technologies, interface design, usability of web applications, accessibility, testing, metrics, operation and maintenance of Web applications. Specific technologies covered in this course include client-side (HTML5, JavaScript, and CSS) and server-side applications (Perl or PHP). Lab Work (Closed Lab) Programming assignments to practice different problem solving of usability, maintainability, quality and reliability; many resources and tools that will be utilized such Perl Reference Guide, a full language and function reference for the PHP server-side scripting language, A well-written and easy-to-follow tutorial on the basic aspects of using a UNIX-based system., Core JavaScript 1.5 Reference, JavaScript Tutorial and Examples, the W3C's accessibility guidelines. Introduction to UML 2 Class Diagrams, and the Expressive Power of UML-Based Web Engineering. |
CS 363 Software Engineering (3-1-3) | Prerequisite: CS 241 |
The software development process; Software requirements and specification; Software design; Software verification and validation; Software management; Software tools. |
| |
CS 470 Introduction to Artificial Intelligence (3-0-3) | Prerequisite: CS 351 |
Introduction to the types of problems and techniques in Artificial Intelligence. Problem- Solving methods. Major structures used in Artificial Intelligence programs. Study of knowledge representation techniques such as predicate logic, non-monotonic logic, and probabilistic reasoning. Examples of expert systems. Introduction to natural language understanding and various syntactic and semantic structures. Expert systems, Introduction to computer image recognition. |
| |
CS 471 Social and Ethical Issues of Computing (3-0-3) | Prerequisite: CS 363 |
Ethical problems that faces computer scientists. The codes of ethics of computing professional societies. The social implications of computers, computing, and other digital technologies. |
| |
CS 472 Programming Languages (3-0-3) | Prerequisite: CS 241 |
Programming languages: Syntax and semantics. Data types. Control structures. Sub-Programs. Exception handling. Run-time Storage Management. Programming Paradigms: Imperative, functional, logic, object-oriented, and concurrent. |
| |
CS 473 Graduation Project (1-6-3) | Prerequisite: CS 363, CS 350 |
Project-oriented course in which students work in teams or as individuals on a real-world problem of their interest, go through its software development lifecycle in order to develop a software solution for the problem at hand. The graduation project offers the opportunity to integrate the knowledge acquired in preceding courses, as well as promote and instill communication skills, and lifelong self-learning. |