| CSC 111 – Computer Programming-I (3-2-1) |
| Course Description | Introduction to computers and programs. Programmer’s algorithm, byte code and Java Virtual Machine. Java program’s structure, constants, variables and built-in data types. The arithmetic, assignment, increment and decrement operators. Classes and object definition, UML representation of a class, declaration of objects (Instance variables), primitive types and reference types. Relational and logical operators, Boolean expressions, conditional statements, loop statements. Object oriented principles, encapsulation and information hiding, methods and the message passing principles, setters, and getters. Methods in depth, passing parameters, constructors, setters. Arrays, usefulness of arrays, declaration of arrays, access to array elements, operations on arrays. |
| Prerequisite | CT 101 - IT Skills. |
| Course Objectives | The course aims at giving the students a broad foundation in the fundamental concepts of object oriented programming accompanied by specific labs to develop the basic skills in object oriented programming with Java. It introduces the basic concepts and principles of the Object Oriented approach such as: (i) Abstraction and Encapsulation principles, (ii) Classes, objects and the constructor concepts, (iii) Information hiding principle and the assessors concept. (iv) Methods, the message passing and the overloading principles. |
| |
| CSC 113 – Computer Programming-II (3-2-1) |
| Course Description | This course continues the coverage of the fundamental concepts of Object Oriented Programming started in Programming I (CSC 111). It covers more advanced concepts and topics This course continues the coverage of the fundamental concepts of Object Oriented Programming started in Programming I (CSC 111). It covers more advanced concepts and topics such as relationships between classes, inheritance, polymorphism, abstract classes, error handling, interfaces, generics and data structures such as linked lists, stacks and queues, in addition to graphical user interface |
| Prerequisite | CSC 111 - Computer Programming I. |
| Course Objectives | The objective of this course is to develop the students' ability to use the basics of object-oriented design and programming. The students learn the characteristic features of object orientation – classes, methods, polymorphism, and inheritance – through both the lectures and a sequence of illustrative programming assignments. Students will also study list data structures, event driven programming and graphical user interface tools. |
| |
| CSC 212 – Data Structures (3-0-1) |
| Course Description | Fundamental concepts of data structures. Performance measurement of algorithms. Implementation and use of lists, stacks, queues, priority queues, trees, heaps, hash tables and graphs. Recursion. Students will do programming assignments. |
| Prerequisite | CSC 113 - Computer Programming II. |
| Course Objectives | The objective of this course is to teach the fundamentals of data structures needed in the remainder of the curriculum and develop students’ problem solving and computer programming skills. |
| |
| CSC 215 – Procedural Programming With C (2-2-1) |
| Course Description | Introduction to the procedural programming paradigm. Brief history of C. C primitive data types, variables and constants, operators (arithmetic operators, logical operators, and access operators). Control structures. Procedures and parameter passing. User defined types. Pointers. |
| Prerequisite | CSC 111 - Computer Programming I. |
| Course Objectives | The objective of this course is to teach students the design and implementation of C programs. They also are meant to understand when to use procedural vs. OO programming. |
| |
| CSC 220 – Computer Organization (2-2-1) |
| Course Description | The course introduces basic digital logic design techniques and integrates the topics of generic assembly language programming, computer organization, and computer design. The objectives of this course are to: help students learn the fundamental elements of computer architecture from a functional, hardware perspective; foster an appreciation of organizational models and design decisions that determine the overall performance, capabilities, and limitations of a computer system; and help students understand the interdependencies among assembly languages, computer organization, and design. Topics include Introduction to basic computer organization and how the computer works; DeMorgan’s Law, simplifying circuits using Karnaugh maps, Instruction code, Computer registers, Instruction set, Timing and control; Register Transfer Language HDL ( Hardware Description Language) and Microoperations; Computer Arithmetic Logic Unit Design. -Hardwired control unit, instruction set, introduction to addressing modes; Central Processing Unit Design, Register organization, Instruction format, Addressing modes. |
| Prerequisite | MATH 151- Discrete Mathematics. |
| Course Objectives | The course aims to give the students: - Design and understanding of the different basic components of a computer system.
- Understanding how the different components inside the computer system functions.
- A theoretical and practical understanding of the register transfer language.
- A basic understanding of the importance of control units.
- A theoretical and practical understanding of the arithmetic logic unit.
- Understanding the interdependencies among assembly languages, computer organization and design.
|
| |
| CSC 227 – Operating Systems (3-0-1) |
| Course Description | This is an introductory course in Operating Systems. As such, it is intended to cover many of the concepts related to most of the actual Operating Systems. Although the study of a particular Operating System is out of the scope of this course, nevertheless, we will cover most of the concepts found in any existing Operating System. We will review computer system and operating system structures, processes and threads (concepts of, communication, synchronization and deadlocks), CPU Scheduling, memory management and virtual memory. |
| Prerequisite | CSC 212 - Data Structures. |
| Course Objectives | Course objective is to provide the concepts of operating systems design and implementation. It identifies and describes the major and common components of an operating system with stating their functions and purposes especially process management (process scheduling, and synchronization), and memory management (segmentation, paging, and swapping). |
| |
| CSC 281 – Discrete Mathematics for Computer Science (3-0-1) |
| Course Description | Logic and methods of proofs. Basic Discrete Structures: Sets, Functions, Recursive definitions, Sequences and Summations. Growth of functions. Integers and Division, Rings & Fields, Applications of Number Theory. Combinatorics: Counting techniques, Permutations and Combinations, Binomial Coefficients, Permutation and Combinations with repetition, Recurrence Relations, Generating Functions. Discrete Structures: Relations, Graphs, Trees and Finite State Machines. Discrete Probability (optional). |
| Prerequisite | STAT 101 - An Introduction to Probability & Statistics. MATH 151 - Discrete Mathematics. |
| Co-requisite | CSC 212 – Data Structures. |
| Course Objectives | The course is an introductory course in discrete mathematic with emphasis on how this theory can be invoked to develop efficient algorithms and systems. Also, it serves as the mathematical perquisite for many advanced courses. |
| |
| CSC 304 – Ethical Issues in Computing & Research Methods (3-0-1) |
| Course Description | This course seeks to equip students with sufficient knowledge of Computer Ethics to enable them recognize the ethical nature of certain issues that arise in the Information and Communications Technology (ICT) workplace. The course studies the effect of the proliferation of computers in our world, the impact of computers in the social, economic, political, and other aspects of our life. It covers the moral and legal obligations of computer professionals and issues concerning security, privacy versus freedom of information, ethics and professionalism, intellectual property rights, research methods: collecting and analyzing data, critical evaluation of research, report writing, choosing and evaluating references, and presentation skills. |
| Prerequisite | CSC 113- Computer Programming II. |
| Course Objectives | The objective of the course is to provide the students with main concepts of computer ethical issues and to introduce scientific research methods. |
| |
| CSC 311 – Design and Analysis of Algorithms (3-0-1) |
| Course Description | Mathematical essentials; sorting; space and time complexity; algorithm design methods: greedy algorithms, divide and conquer, and dynamic programming; introduction to graph theory; and NP-completeness. |
| Prerequisite | CSC 281 - Discrete Mathematics. CSC 212- Data Structures |
| Course Objectives | The course aims at giving the students a broad foundation in the fundamental concepts of object oriented programming accompanied by specific labs to develop the basic skills in object oriented programming with Java. It introduces the basic concepts and principles of the Object Oriented approach such as: (i) Abstraction and Encapsulation principles, (ii) Classes, objects and the constructor concepts, (iii) Information hiding principle and the assessors' concept. (iv) Methods, the message passing and the overloading principles. |
| |
| CSC 329 – Computer Networks (3-0-1) |
| Course Description | This course covers the theoretical as well as hands-on knowledge of Computer Networks covering all the fundamental aspects of networking such as OSI, TCP/IP, LANs, MANs,WANs, Routing Protocols, Switching etc. This course will discuss the design of small to medium size networks as well as different networking issues related to routing and switching. |
| Prerequisite | CSC 227 - Operating Systems. |
| Course Objectives | The objective of this course is to equip students with theoretical as well as hands-on knowledge of Computer Networks covering all the fundamental aspects of networking such as OSI, TCP/IP, LANs, WAN, Routing Protocols, Switching etc. At the end of the course, students should be able to handle small to medium size networks and have the ability to implement and troubleshoot different networking issues related to routing and switching. |
| |
| CSC 339 – Theory of Computation (3-0-1) |
| Course Description | Mathematical preliminaries. Regular languages, regular expression, deterministic and non-deterministic finite automata, closure properties and pumping lemma. Contextfree grammar and languages, pushdown automata and pumping lemma. Turing machines, the Church-Turing Thesis, Computability. Decidability and the Halting problem. Complexity, class P and NP. |
| Prerequisite | CSC 281 - Discrete Mathematics for Computer Science. |
| Course Objectives | The course aims at answering two questions: what can be computed by a machine? And how efficiently? It starts by presenting machines models, then addresses the computability problem, and then the complexity of algorithms and their classification .according to it |
| |
| CSC 340 – Programming Languages and Compilation (3-0-1) |
| Course Description | Programming Languages: features, design and translation issues. Lexical Analysis. Syntactic Analysis. Semantic Analysis. Code Generation. |
| Prerequisite | CSC 339 - Theory of Computation. |
| Course Objectives | The objective of this course is to explore different types of programming languages and their features, and study translation/compilation techniques used in translating the high-level languages to a machine language. A basic compiler for a small programming language will be implemented during the semester. |
| |
| CSC 343 – Systems Analysis and Design (3-0-1) |
| Course Description | This course focuses on the principles of software development including the life-cycle models and different phases of the software development process: requirements analysis, specification and design. The key objective of this course is to learn modular design of software and documenting the design using symbolic representations, i.e., UML diagrams. Object-oriented techniques are key to the course. However, this is not a programming course. The key characteristic is having teams of three to four students work on developing software systems over a course of one semester. This work includes a feasibility study, requirements analysis and object-oriented design. |
| Prerequisite | CSC 212- Data Structures. |
| Course Objectives | The purpose of this course is to present software engineering as a body of knowledge. The course is designed to present software engineering concepts and principles in parallel with the software development life cycle. |
| |
| CSC 361 – Artificial Intelligence (3-0-1) |
| Course Description | The course will provide an introduction to artificial intelligence. Topics include: problem solving using search (search procedures e.g. depth-first, breadth-first, A*, etc.), constraint satisfaction problems, game playing, knowledge representation and inference procedures. Abstract highlights cover an advanced AI topic (e.g. machine learning, natural language processing). Students will do a small project in this course as well. |
| Prerequisite | CSC 212- Data Structures. |
| Course Objectives | The objective of this course is to develop the students' ability to understand the concepts of AI. The students will be taught and required to practice the informed and un-informed search techniques, problem formulation, optimization techniques, knowledge representation and detailed game theory. The students are expected to present their skills by a course project. |
| |
| CSC 380 – Introduction to Database Concepts (3-0-1) |
| Course Description | Purpose of Database Systems, View of Data, Data Models, Data Definition Language, Data Manipulation Language, Transaction Management, Storage Management, Database Administrator, Database Users, Overall System Structure. Entity Sets, Relationship Sets, Design Issues, Mapping Constraints, Keys, E-R Diagram, Design of an E-R Database Schema. Structure of Relational Databases, Relational Algebra, Extended Relational-AlgebraOperations, Modification of the Database, Reduction of an E-R Schema to Tables. Basic Structure, Set Operations, Aggregate Functions, Null Values, Nested Sub-queries, Derived Relations, Views, Modification of the Database, Joined Relations, DDL, DML. First Normal Form, Relational Database Design, Functional Dependencies, Decomposition, Boyce-Codd Normal Form, Third Normal Form, Overall Database Design Process. |
| Co-requisite | CSC 212 – Data Structures. |
| Course Objectives | This course aims at giving the students a broad foundation in the fundamental concepts of database. This should allow students to design and implement real life databases, in addition to evaluate existing ones. Students will be able to use query of different types of complexity. |
| |
| CSC 429 – Computer Security (3-0-1) |
| Course Description | Security principle, model and attacks. Cryptography, public key and secret-key cryptography. Authentication and digital signature. Key management and cryptographic protocol. Access control. Building secure system. Security in operating systems. Security in computer networks. Management and analysis of security. Risk assessment. Computer security policy. International information security standards. Intrusion detection and incident response. |
| Prerequisite | CSC 329 - Computer Networks. |
| Course Objectives | The course aims at giving the students a broad foundation in the fundamental concepts of Computer Security. It introduces the basic concept and principles of computer security such as: Security requirements, encryption, access control, malicious software, security policy and management. |
| |
| CSC 453 - Parallel Processing (3-0-1) |
| Course Description | Introduction to parallel processing. Models of parallel machines. Parallel programming paradigms and models. Performance analysis of parallel systems. Parallel programming languages and frameworks. |
| Prerequisite | CSC 227 - Operating Systems. |
| |
| CSC 457 – Internet Technologies (3-0-1) |
| Course Description | An overview of Internet technologies (definitions, evolutions, examples, and, applications). Publishing and browsing technologies. Internet tools. TCP/IP and Client/server architectures. WWW, HTTP and HTML for text, images, links and forms. Web-based applications development: client-side scripting, server-side scripting and the MVC design approach. WEB site development. Security and privacy. |
| Prerequisite | CSC 329 – Computer Networks. |
| Course Objectives | The goal of this course is to provide an introduction to the basic concepts of the technologies that are used on the Internet. Students learn about building blocks of internet. They learn about various protocols used by internet. Students learn about web servers, search engines and software tools required to implement a website. |
| |
| CSC 496 – Graduation Project-I (2-0-0) |
| Course Description | This course is the first part of a sequence of two courses (CSC496 and CSC497) that in entirety constitute the BSc graduation capstone project. In this project, the student is expected to develop software for a specific problem by applying previously learned concepts and methods during the course of the project. In this course the student is typically expected to study the problem, see what others have done, perform the analysis, determine the requirements and suggest/design a solution. The project will culminate in a formal public presentation, and written documentation. Oral and written progress reports are required. The project topic may be provided by the faculty, by the student(s) or by the industry. The topic is subject to the departmental approval. |
| Prerequisite | Student must have finished at least 95 hours in the BSc program. CSC 343 - System analysis and design. |
| Course Objectives | This course is a semester-long team project, where students apply a broad range of skills learned in earlier courses, and demonstrate their competence in technical material, communications, and project skills. |
| |
| CSC 497 – Graduation Project-II (4-0-0) |
| Course Description | This course is the second part of a sequence of two courses (CSC496 and CSC497) that in entirety constitute the BSc graduation capstone project. In this project, the students will continue the software development of the problem they picked in CSC496. The project will culminate in the delivery of a working system, a formal public presentation, and written documentation. Oral and written progress reports are required. |
| Prerequisite | CSC 496 - Graduation Project-I. |
| Course Objectives | This course is a semester-long team project, where students continue what they did in the first part of this project. In this part there are expected to do the actual implementation and evaluation. |
| |
| CSC 479 – Practical Training – (1-0-0) |
| Course Description | Training is an important aspect of the educational process in CCIS. Student is required to join a government or private sector IT center. The aim of the training is to acquire the experience in applying what he learned in real life. The training is evaluated by the training advisor at the IT center and by the CCIS training committee. |
| Prerequisite | Student must have finished at least 95 hours in the BSc program. |
| Course Objectives | This summer training for college students aims to provide them with a sound foundation out of theoretical and practical hands on knowledge and experience in the field of computer science. The course will provide students insight in to design methodology and implementation using different types of programming languages in different environments. |