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.‎