Required Courses: (52 Credits)
Comp 231, 232, 233, 234, 235, 333, 334, 335, 339, 411, 431, 432, 433, Stat 231, Math231, Math234, Math330, Phys231.
Elective Courses: (15 Credits of the following)
Required Courses: (36 Credits)
Comp 231, 232, 233, 234, 235, 333, 334, 431, 432, Math231, Math234, Phys231.
Elective Courses: (6 Credits of the following)
Comp 332, 335, 336, 337, 338, 433, 434, 435, 436, 437, 438, 439, Math330.
Requirements for the admission to the Major & Major-Minor in Computer Science:
In order to be considered for acceptance in the program, the student should have:-
121 - Introduction to computer:
Computer organization, binary system, data representation, computer and society. Applications, ( including : Operating systems, data base, spread sheets, word processors, and internet ).
132 - Introduction to Computer and Programming:
(Computer organization; data representation; various types of computers; computer networks and telecommunications). programming in a high level language. Applications, (Including: Operating systems; data bases; spread sheets and word processors; mathematical and statistical tools).
Computer components, number systems, data representation, using of an operating systems, programming in C language, language elements ,control statements, functions, pointers, file processing, data structures (stacks ,queues ,linked lists, recursion ), applications.
231 - Foundations Of Computing:
Boolean Algebra, computer architecture, Assembly language, machine language, language translation principles, operating system, storage management.
Prerequisite : Comp 132.
Using different techniques in programming through using one of the modern programming languages( C ), by giving types of the variables, input-output, control statements, functions, arrays, records, files, and the concentration on the uses of pointers, introduction to C++.
Prerequisite : Comp 132.
Basic areas in discrete mathematics relevant to Computer Science. uses of logic in programming, set theory. Functions and Relations. Mathematical Induction, Recursion. Introduction to Graph theory. Counting techniques, Combinatorics.
Prerequisite : Math 131.
232 - Data Structures and Algorithms:
Rigorous treatment of abstract data types. Abstraction and implementation. Linked list, stacks, queues and tree structures, algorithms for searching and sorting, recursion. Proof of correctness of algorithms. Complexity of algorithms.
Combinational circuits,. Minimization and implementation of Boolean function. Propagation delays. Devices: multiplexers, decoders, encoders, adders, etc. Various types of flip-flops. Sequential circuits: counters, shift registers. Various types of memories: ROM, RAM etc., Applications.
Prerequisite : Comp231.
332 - Automata theory and Formal Languages:
An introduction to the abstract notions encountered in machine computation. Topics include finite automata, pushdown automata, regular expressions and formal languages, with emphasis on regular and context-free grammars. Questions relating to what can and cannot be done by machines are covered using various models of computation, including Turing machines and recursive functions.
Prerequisite : Comp233.
Introduction to database structure organization, and retrieval. Conceptual models and schema of data: relation, hierarchical, network and object-oriented. Integrity, consistency and normalization Query languages, normalization, file structures, concurrency control and recovery algorithms.
Prerequisite : Comp234.
334 - Computer Architecture and Assembly Language:
This course explores the logical structure of a computer at the register transfer level. Machine representation of information. Topics associated with data representation, 1/0 devices and by transactions are treated in this course. Introduces assembly language for a modern processor. This course will include programming projects.
Study of desirable features and specifications of a programming language by investigation of data types control structures, data flow, run time behavior of several languages belonging to different paradigms, such as Prolog, Lisp, Smalltalk, etc. The following paradigms will be considered: Specification, Logic Programming, declarative or constraint-based, functional and imperative.
Prerequisite : Comp232.
Techniques for efficient implementation and precise analysis of algorithms. time and space requirements are applied on programs. Various sorting, searching and other algorithms are analyzed.
Prerequisite : Comp 232.
Introduction to operation research, linear programming, geometric examples, simplex method, optimal solutions, transportation problem, assignment problem, network, revised simplex method.
Prerequisite : Comp234, Math234.
338 - Artificial Intelligence:
Basic ideas and techniques underlying the design of intelligent compute systems. Topics include heuristic search, problem solving, game playing knowledge representation, logical inference, planning reasoning, expert systems, language understanding. Study to a recursion language..
339 - Object Oriented Programming:
Programming in C++, Object Oriented Analysis, Design, Programming, and Applications. The theory behind OOP will be examined, and students will examine, analyze, and design programs using Object Oriented Techniques.
Prerequisite : Comp234.
411 - Seminar in Computer Science:
Students taking the course are expected to give lectures in various fields of computer in front of the faculty members in the department. One of the main objectives of the course is to train students to do independent reading in computer, to present it and to discuss it with faculty members.
Prerequisite : Consent of the department.
Organization and implementation of operating systems, including time and space management. Multi-tasking systems. Processes, process, management, interprocess communication and synchronization. Memory allocation, segmentation and paging. Virtual memory. File systems, storage devices and 1/0 systems. Protection , security and privacy.
Prerequisite : Comp334.
432 - Communications and Networking:
An introduction to the basic concepts of computer networks. The architecture of data communication systems, the seven-layer model of a network, and the physical, data link, network, transport and session. Layers are explored. Protocol algorithms are considered for the implementation of the various net work layers network installation.
Prerequisite : Comp334, Math231.
Introduces students to the software life cycle, and modern techniques and tolls for the proper engineering of software systems, Stresses the development of reliable and maintainable software via system requirements and specifications, software design methodologies, detailed design, and implementation integration and resting. Topics include: Software project management, life cycle documentation, software maintenance, and human factors issues. Students will participate in the development of large applications software applying these techniques.
434 - Management Information Systems:
Organizational and Technical foundations of Information systems. Building information system. Management and organizational support systems. Managing contemporary information systems.
435 - Computer Graphics & User Interface:
Basic elements to computer graphics. Graphic output devices and their properties. Graphic primitives and their attributes. 2-D and 3-D primitives. Input Devices. Various alternatives to the design of the human computer interface. Human factors considerations. Algorithms for line, circle drawing. Geometric transformations. Clipping algorithms. Introduction of graphics standard. This course will include programming assignment with emphasis on the careful design of the user interface.
Prerequisite : Comp 232, 334, Math 231.
Elementary hardware concepts and digital computer, machine operations and instructions, virtual addressing stack architecture, I/O interrupt solutions to problems in assembler language.
Prerequisite : Comp334.
An independent research project carried out by a student under the supervision of one of the faculty members. A report is submitted at the end of the study.
Prerequisite : 4th year standing and approval of the department.
438 - Special Topics in Computer Science:
A study of a specific topic in computer field. The subject of the course is chosen according to student needs and interests of faculty members.
Prerequisite : Approval of the department.
Introduction to compilers, programming languages, finite automata and lexical analysis, the syntactic specification of programming languages, basic parsing techniques, automatic construction of efficient parses, syntax -directed translation.