Provides intensive training to non-IT graduates. Learn the key components of IT languages required to build software applications. The presentation of each course is always tailored to the background, interests, and objectives of the participants.

  • Introduction within Computer Science - 2 days
  • Logic Computation - 2 days
  • Analysis and Design - 2 days
  • C Language - 5 days
  • C++ Language - 5 days
  • Working within a team - 5 days
  • OOP Language (e.g. C++/Java/MFC/C#/GWT/Android/etc) - based on a project requirements - 5 days
  • Working within a team - 10 days

Proposed Agenda

  • Computer Architecture

    • Internal structure of processor/CPU – registers, PC, ALU, CU, etc.
    • Bus architecture and processor interaction with memory and peripherals.
    • Memory hierarchy in terms of cache memory, main memory, secondary storage.
    • Memory organisation into bytes and words; big-endian and little-endian organization.

    Data Representation

    • Representation of strings,Binary and hex integer representations and conversions,Signed and unsigned formats;
    • 2’s complement,Computer integer arithmetic, Fixed-point arithmetic.
  • Argumention

    • what is logic?
    • what is a rational argument?
    • what are common fallacies?

    Boolean algebra

    • examples
    • axiomatisation
    • normal forms
    • connections with hardware design and programming
    • logic gates and circuits


    • simple arithmetic induction
    • weak and strong induction

    Structured induction

    • language

    Syntax of propositional logic and predicate logic

    • translating English into logical formulas and vice versa
    • propositional semantics – truth tables
    • first 0rder Semantics
    • satisfiability, validity, equivalence

    Introduction to algorithms

    • what are algorithms?
    • why study algorithms?


    • efficiency of algorithms
    • elementary operations
    • examples of maths algorithms
    • recurrence and recursion
    • optimisation problems
  • Introduction to Programming

    • what is programming? Programs and algorithms
    • compilers and interpreters
    • debugging programs

    Introduction to Functional Programming

    • core functional programming ideas
    • programming with relations
    • recursion and recursive data structures
    • lazy evaluation
    • inference rules
    • unification and resolution
    • negation as failure
    • searching
    • role of types
    • higher order functions

    Introduction to Imperative Programming

    • core imperative programming ideas: sequence, selection, iteration, recursion, assignment and variables
    • methods, parameters, scope and lifetime
    • arrays and files

    Program design in the small

    • developing small programs using methods and functions
    • designing and implementing simple algorithms and data structures
    • good programming practice and defensive programming

    Greedy algorithms

    • what are greedy algorithms?
    • divide and conquer algorithms
    • what are divide and conquer algorithms?
  • Introduction to the C Language

    • what is a programming language?
    • what is a compiler?
    • the C language and its advantages
    • C syntax and constructs
    • the structure of a C program

    Steps to Compiling a Program

    • compilation phases
    • multi-file compilation
    • header files
    • the linking process
    • building an executable version of a C program
    • debugging a C program
    • examining and running a C application program

    Data Types and Variables

    • data types
    • type casting
    • type definitions and structures
    • union vs. struct
    • initializing variables
    • extern declarations
    • operands, operators, bit-wise operators, and arithmetic expressions

    Control-flow Statements

    • control structures
    • functions
    • problem breakdown with functions

    Arrays, Pointers, and Strings

    • arrays
    • initializing arrays
    • pointers, addresses and memory
    • address arithmetic
    • strings and string constants

    Memory Allocation

    • memory organization and storage classes
    • passing parameters by address
    • passing arrays as parameters
  • See our defined C++ training course. Following the proposed topics, we need to accomodate the new members with C++ as starting OOP language. The course level will be adjusted based on the programming level acquired in the first training weeks.

  • See our defined Java training course. Following the proposed topics, we need to accomodate the new members with Java as starting OOP language. The course level will be adjusted based on the programming level acquired in the first training weeks.

  • Receiving small tasks, working with colleagues within a team during this week. Help the new member to accomodate with the software development process, help him to understand the used tools and integrate him within team meetings.

  • Agenda needs to be defined based on project requirements.

  • Receiving well defined tasks with fixed specification and specified deadline. Assign a team member as permanent mentor for these days.

Contact us now!

Contact us now!

to request this training