Computer Science Apprenticeship Program An-Najah National University

You are here

Themes

Computer Architecture involves the selection and interconnection of hardware components to create computers that meet functional, performance and cost goals. As a result, the development of effective computer architectures is a central part of technology development, and an understanding of the capabilities of architectures is important for developers of higher-level systems.

Courses:

  • Computer Architecture
  • Operating Systems

Information Systems in Business addresses the role and impact of software systems within organisations. Many large scale software development projects fail either because business requirements, organisational structures or inter-organisational relationships are less than fully reflected in the design or deployment of the new software.

Courses:

  • Business management and automation
  • Information Systems & Business Process Modelling
  • Business Feasibility Study

Mobile Computing and Networks is concerned with the provision of an infrastructure whereby distributed computational devices can co-operate efficiently and securely. Both wired and wireless networks are increasingly ubiquitous, and the importance of networked computing increases with the number and diversity of networked devices and mobile applications.

Courses:

  • Computer Networks
  • Mobile Systems
  • Cryptography and Network Security

Algorithms capture the way in which a problem is to be solved. As a result, algorithms are central to software development, and a wide range of techniques have been developed that underpin the design and analysis of algorithms. This theme explores a wide range of algorithms and data structures, investigates how their properties can be analysed systematically, and explores how they can be implemented efficiently.

Courses:

  • Algorithm Design and Analysis

Software Engineering is concerned with all aspects of software production, from the early stages of requirements gathering, through system design and implementation, to maintenance and evolution. Software Engineering is important because software projects may involve large teams of people, diverse or conflicting requirements, tight timescales and limited budgets.

Courses:

  • SW Engineering
  • Advanced SW development
  • User Experience
  • Component based SW development
  • Quality assurance and SW testing
  • Introduction to program verification

Web and Distributed Systems are among the most widely used computing systems, and are increasingly central to commercial, educational and leisure activities. As a result, many organisations, and thus their customers, are heavily dependent on the robustness and scalability of their distributed systems.

Courses:

  • Fundamentals of Databases
  • Distributed Computing
  • The Internet of Things: Architectures and Applications

 

Learning and Search in Artificial Intelligence is concerned with constructing intelligent systems that can adapt to a changing and uncertain environment. Applications in which learning and search are central include game playing, financial prediction and mobile robotics.

Natural Language, Representation and Reasoning is concerned with techniques and tools for capturing and making use of knowledge in computer systems, and for using natural language to communicate with users about that knowledge. Knowledge representation is important in many applications, from the description of web pages in the semantic web, to the interpretation of natural language statements in grammar checkers and machine translators.

Courses:

  • Machine Learning and Optimisation
  • AI and Games
  • Symbolic AI
  • Natural Language Systems

Visual Computing is concerned with the acquisition, analysis and production of visual data. Visual Computing is ubiquitous; its applications include computer games and virtual environments, scientific data visualisation, face recognition and medical imaging.

Courses:

  • Introduction to Computer Graphics
  • Virtual Reality
  • Image Processing and Computer Vision

Computer Languages are central to the development of software systems. A good understanding of programming languages is important for software developers, and many sub-disciplines of computer science use specialised languages that suit their specific requirements.