CS 101A : Programming in a Selected Language

Prerequisit: None
Co-req: CS101B
Description: The main objective of this course is to introduce students to the basic concepts of a selected programming language (such as C++) and the ability to write simple correct programs. Topics to be covered include: I/O, data types, function definition, visibility and storage classes, parameter passing, loops, arrays, pointers, strings, files, introducing classes and objects, constructors and destructors, function prototypes, private and public access, and class implementation. The practical part of this course is covered in the lab through exercises, practical assignments, and tutorials.
Credit Hours: 2

CS 101B : Programming in a Selected Language Lab

Prerequisit: None
Co-req: CS101A
Description: The objective of this course is to provide students with the opportunity to implement the programming concepts and techniques taught in CS101A. Exercises and case studies will be prepared in conjunction with the material covered in CS101A.
Credit Hours: 1

CS 117 : Object-Oriented Programming

Prerequisit: CS101A, CS101B
Co-req: CS118
Description: The objective of this course is to provide students with knowledge and needed skills in order to design and develop object-oriented programs. Topics to be covered include: the object-oriented approach, classes, method, object inheritance, replacement and refinement, static and dynamic binding, polymorphism, visibility and dependency, files and storage issues. The course is supplemented by a lab component covered in CS118 concurrently.
Credit Hours: 3

CS 118 : Object-Oriented Programming Lab

Prerequisit: None
Co-req: CS117
Description: The objective of this course is to provide students with the opportunity to implement the programming concepts and techniques taught in CS117. Exercises and case studies will be prepared in conjunction with the material covered in CS117.
Credit Hours: 1

CS 130 : Fundamentals of Operating Systems

Prerequisit: CS100
Co-req: None
Description: The objective of this course is to provide students with the basic knowledge and skills of operating, managing, and maintaining microcomputer systems. Hands-on experience with windows environment is a major concern in this course. It covers a range of topics including: operating system concepts, functions, and components, a general overview of OS services, process management, CPU scheduling, memory management, virtual memory and file system, installing, partitioning, configuring and upgrading Windows, common errors and problems and how to solve them, networking capabilities of Windows. Windows commands, system programs, and Windows facilities are covered in the practical component.
Credit Hours: 3

CS 220 : Computer Logic Design

Prerequisit: MATH 152, CIS103
Co-req: CS225
Description: The objective of this course is to introduce students to the basic concepts in digital logic and how the electronic circuits work inside the computer. Topics to be covered include: Binary Systems, Conversion, Boolean expression and its simplification methods, Combinational logic circuits, MSI and LSI, flip-flops and sequential logic circuits, registers, counters, memory units. The course has a lab CS225 taken concurrently with it.
Credit Hours: 3

CS 225 : Computer Organization Lab

Prerequisit: None
Co-req: CS220
Description: This course is intended to cover the practical aspects related to computer organization, architecture, and logic. Students are trained to write simple assembly programs to explore and analyze microcomputer organization and architecture.
Credit Hours: 1

CS 250 : Data Structures

Prerequisit: CS117
Co-req: CS255
Description: The objective of this course is to introduce students to various types of data structures, their logical and physical representations, and their related operations. Topics to be covered include: data structure operations, dense lists and matrix representations, linked lists and their different variations, string storage representation and manipulation, queues and stacks and their applications, tree structures and their different variations, graphs and networks. The course is supplemented by a lab component covered in CS255 concurrently.
Credit Hours: 3

CS 251 : Analysis and Design of Algorithms

Prerequisit: CS250, Math 152
Co-req: None
Description: The objective of this course is to provide students with the knowledge and skills in complexity analysis and design of computer algorithms. Topics to be covered include: sorting algorithms, search algorithms, divide and conquer, greedy method, trees, graphs, dynamic programming, backtracking, branch and bound, Lower bound theory, NPcomplete problems. The practical part of the course will include writing programs for solving problems using techniques taught in this course.
Credit Hours: 3

CS 255 : Data Structures Lab

Prerequisit: None
Co-req: CS250
Description: The objective of this lab is to teach students to program what they learned in CS250 using a high-level programming language in order to enhance their understanding of the main data structures concepts including stacks, queues, linked list, trees, graphs, … etc.
Credit Hours: 1

CS 317 : Advanced Programming

Prerequisit: CS117
Co-req: None
Description: This course is intended to teach students a popular high level programming language based on the demands of the job market. Topics to be covered include: syntax rules and structures, special programming features of the language in comparison with other languages, how data is processed using this language, compilation and implementation issues, files and storage mechanisms, other facilities provided by the language. The practical part of the course will include case studies, exercises and a project.
Credit Hours: 3

CS 328 : Microprocessors and Microcomputers

Prerequisit: CS220
Co-req: None
Description: The objective of this course is to introduce students to the evolution of microprocessor systems, their characteristics and applications. Topics to be covered include: machine instructions and addressing modes, microprogramming and assembly languages, pins functions, asynchronous data transfer, decoding, programming in direct memory access controller (DMA) and programmable interface controller (PIC), 16-bit and 32-bit families. The practical part of the course students will be asked to write simple programs using the assembly language for a well known microprocessor.
Credit Hours: 3

CS 330 : System Programming

Prerequisit: CS220
Co-req: None
Description: The objective of this course is to provide students with the knowledge and skills related to the design and implementation of various systems programs. Topics to be covered include: text editors, file utilities, monitors, assemblers, relocating linking loaders, I/O handlers, schedulers, programming language definitions, design of interpreter and compiler programs. The practical part of the course will include writing simple programs in the system programs covered in the course.
Credit Hours: 3

CS 331 : Operating Systems

Prerequisit: CS130
Co-req: None
Description: This course builds on the knowledge and skills gained from the course CS130. Its objective is to provide students with more advanced concepts, techniques, and in-depth knowledge in issues that have not been covered in the introductory course. Topics to be covered include: operating system types, operating system structures, systems calls, inter-process communication, communication in client/server systems, multithreading, process synchronization, deadlocks, advanced topics in storage management and virtual memory, file system structure and implementation, mass storage structure management, RAID technology. The practical part of the course involves case studies and a practical component in some operating systems not covered in CS130 such as Linux or UNIX.
Credit Hours: 3

CS 334 : Data Communication and Networks

Prerequisit: CS130
Co-req: CS335
Description: The objective of this course is to provide students with an overview of the concepts and fundamentals of data communication and computer networks. Topics to be covered include: data communication concepts and techniques in a layered network architecture, communications switching and routing, types of communication, network congestion, network topologies, network configuration and management, network model components, layered network models (OSI reference model, TCP/IP networking architecture) and their protocols, various types of networks (LAN, MAN, WAN and Wireless networks) and their protocols. The course is supplemented by a practical component covered in CS335 concurrently.
Credit Hours: 3

CS 335 : Data Communications and Networks Lab

Prerequisit: None
Co-req: CS334
Description: The objective of this lab is to introduce students to the design issues that arise in building and using networks and to give students hands on experience with building and using network services. The practical issues to be stressed include design and installation of LAN, network operating system, setting up a network system such as users and their permissions and rights, groups and domains, adding workstations and sharing of resources across the network.
Credit Hours: 1

CS 342 : Theory of Computation

Prerequisit: CS220
Co-req: None
Description: The objective of this course is to introduce students to formal languages and their representation, automata, and theory of computation. Topics to be covered include: formal languages and their representation, different grammars, finite automata: deterministic and non-deterministic, regular languages, regular expressions, context-free languages, pushdown automata, Turing machines and computability, universal Turing machine, computability and complexity.
Credit Hours: 3

CS 376 : Artificial Intelligence

Prerequisit: CS250, MATH 152
Co-req: None
Description: The objective of this course is to provide students with the basic concepts, knowledge and skills required in utilizing Artificial Intelligence techniques in solving practical problems. Topics to be covered include: knowledge representation methods like propositional logic and predicate calculus, blind search strategies (breadth-first and depth-first), heuristic search strategies (hill-climbing, best-first and A*), backward and forward reasoning, applications: expert systems, natural language processing, pattern recognition, image processing, and planning. The practical part of the course involves programming exercises and case studies related to the topics covered.
Credit Hours: 3

CS 380 : Computer Graphics

Prerequisit: CS250, Math 241
Co-req: None
Description: The objective of this course is to provide students with the basic concepts, technical and mathematical knowledge and skills required to design and implement computer graphics. Topics to be covered include: graphics hardware, software utilities, two and three dimensional transmutation and viewing, graphics arts and animations. Students are expected to be design programs using programming graphics tools and libraries such as Open GL to perform practical assignments.
Credit Hours: 3

CS 410 : Programming Language Techniques and Methodologies

Prerequisit: CS317
Co-req: None
Description: The objective of this course is to introduce students to the main concepts, principles, techniques and paradigms of designing and implementing programming languages. Topics to be covered include: language components, evolution of major imperative programming languages, language taxonomy, data types and objects, expressions and statements, subprograms, modules and packages, scope rules and visibility, passing parameters, activation records and call management, concurrent programming, exception handling, functional programming languages, logic programming, object-oriented programming, examples and comparative case studies.
Credit Hours: 3

CS 431 : Compiler Construction

Prerequisit: CS342
Co-req: None
Description: The objective of this course is to provide students with the skills and basic knowledge of the concepts, techniques, and approaches used for designing and implementing compilers. Topics to be covered include: compiler components, lexical analysis, symbol tables handling, parsing techniques, error handling and recovery, syntax-directed translation, type checking, intermediate code generation, code generation, code optimization. Students are expected to design and implement a compiler or an interpreter for a simple programming language.
Credit Hours: 3

CS 432 : Computer Architecture

Prerequisit: CS220
Co-req: None
Description: The objective of this course is to introduce students to the basic concepts and various techniques of computer architecture. Topics to be covered include: ALU design, IEEE 754 format for floating-point numbers, coprocessors, design of hardwired CU and microprogrammed CU, the characteristics of instruction sets, pipelines techniques, the architecture of RISC and CISC machine, (cache) high speed memories, I/O channels and I/O processors, parallel processing
Credit Hours: 3

CS 434 : Distributed Computing

Prerequisit: CS 334
Co-req: None
Description: The objective of this course is to introduce students to the fundamentals and techniques of distributed computing and provide them with the basic skills of how to write distributed programs. Topics to be covered include: distributed computing, distributed programming, distributed systems, concurrency, distributed computing paradigms, inter-process communications, group communications, operating system support, distributed objects, application programming interfaces (RMI, RPC), client server model, the socket API, security issues and Internet applications. Students are expected to develop distributed applications using latest technologies.
Credit Hours: 3

CS 470 : Expert Systems

Prerequisit: CS376
Co-req: None
Description: The objective of this course is to provide students with the knowledge and skills required for developing expert systems and applying them in real-life application problems. Topics to be covered include: knowledge acquisition, knowledge representation techniques, inference methods, reasoning under uncertainty, design of expert systems, and introduction to an expert system programming tool, expert systems case studies. In the practical part of the course students are expected to design a small expert system using an expert system programming tool.
Credit Hours: 3

CS 480 : Image Processing

Prerequisit: CS376
Co-req: None
Description: This course is intended to provide students with an introduction to the basic concepts techniques, and technologies of digital image processing. Topics to be covered include: image and video representation technologies, image enhancement and filtering techniques, mathematical morphology, noise removal techniques, image compression techniques, edge detection and segmentation techniques.
Credit Hours: 3

CS 492 : Special Topics

Prerequisit: CS376
Co-req: None
Description: In this course a topic in computer science is selected not covered in the list of courses described above to be taught to students, with the approval of the department board.
Credit Hours: 3

CS 499 : Graduation Project

Prerequisit: Passing 98 hours
Co-req: None
Description: The objective of this course is to gives students an opportunity to utilize the knowledge and skills gained in other courses in a real-life application problem. The student is supposed to analyze the problem, design a software solution to it, coding the solution in a programming language, and writing the documentation in the form of a project report using a standard way.
Credit Hours: 3

CS 99 : Introduction to Computers and Applications

Prerequisit: None
Co-req: None
Description: The main objective of this course is to provide students with the ability to utilize commonly used computer applications in their daily life and work. It covers a range of topics and applications including: general overview of computer hardware technology computer software systems, MS Windows, word processing, spreadsheets, Power Point presentations, Web browsing …etc.
Credit Hours: 3

CS 101 : Programming in a Selected Language

Prerequisit: None
Co-req: None
Description: The main objective of this course is to introduce students to the basic concepts of a selected programming language (such as VB.Net) and the ability to write simple correct programs. Topics to be covered include: I/O, data types, function definition, visibility and storage classes, parameter passing, loops, arrays, pointers, strings, files, introducing classes and objects, constructors and destructors, function prototypes, private and public access, and class implementation. The practical part of this course is covered in the lab through exercises, practical assignments, and tutorials. This course is deigned for Medical, Scinece, and Pharmacology Students.
Credit Hours: 3

CS 109 : Home Computing

Prerequisit: None
Co-req: None
Description: The aim of this course is to introduce the importance of the role played by the personal computers in homes and how to take care of them, maintain them, and the right ways to use them. The most important topics presented by this course are the followings: An overview of recent technological developments in the field of personal computing and home automation (computers, printers, storage units, internet, and others). The criteria for selection devices and determine their specifications and dealing with basic and applied software and how to install it on computers. Communication networks and home internet services. Maintenance of software and hardware. Protecting computers ftom viruses and illegal intrusions. The ethics of using computers and information systems. Optimal use for computers and the negative health effects. Applied oriented programs for homes, and other topics that include the safety of personal and home computer systems.
Credit Hours: 3
003087