Computer Science Apprenticeship Program An-Najah National University

You are here

Courses Description

10672101‎ Discrete Mathematics

The purpose of this course is to understand and use discrete structures that are backbones of ‎‎computer science. In this course, topics on propositional logic, predicate logic, sets, functions and ‎‎relations, counting methods, mathematical induction, recursion, algorithms, graphs, trees etc, will ‎‎be introduced. During the semester students will learn to recognize and express the mathematical ‎‎ideas graphically, numerically, symbolically, with an emphasis on applications in computer science.

10672116‎ Theory of Computation

This course introduces the theory of computation, including models of computation such as Turing machines; theory of programming languages, including grammars, regular expressions, parsing, syntax and semantics. On the other hand, graph-based models of computation are discussed, such as finite state automata.

10672104‎ Fundamentals of Computer Architecture

This Course is an introduction to Computer System Organization and Architectures, a description of Computer Systems, Neumann/Imperative computational model, memory hierarchy, Central ‎‎Processing Unit (CPU), ARM instruction set and cycle, pipelining and super-pipelining, Control Unit, Micro-Programming and Parallel Computers. Moreover, the interaction between computer ‎‎hardware and system programs like Assembler, Library, Linker, Loader, Interpreter and Operating System is outlined in this course.

10671101‎ Programming principles – 1

This course begins with some basics on computer systems, providing a brief introduction to ‎‎hardware, software and problem-solving. Then, programming using C/C++ is discussed and a ‎‎number of related topics are covered, including: I/O; expressions and arithmetic; control structures ‎‎(if, while, for loop etc.); one and multi-dimensional arrays, string handling, functions, variable scope, recursion, file manipulation and exception handling. Furthermore, this course covers basics of unit testing in programming languages.

10671102 Programming principles – 2

This course covers more advanced programming features in C++. The fundamentals of Object-‎‎oriented Programming using C++, class reusability, information hiding, inheritance, polymorphism, package of classes, graphical user interface, event handling, streaming and Multi-threading.

10211101‎ Calculus-1

Topics discussed in this course are considered an introduction to calculus. They include a review of algebra and functions; odd, even, periodic, increasing, decreasing, inverse, logarithms, and ‎‎exponential functions. Mathematical modelling, rates of change, the derivative, differential ‎‎equations, critical and inflection points and Euler's method are also covered. Moreover, indefinite ‎‎integral, the standard indefinite integrals, and basic rules of indefinite integration, review of ‎‎trigonometry, modelling with trigonometric functions, geometric sums and series, and the ‎‎Fundamental Theorem of Calculus are discussed in this course.

10211102‎ Calculus-II

Calculus-II will introduce students to a variety of new techniques of integration, to some ‎‎applications of integration, and to sequences and infinite series and their convergence and ‎‎divergence criteria, and how they can be used in approximation techniques. Students should ‎‎expect to make appropriate use of the integral to physical problems such as computing areas, ‎‎surfaces and volumes.

10672110‎ Introduction to Probability Theory

This course outlines basic concepts and methods of probability principles and sets theory, random ‎‎variables, operations on random variables, various distribution functions besides analyzing their ‎‎properties (normal distribution, exponential distribution, multivariate normal distribution). ‎‎Moreover, topics on stochastic processes, especially random walks, branching processes, the ‎‎Poisson and Wiener process, applied to real problems, Frequentists and Bayesian statistics ‎‎Simulation of random variables and Monte Carlo methods, Central limit theorem, Basic statistical ‎‎inference, parameter estimation, hypothesis testing, and linear regression are discussed in this ‎‎course.

10221111‎ General Physics

This course offers topics on measurement, dimensional analysis, motion in one-dimension, ‎‎vectors, motion in 2 and 3 dimensions, relative and circular motion, force and dynamics, Newton's Laws, friction, kinetic energy, work, potential energy, energy conservation, systems of particles, center of mass and momentum, elastic and inelastic collisions, rotation (moments of inertia), rolling motion, torque, angular momentum, static equilibrium, gravitational force and Kepler's laws, gravitational potential energy, oscillations, waves (transverse and longitudinal, superposition of waves).

10672114 Communication and Technical Writing Skills

In this course, basic guidelines required to improve communication skills and critical thinking for ‎‎students, to maintain healthy and effective relationships, and to demonstrate appropriate and ‎‎professional ethical behaviour. Also, students learn the best methods of communication for ‎‎negotiation, create convincing messages, ask thoughtful questions, and engage in active listening. ‎‎In addition, the basic knowledge needed to prepare technical reports is introduced to students.

10672218‎ Database Management System

Students, in this course, are introduced to concepts of database systems and architecture, data-‎‎modelling using the E-R Model, the relational model, normalization, operations on relational ‎‎models, relational constraints and relational algebra, SQL (relational Database Standard), security in SQL and, and overview of PL/SQL. Furthermore, an system overview will be provided for the oracle system, distributed databases and client-server architecture.

10672202 Team Project 1

This course a great opportunity for students to develop various non-technical skills, within a ‎‎context that students will find relevant and engaging: a project to create a web-based application. ‎‎These skills help students to succeed both during their time at University and, more importantly, in their future working life. Such acquired skills include group working, self- and peer- learning, ‎‎setting goals and managing progress towards them, innovation and design. Students in this course, will acquire deep knowledge on front-end Web-based application development by leaning concepts in HTML, Javascript, and CSS. During this course, students are encouraged to assess their own knowledge and decide what extra information they need and how they will obtain it throughout the so-called Enquiry-based learning.

10672203‎ Team Project 2

This course is a continuation of course “Team Project 1”, where students will work as groups ‎‎towards building upon what have been achieved in “Team Project 1” by utilizing new technical skills acquired from previous courses, such as DBMS. In this course, students focus on obtaining ‎‎knowledge in backend Web development using PHP language. Topics on PHP covered in this ‎‎course include server-side scripting, control structures in PHP, Object-oriented in PHP, MVC ‎‎programming paradigm, database manipulation, sessions, cookies, and Ajax technology.

10671473‎ Computer Networks

This course introduces the basic notations of communications, protocols, network topologies and ‎‎‎802.xx IEEE standards. It will address detailed descriptions on Network Layer Models (IOS and TCP/IP), including: Application, Transport, Network, Data link and physical. It will then offer a case study of the settings and configurations of Local Area Networks and introduce students to NW security.

10671210‎ Data Structure

This course provides the students with solid foundations in the basic concepts of programming: ‎‎data structures and algorithms. The main objective of the course is to teach the students how to ‎‎select and design data structures and algorithms that are appropriate for encountered problems. ‎‎This course offers the students a mixture of theoretical knowledge and practical experience. The ‎‎study of data structures and algorithms is carried out within an object-oriented framework. Topics covered in this course include: trees, binary search trees, multi-way search trees, queues, stacks, dictionaries, hash tables, graphs, graph traversals, graph algorithms.

10671212 Algorithm Design and Analysis

In this course, students gain knowledge in the asymptotic performance of algorithms, rigorous ‎‎correctness proofs for algorithms throughout inductive proofs and invariants, and in major ‎‎algorithms and data structures including searching, sorting, heaps, hashing, randomized, ‎‎approximation and major graph algorithms. Furthermore, various algorithmic design paradigms ‎‎such as divide-and-conquer, dynamic-programming, greedy methods of analysis are introduced. ‎‎Advanced topics may include network flow, computational geometry, number-theoretic ‎‎algorithms, polynomial and matrix calculations, caching, and parallel computing.

10672224‎ Fundamentals of Artificial Intelligence

This course outlines the design of intelligent agents. It introduces the fundamental problem-‎‎solving and knowledge-representation paradigms of artificial intelligence. The AI programming ‎‎language LISP is studies, state-space and problem reduction methods, brute-force and heuristic ‎‎search, planning techniques, two-player games, and recent developments in AI gaming. In ‎‎knowledge representation and reasoning, propositional and first-order logic and their inference ‎‎algorithms are covered. Finally, the course covers probabilistic approaches to AI, such as Bayesian networks, and machine learning algorithms to improve the agent's performance with experience.

10671421‎ Operating Systems

This course offers an introduction to operating systems, their services, interrupt-oriented systems, ‎‎system calls, system APIs, and system programs. Moreover, classical internal algorithms and ‎‎structures of operating systems, including CPU scheduling, memory management, and device ‎‎management are addressed. This course teaches the basic operating system abstractions, ‎‎mechanisms, and their implementations. It also covers topics including file systems, virtual ‎‎memory, disk request scheduling, concurrent processes, deadlocks, synchronization, security, and ‎‎integrity.

10672205‎ SW Engineering and Communication

This course examines the software development process: analysis, specification, design, ‎‎implementation, integration, testing and maintenance. It covers software processes, project ‎‎management, people management, software requirements, system models, architectural and ‎‎detailed design, user interface design, programming practices, verification and validation and ‎‎software evolution. Structured software engineering techniques will also be examined.  The ‎‎course will combine a strong technical focus with a capstone project providing the opportunity to ‎‎practice engineering knowledge, skills, and practices in a realistic development setting with a real ‎‎client.