This course is an introduction to computer skills and applications. The course will cover basic concepts of computers and application programs. Topics covered include introduction: computer hardware, software and information technology, windows, word, excel, power point, access and the internet.

Prerequisite: N/A


This course provides an introduction to problem solving and computer programming. Topics include flowcharting, writing and executing programs, basic features of the programming language such as data types, control structures, methods, arrays and strings. Prerequisite: CSC 001


This course provides an introduction to object-oriented programming. Topics include classes and objects: a deeper look, inheritance, polymorphism, interfaces & operator overloading, exception handling, graphical user interface concepts, strings, files and streams.      

Prerequisite: CSC 101


This course introduces the student to combinational and sequential circuit design and implementation. There will be ten experiments and each will comprise of a design, software simulation, and hardware implementation.

Prerequisite: CEN 210


This course covers the basics of computer organization and assembly language programming. Topics include computer abstractions, instructions, arithmetic, structure, organization, and the processor, assembly language programming for microcomputers, data types, addressing modes, instruction set, assembler operators and pseudo operator, I/O, and high-level languages and macros.          

Prerequisite: CEN 210, CSC 101


This course presents the principles of computer architecture and design. Topics to be covered include instruction set architectures, arithmetic logic unit design, CPU data path design, CPU pipelining, memory hierarchy, cache and virtual memory, and introduction to I/O.               

Prerequisite: CSC 210


This course covers the topics of data structures and algorithm design along with their respective applications. Topics will include arrays, linked lists, stacks, queues, recursion, trees, searching, sorting and applications to sorting and searching.       

Prerequisite: CSC102


The objective of this course is to teach students methods of designing and analyzing algorithms. Specific topics include computing worst case and average case complexity for an algorithm, design techniques, dynamic programming, divide-and-conquer, greedy method, branch-and-bound, backtracking, graph traversals, minimum spanning tree, and shortest path algorithms.  

Prerequisite: CSC220


This course is an introduction to various internet and web technologies. Topics include internet and web basics, World Wide Web, HTML, XHTML, cascading style sheets, web page design and java script.          

Prerequisite: CSC102


This course coverslist-processing, string-processing, and other types of high-level programming languages. The course also introduces fundamental concepts of data types, control structures, operations, and programming environments of various programming languages. The course discusses the analysis, formal specification, and comparison of language features.

Prerequisite: CSC220


This course will provide an introduction to operating system design and implementation. Topics covered include role and purpose of operating systems, operating-system structures, process, threads, process synchronization, cpu scheduling, deadlocks, memory management and virtual memory. 

Prerequisite: CEN 312


This course is an introduction to the theory of formal languages and computation. Topics include languages, regular expressions, finite automata, Transition Graphs, Kleen's theorem, regular languages, decidability, context-free grammars, pushdown automata, parsing and Turing machines.

Prerequisite: CSC 220


This course introduces the principles and techniques used in software engineering. Topics include introduction to software engineering, software processes, agile software development, requirements engineering, system modeling, architectural design, design and implementation, software testing and software evolution.        

Prerequisite: CSC220


This course is an introduction to computer networks. Topics include introduction: uses of computer networks, network hardware, network software and reference models, the physical layer,  the data link layer,  the medium access control sub-layer, the network layer,  the transport layer, application layer of networking, transmission systems and network applications.

Prerequisite: CEN 312


This course covers fundamentals of database architecture and systems. Topics include databases and database users, database system concepts and architecture, relational data model, the relational algebra and relational calculus, data modeling using the entity-relationship model, structured query language, functional dependency and normalization.    

Prerequisite: CSC220


This course is an introduction to artificial intelligence (AI). Topics include history and applications, intelligent agent, solving problems by searching, constraint satisfaction, knowledge representation, reasoning, machine learning, natural language processing, perception, robotics, expert systems and real AI applications.       

Prerequisite: CSC321


The course lasts for 8 weeks to cover the summer semester of the third year during which students will undergo a practical training at an approved private, government or semi-government agency.    

Prerequisite: Department's Approval


In this course, the students apply what they learn to develop a computer application, that is suggested by the student and approved by the department. Computer Science senior project-first semester, includes project proposal, feasibility studies, intellectual property, teamwork, budgets, schedule management.

Prerequisite: Department's Approval

Computer Science senior project – second semester, includes teamwork, professional communications (reports & presentations), design implementation and testing.

Prerequisite: CSC490


This course will emphasize the development of numerical algorithms to provide solutions to common problems in science and engineering. Topics covered include number systems and errors, solution of nonlinear equations, interpolation, systems of linear equations, approximation, differentiation and integration and solution of ordinary differential equations.

Prerequisite: CSC321


This course provides an overview of the field of human-computer interaction. Topics include usability of interactive systems, guidelines, principles, and theories, managing design processes, evaluating interface designs, direct manipulation and virtual environments, menu selection, form fill-in, and dialog boxes, interaction devices ,documentation and online help, information searching and visualization.

Prerequisite: CSC102


This course covers the fundamentals of computer graphics. Topics include overview of graphics systems, output primitives, attributes of graphics primitives, geometric transformations, two-dimensional viewing, three-dimensional viewing, visible-surface detection methods, illumination models and surface-rendering methods, color models and color applications and computer animation.

Prerequisite: CSC321


This course Introduces essential theory, algorithms, and tools used in compiler construction. Major topics include lexical, semantic, and contextual analysis of source files, syntax trees, symbol tables, code generation and optimization techniques.           

Prerequisite: CSC420


This course is an introduction to multimedia systems. Topics include multimedia concepts, authoring and tools, graphics and image data representations, color in image and video, fundamental concepts in video, basics of digital audio, data compression, image compression, video and audio compression techniques and multimedia communication and retrieval.  

Prerequisite: CSC321


This course presents the principles of computer and information security. Topics covered include elements of information protection, threats to information security, techniques of protection, information security policies and standards, access control, physical security and risk analysis and introduction to cryptography.

Prerequisite: CSC321


This course provides an introduction to systems programming. Topics include background, assembler functions, machine-dependent and independent assembler features, assembler design options. loader functions, machine-dependent and independent loader features, loader design options, macro processor functions, features and design and implementation examples.      

Prerequisite: CSC410



This course provides an introduction to machine learning. Topics include: supervised learning; unsupervised learning; learning theory; reinforcement learning and adaptive control. The course will also discuss recent applications of machine learning, such as to robotic control, data mining, autonomous navigation, bioinformatics, speech recognition, and text and web data processing.

Prerequisite: CSC 321


This course covers the fundamentals of visual language theory, iconic and symbolic representations, parsing techniques, semantics and pragmatics of visual languages, visual programming systems, visual querying systems, visual information systems and visual software engineering. Its applications are diverse: visual user interface, visual specifications, visual reasoning, visual database systems and multimedia computing, to name but a few.

Prerequisite: CSC 102


This course will provide mathematical foundations and practical techniques for digital manipulation of images; image acquisition; preprocessing; segmentation; Fourier domain processing; feature extraction; recognition and compression.

Prerequisite: CSC 321


The course will build on the knowledge and experience the student has acquired in CSC 221, Software Engineering I. It will further assist in understanding the principles and complexities regarding the software engineering life cycle of large software projects, and to experience and develop skills for working in a large group on a small to medium scale software project. Specific topics covered will include verification/validation, software quality, documentation, and maintenance.

Prerequisite: CSC 221


Database Security and Authorization, Concepts for Object Databases, Enhanced Data Models for Advanced Applications, Distributed Databases and Client-Server Architectures, xml and Internet Databases, Data Mining Concepts, Data Warehousing and OLAP, Emerging Database Technologies and Applications.

Prerequisite: CIS 340


Contemporary topics in computer science will be offered as needed.

Prerequisite: Department's Approval


Introduction to modeling and simulation concepts. System analysis and classification. Abstract and simulation models. Continuous, discrete, and combined models. Heterogeneous models. Using Petri nets and finite automata in simulation. Pseudorandom number generation and testing. Queuing systems. Monte Carlo method. Continuous simulation, numerical methods, Modelica language. Simulation experiment control. Visualization and analysis of simulation results.

Prerequisite: STAT 311