Topic outline

  • Key Unit Competency: To be able to identify, use and maintain safely laptops and other portable devices.

    INTRODUCTORY ACTIVITY

    Apply the following scenario:
    You are in computer lab with different devices on table.

    Figure 1.1. Mobile devices

    Answer the following questions:

    1. Name the devices you see on your table

    2. Describe parts of each device.

    3. Describe the common use and functions of these devices


    1.1. PORTABLE DEVICES
         
         Learning Activity 1.1

    1) You are sited in your computer lab, observe well each device and then answer following
         questions:

    a. Describe the portable devices available in lab;

    b. Discuss the similarities and differences between available devices;

    c. Enumerate other portable devices which are not in your lab.

    2) In supermarket A, a laptop costs 350,000 Rwf while in supermarket B, laptop of same
       quality costs 300,000Rwf. Select where you will prefer to buy your laptop and explain
         why.
     1.1.1. Portable devices definition

    A portable device is a device that can easily be carried. It is a small form of a
    computing device that is designed to be held and used in the hands.

    A portable device may also be called a handheld device or mobile device. Portable
    devices are primarily battery powered devices with base computing resources in
    the form of a processor, memory, storage and network access. Portable devices are
    becoming an increasingly important part of personal computing as the capabilities
    of devices like laptops, tablets and smartphones continue to improve.

    11.2. Types of portable devices

              a. Laptops

    A laptop computer is a portable personal computer powered by a battery, or an
    Alternating Current (A.C) cord plugged into an electrical outlet, which is also
    used to charge the battery. Laptops have an attached keyboard and a touchpad,
    trackball, or isometric joystick used for navigation. Sometimes, a wireless mouse
    can also be used on a laptop. A wireless mouse is a computer mouse that needs no
    wires to send signals from the mouse to a computer. Wireless mouse technology
    predominantly uses radio frequencies (RF) to send signals from the mouse to the
    computer. Like other radio technologies, this requires a transmitter and a receiver.
    The mouse transmits radio signals to a receiver, which is itself connected to the
    computer hardware, normally via a wire. This kind of wireless mouse is very reliable,
    and capable of transmitting the mouse’s movements to the receiver from across a
    room. A laptop also has a thin display screen that is attached and can be folded
    flat for transport. Laptop computer is also known as Notebook computer or simply
    Notebook.

    The memory and storage capacity of laptop computer is almost equivalent to the PC
    or desktop computer. It also has the hard disk, DVD/CD optical disk drive, different
    connectors etc.
               b. Smartphones

    A smart phone is a handheld personal computer with a mobile operating system and an
    integrated mobile broadband network connection for voice, SMS, and Internet data
    communication. Most if not all smartphones also support Wireless Fidelity (Wi-Fi). Smartphones are typically pocket-sized, as opposed to tablets, which are much
    larger. A smartphone is a cellular phone that performs most of the functions of a computer.

    A smart phone supports all features of PDA plus mobile phone features

    Smartphone characteristics/features

    • Media players

    • Internet access

    • Global Positioning System(GPS)

    • Wireless Fidelity (Wi-Fi)

    • Camera

    • Sensor

          c. Mobile phones (cell phones)

    A mobile phone or cell phone (is a long-range, electronic device used for mobile
    telecommunications (mobile telephony, text messaging or data transmission) over
    a cellular network. Today, this type of portable device is being dominated by smart
    phone as technology improves.

          
            
                     d. PDAs

    A Personal Digital Assistant (PDA), also known as a palmtop computer, or Personal
    Data Assistant, is a mobile device that functions as a personal information manager.
    Newer PDAs commonly have color screens, audio capabilities and web browsers that
    enable them to be used as mobile phones (smartphones) or portable media players.
    Many PDAs can access the Internet, intranets (communication within LAN) or
    extranets via Wi-Fi, or Wireless Wide Area Networks. Many PDAs employ touch screen
    technology.
                       e. Tablets

    A tablet computer, or simply tablet, is a mobile computer with a large screen,
    circuitry and battery in a single unit with no built in keyboard. Some tablets include
    detachable keyboards have been sold since the mid-1990s. Such tablets include
    iPad, HP Touchpad, Android)
    Tablets are very similar to smartphones. They have an Internet connection via a
    wireless connection including 3G/4G. Applications can be downloaded and installed.
    Sensors including speech recognition.

    Application Activity 1.1.

    6. Describe the difference between PDA and Smartphone

    7. Compare a smart phone and Tablet

    8. According to the comparison between laptop, Smart phone, Cell
        phone, PDA and Tablet, which one is most useful? Explain why.

    1.2 LAPTOP COMPUTER FUNDAMENTALS

         Learning Activity 1.2.

    1) In the computer lab observe laptop computers and make groups and answer the
         following questions:

    a) Discuss common uses of laptop computer in schools and society in general

    b) Describe the external components of a laptop

    c) Describe the internal components of a laptop

    d) Investigate why laptop has Fn key on keyboard while desktop keyboard does not
        have it

    e) With your laptops connected to Internet, search for steps to be followed while
        applying for National ID at www.irembo.gov.rw site

    f ) In the computer lab, identify the following features of a laptop: AC power port,
        ethernet port VGA port, vents, HDMI port, USB ports, camera.

    g) Open a laptop and identify all its internal components 1.2.1. Common uses
        The first laptops were used primarily by business people who needed to access and
        enter data when they were away from the office. The use of laptops was limited due
        to expense, weight, and limited capabilities compared to less expensive desktops.
        
    Some common uses for laptops

    Laptop is used in:
    • Education field (example: Laptops are used by teachers in preparation of
       teaching and learning materials)

    • Medicine field (example: Laptops are used by doctors to keep patient records)

    • Business field (Electronic commerce uses Laptops for example in marketing
      and selling products or good and services.)

    • Accessing online services (example: National ID application at www.irembo.
       gov.rw)

    • Entertainment field (example: Playing games and watching movies while
      traveling)

    • Communication field (example: when you send and receive an email in a
      public place)

    • Security field (example: Laptop can be used to fight against hackers: people
       who access personal information without authorization of the owner. Notice
       that accessing of personal information without permission is punishable crime).
     
    1.2.2. Laptop features

    The most significant feature of a laptop is its compact size. The design of the laptop
    places the keyboard, screen, and internal components into a small portable case.
    Common Characteristics/features of Laptops:

    • Small and portable;

    • An integrated display screen in the lid;

    • An integrated keyboard in the base;

    • They run on AC power or a rechargeable battery;

    • Laptops support hot-swappable drives and peripherals.

    1.2.3. Evolution (History) of laptops

    In 1983, Gavilan SC is the first machine marketed as a “laptop”

    In 1990, Intel introduces 80386SL processor which uses low power; quickly
                 incorporated into many laptops.

    In 1991, Apple PowerBook introduces First laptop Ethernet port. Modem speeds
                 reach 14,400 bits/sec.

    In 1996, First Pentium laptop with USB, first “three spindle” machine, with floppy
                 hard disk, CD-ROM.

    In 1999, Laptop manufacturers use PCI slot to enable Wi-Fi connectivity. Apple
                  brands WiFi as AirPort, incorporates a slot into all of its laptops.

    In 2005, Laptop computers outsell desktops for the first time.

    In 2010, HDMI ports become common on laptops. Apple iPad was introduced.

    The components of a laptop

    Components may be located in different places for different models.

    a. The external components of a laptop

    The Laptop and the desktop computers use the same types of ports so that
    peripherals can be interchangeable. Ports, connections, and drives are located on
    the front, back, and sides of the laptop due to the compact design. There are status
    indicators, ports, slots, connectors, bays, jacks, vents, and a keyhole on the exterior
    of the laptop.

    As port a laptop has an AC power port, an ethernet port, a VGA port a HDMI port, a
    USB port a sound in (microphone) port and a sound out (speaker) port. Beside these
    ports a laptop has a battery latch at its bottom
    On the user view, which is normally visible when a laptop is being used one can see
    the following components:

    1) Web camera               4) Keyboard              7) Left Click button
    2) LCD                            5) Touch pad
    3) Power button                6) Right Click button

    Note:
    • The location of the power button may depend on the mark of the laptop

    • Some laptops may not have an in-buitl CD/DVD disk drive while in other types,
      the CD/DVD disk drive can be located on left or right side. For those with no
      such drive an external drive that can be connected to the laptop through the
      USB port is often used.

    • A desktop monitor can be connected to a laptop. In such cases, using the
      function key can allow one to toggle the screen from the laptop to the desktop
      monitor or view both at the same time.

        b. The internal components of a laptop

    The central circuit board (motherboard) makes up a complex electronic system. A
    motherboard provides the electrical connections by which the other components of
    the system communicate. It includes many components such as Central Processing
    Unit (CPU), Random Access memory (RAM), etc. Laptop motherboards and other
    internal components installation vary by manufacturer and are proprietary.
    Internally and at the top a laptop after removing te cover there is access to the
    motherboard, speakers, cooling fans, wireless card, CMOS battery and audio board
    while under the bottom cover there is access to the hard drive and RAM module but
    this configuration may change from laptop mark to another

       Application Activity 1.2

    1) Suppose that your computer laptop is not connected to Internet. If there is no
         wireless connection,

    a) which of the following cables can be used to have the connection?

    i. VGA (Video Graphic Array) cable;

    ii. Network cable;

    iii. AC Power cable.

    b) Describe the role of the remaining cables.

    2) Choose from a laptop in the computer lab one document in PowerPoint and
        project it by using the Projector of your school.

    3) Connect a desktop monitor to a laptop computer and then do the following:

    i. Display the contents from the laptop to both screens;

    ii. Display the contents from the laptop to only desktop monitor;
        Differentiate HDMI port from USB port.
        Open a laptop and identify all its internal parts

    1.3. Compare and contrast laptop and desktop components

    Both desktop and laptop computers can perform most of the same functions.
    However, these two kinds of computers are built very differently and the parts
    are not interchangeable. Few components can be shared between desktops and
    laptops like the expansion devices that are attached to laptop devices with USB
    ports, parallel ports, and PC Cards.

    Laptop components are proprietary. So you may not be able to use components
    made by one laptop manufacturer to repair a laptop made by another manufacturer.
    Therefore, that technicians may have to obtain certification for each laptop
    manufacturer they support. The following table summarizes the specifications
    between a laptop and desktop computers.
    Expansion devices are attached to laptops and desktops differently. Laptops have
    limited space so the expansion bays on laptops are designed to allow different
    types of drives to fit into the same bay. Drives are hot-swappable and are inserted or
    removed as needed.

    As both desktop and laptop computers are electronic devices, they manage power.
    The optimization of power management can be configured differently through the
    Control Panel feature of the running operating system. This configuration of power
    management can also mark the difference between a laptop and a desktop.

    Application Activity 1.3

    Go through the steps for power option Edit plan. To do this in Windows 10 go
    through these windows: “Control panel”window, “Hardware and Sound”window,
    “Power Options” window, Create a Power Plan and Edit Plan Setting. Then:

    1. Set your laptop so that it can turn off the display:

    i. After 3 minutes when powered by battery

    ii. After 7 minutes when plugged in

    3. Discuss different reasons why there is no need of large cooling devices
        in a computer lab containing laptops.

    4. Discuss the similarities and differences between a laptop and desktop
        expansion components

    5. Open a laptop and a desktop and identify the difference between their
        motherboards

    1.4. SMARTPHONES, PDAs, TABLETS

    Learning Activity 1.4.

    All companies deal with large amount of data. Using different portable devices, users
    can collect and access data from the outside of the organization.

    1. Identify the portable devices other than laptops that are used in your
        school to allow teacher and student to access materials on Internet.

    2. Discuss the common uses and features of those identified devices in
        above question

    The Smartphones, PDAs, tablets are new types of small personal computing devices
    that have been introduced in the mid-1990s and these are referred to as handheld
    computers. This type of computer is named handheld computer because it can fit in
    one hand while you can operate it with the other hand. Because of its reduced size,
    the screen of handheld computer is quite small.

    1.4.1. Common uses and standard services of Smartphones, PDAs and
          tablets

    Like the laptops, these computers are used by mobile employees whose jobs require
    them to move from place to place.

    They are used in different fields like the following:
    • Communication (example: - when you send and receive an email)
     
    −− Voice over Internet Protocol (VoIP) – voice/video calls.

    −− Instant text message ex: chatting using WhatsApp

    −− Streaming music/video content

    −− Communication via social networking applications)

    • Entertainment (example: when you play games and watch movies while
       traveling)

    • Business (Electronic commerce uses these computers for example in marketing
    and selling products or goods and services.)

    • Education field (Smartphones, PDAs and tablets are teaching and learning
       tools. They are used in performing calculations, note taking etc.)

    • Smartphones, PDAs and tablets have storage which can store information like
       contact information (names, addresses, phone numbers, e-mail addresses)

    • Smartphones, PDAs and tablets can remind you of appointments (clock, alarm
        functions)

    1.4.2. Common features of Smartphones, PDAs and tablets

    Smartphones, PDAs, tablets have operating systems which allows them to run
    multiple applications. Their Operating systems have features like contacts, email,
    calendar, appointments, tasks, games, media etc.

    Examples of mobile operating systems:

    a. Apple’s iOS

    b. Android OS

    c. Windows Phone OS

    d. BlackBerry OS

    Apart from the operating system, tablets have in common a wi-fi, capability to have
    their memories expanded, a high resolution display with touch technology and a
    QUERT keyboard

    Application Activity 1.4.

    Using a smartphone or a tablet or IPad do the following:

    1. Download and install one of these applications from Play Store:
        WhatsApp, Google Chrome and Facebook.

    2. Send an email message to one of the classmates and ask him/her to reply.

    3. Search the application called “Polaris Office” in Play Store install it and
        state its function?

    1.4.3. Standards Service of Smartphone, PDA and Tablet

    Some of the services that can be found in smartphones, PDA, and tablets include;

    • Appointment calendar

    • MP3 player

    • Web browser

    • E-mail access, in addition to text messaging

    • Mini-keyboards or onscreen keyboards

    • Bluetooth

    • Character recognition (allowing for handwritten input)

    • Synchronization of information with desktop or laptop computers

    • Voice recording

    • Digital camera

    • Video recording

    • Location tracking through GPS(Global Positioning System)

    • Wi-Fi

    • Microsoft Office (MS) compatible applications (Native with Pocket PC operating
      systems; Palm operating systems may require third-party software)

    1.5. LAPTOP AND PORTABLE DEVICES CLEANING PROCEDURES
     
          Learning Activity 1.5

    Observe the figure below and answer the followed questions

    1. Discuss what would happen if a drink was spilled into the keyboard of a
        laptop.

    2. How can you prevent this laptop to be damaged?

    3. What can you do if the laptop and water are in contact?

    4. What can you consider while choosing cleaning materials and products?

    5. Describe different laptop parts which can be cleaned.

    6. How can you keep waste products after cleaning a laptop?

    As laptops are mobile, they are used in different types of environments. Some
    environments can be hazardous to a laptop. Even eating or drinking around a laptop
    creates a potentially hazardous condition.

    It is important to keep a laptop clean and to ensure that it is being used in the most
    optimal environment possible. Proper routine cleaning is the easiest, least expensive
    way to protect and to extend the life of a laptop.

    It is very important to use the right products, cleaning materials and procedures
    when cleaning a laptop. Always read all warning labels on the cleaning products.

    Before starting to clean any part of a laptop, turn it off, disconnect all attached
    devices, disconnect it from the electrical outlet and remove its battery. To remove
    the battery move the battery lock to the unlocked position, hold the release lever in
    the unlock position and remove the battery.

    To clean laptop keyboards blow compressed air between the keys then slide a soft
    cloth over the laptop keyboard in order to remove the dirt. The cleaning can be
    done using compressed air whereby this air is blown into the laptop through the
    vents. Use tweezers to remove any debris.

    To clean LCD screens slide a soft cloth slightly moistered with water or LCD cleaner
    over the laptop display. A special attention should be taken on using products
    specifically designed for cleaning LCD displays.

    To clean touch pads slide a soft cloth over surface of the touch pad gently with an
    approved cleaner. Never use a wet cloth and use a soft cloth with only approved
    cleaning solution.

    Application Activity1.5

    1. Clean a keyboard and a screen of a laptop in the computer lab.

    2. Discuss different Laptop Keyboard, LCD screen and touchpad Cleaning
        materials, products and Procedures.


    END OF UNIT ASSESSMENT ACTIVITY

    1. Discuss the advantages and disadvantages of each type of computer
        below:

                  Laptop computer

                  Tablet

                 Smartphone

    2. Describe what is used for standalone and networked laptop computer.

    3. Compare smartphone features and cell phone features

    4. Is a Laptop hardware maintenance difficult comparing to a desktop
        computer maintenance? Explain.

    5. Give a clear difference between VGA and HDMI connectors.

    6. Explain how you can take care your laptop.

    7. Exchange a track of music from one device to another. What do you use?
        Are there other.



    • INTRODUCTORY ACTIVITY

      Read the following scenario and after answer questions:

      In a bank, a Teller has the role of serving the clients. He/she has to organize the
      banknotes of same values together and coins of same values together that he/she has
      to serve to clients. When a client arrives in the bank, he/she chooses a line to join in the
      front of a Teller and the line is formed according to the arrival of clients.

      Mr. KARENZI wants to pay 78450 Rwf as his school fees to the bank and he must
      organize banknotes and coins before deposit money to facilitate the teller to not mix
      the banknotes and coins


      Answer the following questions:

      1. Observe the above figure and describe what you see;

      2. Where a new arrived client will line up?

      3. Using the above figure who is going to be served first by the teller 1 or 2;

      4. Discuss how KARENZI is going to organize bank notes and coins before
           depositing;

      5. Discuss how the teller is going to keep money deposited by Karenzi

      2.1. Introduction to Data Structures

      Data Structure is a way of collecting and organizing data in such a way that we
      can perform operations on these data in an effective way. Data Structures is about
      rendering data elements in terms of some relationship, for better organization and
      storage.

      Example: Library is composed of elements (books) to access a particular book
      requires knowledge of the arrangement of the books.

      2.1.1. Basic types of Data Structures

      Anything that can store data can be called as a data structure, hence Integer,
      Float, Boolean, Char etc., all are data structures. They are known as Primitive Data
      Structures. And we also have some complex Data Structures, which are used to store
      large and connected data and are called non primitive data structure or Abstract
      Data Structure.


      Example: Array, Linked List, Tree, Graph, Stack, Queue etc.
      All these data structures allow us to perform different operations on data. We select
      these data structures based on which type of operation is required.

       2.1.2. Importance of data structures

      The data structures have the following importance for programming:

      • Data structures study how data are stored in a computer so that operations
         can be implemented efficiently

      • Data structures are especially important when there is a large amount of
         information to deal with.

      • Data structures are conceptual and concrete ways to organize data for efficient
         storage and manipulation

      2.1.3. Data Structure Operations

      Beside the simple operations performed on data (unary operators, binary operators and
      precedence operators) seen in Senior Four, the data appearing in our data structures are
      processed by means of other operations. The following are some of the most frequently
      used operations.

      Traversing: Accessing each record exactly once so that certain items in the record may be
                           processed.

      Searching: Finding the location of the record with a given key value or finding
          the locations of all records which satisfy one or more conditions

      • Inserting: Adding a new record to the structure.

      Deleting: Removing a record from the structure.

      Sorting: Arranging the records in some logical order (e.g., in numerical order
         according to some NUMBER key, such as social security number or account number).

      Merging: Combining the records of two different sorted lists into a single sorted list.

      It is important for every Computer Science student to understand the concept of
      Information and how it is organized or how it can be utilized.

      If we arrange some data in appropriate sequence, then it forms a Structure and gives us
      a meaning. This meaning is called information. The basic unit of information in computer
      Science is a bit, binary digit. So we found two things in information: One is Data and the
      other is Structure

      2.2 Array of elements in data structure

      LEARNING ACTIVITY 2.1.

      Study the following table

      Answer the following questions.

      1. Suggest a name for the above table?

      2. How many rows and columns in the above table?

      3. Identify the location of the value 95 in the above table?

      Arrays hold a series of data elements, usually of the same size and data type.
      Individual elements are accessed by their position in the array. The position is given
      by an index, which is also called a subscript. The index usually uses a consecutive
      range of integers, (as opposed to an associative array) but the index can have any
      ordinal set of values

      Some arrays are multi-dimensional, meaning they are indexed by a fixed number of
      integers, for example by a tuple of four integers. Generally, one- and two-dimensional
      arrays are the most common. Most programming languages have a built-in array
      data type.

      In computer programming, a group of homogeneous elements of a specific data
      type is known as an array, one of the simplest data structures.

      2.2.1. Arrays dimensions:

      A dimension of array is a direction in which you can vary the specification of an
      array›s elements. An array can be of one or many dimensions.

      a. One-dimensional array.

      Example: a [3]

      It is an array called a with 3 elements. The elements of the array are logically
      represented by the name of the array with in brackets its index or positions. For the
      one dimensional array a with 3 elements, elements are written like a[0], a[1] and
      a[2]. The indexes start always by 0. Graphically, it is

      b. Multi-dimensional arrays
          Example:

               Two dimensional array ex: a[2][7]as Integer
              Three dimensional array ex: a[3][2][5]as Integer

      2.2.2. Two dimensional array

      A Two dimensional Array is a collection of a fixed number of elements (components)
      of the same type arranged in two dimensions.

      The two dimensional array is also called a matrix or a table. The intersection of a
      column and a row is called a cell. The numbering of rows and columns starts by 0

      Example:
      The array a[3][4] is an array of 3 rows and 4 columns. In matrix representation, it
      looks like the following:
      a[i][j] means that it is an element located at the intersection of row i and column j.
      Each element is identified by its row and column

      2.2.3. Two dimensional array declaration

      The syntax for declaring a two-dimensional array is:
      SET Array name=Array [row size][column size] of Data type

      Where row size and column size are expressions yielding positive integer values,
      the two expressions row size and column size specify the number of rows and the
      number of columns, respectively, in the array.

      Examples:

      1. SET a=Array[2][7] of Integer

      2. SET b=Array[4][3] of Integer

      Notice that the number of elements =row size*column size

      The examples above defines respectively arrays named a and b with 14 (2*7) elements
      and 12 (4*3) elements. The expression marks [0] [0] will access the first element of
      the matrix marks and marks [1] [6] will access the last row and last column of array a.

      If the array marks if filled with the elements 80, 75, 76, 75, 55, 70, 55, 70, 65, 85, 35
      and 59, we get the following table.

      2.2.4. Two dimensional array initialization

      When a two-dimension array has been declared, it needs to be assigned values for
      its elements. This action of assigning values to array elements is called initialization.
      Two-Dimensional array is initialized by specifying bracketed values for each row. For
      the case of array of integers, the default values of each element is 0 while for others
      the default values for other types is not known.

      For the case of an array of 3 rows and 4 columns, if the name is A and the type of
      elements is integer, the initialization is:

      int A[3][4]={{A[0][0], A[0][1], A[0][2], A[0][3]}, /* initializers for row indexed by 0 */
      {A[1][0], A[1][1], A[1][2], A[1][3]}, /* initializers for row indexed by 1*/
      {A[2][0], A[2][1], A[2][2], A[2][3]} /* initializers for row indexed by 2 */
      };

      The nested braces, which indicate the intended row, are optional. The following
      initialization is equivalent to the previous initialization.

      Int A[3][4]={A[0][0], A[0][1], A[0][2], A[0][3], A[1][0], A[1][1], A[1][2], A[1][3], A[2][0],
      A[2][1], A[2][2], A[2][3]};

      An example of marks for 3 students in 4 courses. The array will look like this:
      If the table is called marks, marks [1][3]=15; where the row position is 1 and the
      column position is 3.

      The expression marks [0] [0] will access the first element of the matrix marks and
      marks [2] [3] will access the last row and last column.

      Syntax to initializing two-dimensional arrays

      The two dimensional array marks which will hold 12 elements can be initialized like:

      BEGIN
      SET marks=Array[3] [4] of Integer
      marks[0][0]=18
      marks[0][1]=16
      marks[0][2]=14
      marks[0][3]=19
      marks[1][0]=10
      marks[1][1]=20
      marks[1][2]=12
      marks[1][3]=15
      marks[2][0]=15
      marks[2][1]=17
      marks[2][2]=18
      marks[2][3]=16

       END

      APPLICATION ACTIVITY 2.1.

      1. Four secondary schools in RUHANGO District are displaying the number
         of students per year that they registered in 2015, 2016, 2017 and 2018.

      a. How many rows and columns will be in the table that contains the
          displayed data?

      b. Declare an array called population to contain the needed data.

      c. Initialize the array population with numbers of your choice.

      2. Given below the case of array a:

      a[0][0]     1      a[1][0] 54

      a[0][1]     2       a[1][1] 23

      a[0][2]      3       a[1][2] 11

      a[0][3]     13          a[1][3] 45

      a[0][4]     17          a[1][4] 31

      a[0][5 ]    34          a[1][5] 65

      a[0][6]     19              a[1][6] 26

      a. Give the size of the above array;

      b. Declare array a;

      c. Initialize the above array.

      2.2.5. Accessing two dimensional array elements

      LEARNING ACTIVITY 2.2.

      What do the following statements mean:

      WRITE marks[1][2] ;
      What are the meanings of the above statements

      • Reading (storing) two dimensional array elements

      There exist two ways of accessing the elements of an array. The elements’
      values of the array can come from the input devices or from a given file so that
      these elements are written into the array. The function used is READ or other
      versions of it, depending on the programming languages used for programs
      writing.

      For example READ marks[1][2] stores a value in second row, third column
      location of the array marks.

      To store multiple values into array you must use a FOR loop.

      Syntax:
      FOR i=initial value TO upperlimit DO
      FOR j=initial value TO upperlimit DO
      READ array name[i][j]
      i=i+1
      j=j+1
      END FOR
      END FOR
      Where i refers to the row position and j refers to the column position.

      Initial value=lower limit

      Example: Write an algorithm of a program that allows the user to enter (store) two
      dimensional array elements
      BEGIN
      SET marks=Array [3] [8] of Integer
      Use variable i as integer
      Use variable j as integer
      FOR i=0 TO 2 DO
      FOR j=0 TO 7 DO
      READ marks[i] [j]
      i=i+1
      j=j+1


      END FOR
      END FOR
      END


      Writing (displaying) two dimensional array elements

      To access two dimensional array elements’ values, we can also take the elements’
      values of an array residing in the memory of the computer and write them in any
      output device or a given file.

      To write (display) elements from an array in an output device or other file, use a
      WRITE function or other versions of it depending on the programming languages
      used for programs writing together with the array name and location (index) of the
      element. In that case the elements of a two dimensional array can be displayed by
      the following syntax:

               WRITE Array name [i][j]

      Where i refers to the row position and j refers to the column position.

      To display a single value of an array you must provide the array name and index to
      write operation example:

      Example for writing on screen a two dimensional array element
      WRITE a[1][2], i=1 and j=2).

      Example: Write an algorithm of a program that displays stored two dimensional
      array marks’ elements
      BEGIN
      SET a=Array[3][8] of integer
      Use variable i As integer
      Use variable j As integer
      WRITE “stored two dimensional array elements are:”
      FOR i=0 to 2DO
      FOR j=0 to 7DO
      WRITE a[i][j]
      i=i+1
      j= j+1
      END FOR
      END FOR
      END

      Algorithm for reading and printing values in arrays

      Example: Write an algorithm that allows the user to enter(store) two dimensional
                     array elements and displays those stored elements.



      APPLICATION ACTIVITY 2.2.

      1. Write an algorithm to do the following operations on a two dimensional
           array A of size m x n.

      • Declare the array A;

      • Read the element ‘values into matrix of size m x n

      • Output the elements’ values of matrix of size m x n on the screen;

      • Calculate the sum of all elements’ values of matrix of size m x n;

      • Write a programme in C++ Language where you apply the above questions

      2. Write an algorithm that allows a user to input data through input device
          and display the smallest element’ s value on the screen.

      3. Write a programme in C++ language that implements the above
          algorithm.

      4. Consider a 2 by 3 array T

      a. Write a declaration of T

      b. How many rows does T have?

      c. How many columns does T have?

      d. How many elements does T have?

      e. Write name of elements in second row

      f. Write the name of element in third column

      g. Write a single statement that sets the elements of T in row 1and column 2
          to zero

      h. Write a statement that inputs the values of T from keyboard

      i. Write a statement that displays the elements of first row of T

      2.3. ABSTRACT DATA STRUCTURE

      LEARNING ACTIVITY 2.3



      1. Observe and analyze the above figure

      2. Explain different procedures that you can use to arrange the above books.

      2.3.1. Definition of Abstract Data type in data structure.

      Abstract Data structure is a mathematical model of a data structure that specifies the
      type of data stored, the operations supported on them and the types of parameters
      of the operations with no implementation. Each program language has its own way
      to implement abstract data type.

      2.3.2 Importance of abstract data type in data structures

      • Data structures study how data are stored in a computer so that operations
      can be implemented efficiently;

      • Abstract Data structures are especially important when you have a large
         amount of information;

      • Conceptual and concrete ways to organize data for efficient storage and
         manipulation

      2.3.3. Abstract Data type Operations

      The data appearing in our data structures are processed by means of certain
       operations. Following are some of the most frequently used operations.

      • Searching: Finding the location of the record with a given key value or finding
        the locations of all records which satisfy one or more conditions;

      • Sorting: Arranging the records in some logical order .

      2.4. List

      2.4.1. Introduction

      A list is a collection of data in which each element of the list contains the location of
      the next element.

      In a list, each element contains two parts: data and link to the next element. The data
      parts of the list hold the value information and data to be processed. The link part
      of the list is used to chain the data together and contains a pointer (an address) that
      identifies the next element in the list.
      In the list you can do the following operations:

      LIST: Creates an empty list;

      INSERT: inserts an element in the list;

      DELETE: deletes an element from the list;

      RETRIEVE: retrieves an element from the list;

      TRAVERSE: traverses the list sequentially;

      EMPTY: checks the status of the list.

      Example of a list:

      A bank has 10 branches created one after another at different dates. The Bank
      Inspector who wants to visit all of them can follow the order of their creation. He/
      she will be informed only about the name and location of the first branch. When he
      reaches that branch, the Branch Manager will tell him/her the address of the next
      branch, and so one.

      After visiting all branches, the Bank Inspector will realize that he/she has a list of the
      bank branches.

      Graphically, it will be represented like a list where each branch is considered as a
      node containing the names of the branch and the address of the next branch.

      Difference between Arrays and Lists

      A list is an ordered set of data. It is often used to store objects that are to be processed
      sequentially.

      An array is an indexed set of variables, such as dancer [1], dancer [2], dancer [3] It is
      like a set of boxes that hold things. A list is a set of items. An array is a set of variables
      that each store an item.

      In a list, the missing spot is filled in when something is deleted. While in an array, an
      empty variable is left behind when something is deleted.Simply a list is a sequence
      of data, and linked list is a sequence of data linked with each other.

        2.4.2 Linked list

      This is a dynamic table/ data structure used to hold a sequence. Its characteristics
       are the following:

      • Items forming a sequence are not necessarily held in contiguous data location
         or in the order in which they occur in the sequence.

      • Each item in the list is called a node and contains an information field and a
         new address field called a link or pointer field.

      • Information field holds actual data for list item; link field contains the address
        of the next item.

      • The link field in the last item indicates that there are not further items. E.g. has
         a value of 0.

      • Associated with the list is a pointer variable which points to the first node in
         the list.

      • We use linked list in linking files, for example, in a hard disk.

      • It can grow or shrink in size during execution of a program.

      • It can be made just as long as required

      • It does not waste memory space.

      Linked list is classified into three types as shown below:
       
         • Single linked lists

        • Double linked lists
       
        • Circular linked list

      1. Single linked lists

      Single linked list is a sequence of elements in which every element has link to its
      next element in the sequence. In any single linked list, the individual element is
      called as “Node”. Every “Node” contains two fields, data and next. The data field is
      used to store actual value of that node and next field is used to store the address of
      the next node in the sequence




      In a single linked list, the address of the first node is always stored in a reference node
      known as “front” (Sometimes it is also known as “head”).Always next part (reference part) of the last node  must be NULL


      Algorithm in Single Linked List

      Creating and read an element in a NODE
      BEGIN
      struct node{
      int info
      struct node next
      } head, current, temp
      head=null
      temp=null
      current=null
      Begin sub
      Step 1 Read the element into x
      Step 2 Create a temp node in the memory
      temp =(struct node )sizeof (node)
      Step 3 Assign the values in temp node as follows
      temp -> info =x
      temp ->next=null
      End sub
      END

      Inserting at Specific location in the list (After a Node)
      We can use the following steps to insert a new node after a node in the single linked list

      • Step 1: Create a newNode with given value.

      • Step 2: Check whether list is Empty (head == NULL)

      • Step 3: If it is Empty then, set newNode => next = NULL and head = newNode.

      • Step 4: If it is Not Empty then, define a node pointer temp and initialize with head.

      • Step 5: Keep moving the temp to its next node until it reaches to the node

      after which we want to insert the newNode (until temp1 => data is equal to
      location, here location is the node value after which we want to insert the
      newNode).

      • Step 6: Every time check whether temp is reached to last node or not. If it
         is reached to last node then display ‘Given node is not found in the list!!!
         Insertion not possible!!!’ and termin ate the function. Otherwise move the
        temp to next node.

      • Step 7: Finally, Set ‘newNode => next = temp => next’ and ‘temp => next = newNode’

         Deleting a Specific Node from the list

      We can use the following steps to delete a specific node from a single linked list

      • Step 1: Check whether list is Empty (head == NULL)

      • Step 2: If it is Empty then, display ‘List is Empty!!! Deletion is not possible’ and
           terminate the function.

      • Step 3: If it is Not Empty then, define two Node pointers ‘temp1’ and ‘temp2’
          and initialize ‘temp1’ with head.

      • Step 4: Keep moving the temp1 until it reaches to the exact node to be deleted
        or to the last node. And every time set ‘temp2 = temp1’ before moving the
       ‘temp1’ to its next node.

      • Step 5: If it is reached to the last node then display ‘Given node not found in
         the list! Deletion not possible!!!’ And terminate the function.

      • Step 6: If it is reached to the exact node which we want to delete, then check
         whether list is having only one node or not

      • Step 7: If list has only one node and that is the node to be deleted, then set
         head = NULL and delete temp1 (free (temp1)).

      • Step 8: If list contains multiple nodes, then check whether temp1 is the first
         node in the list (temp1 == head).

      • Step 9: If temp1 is the first node then move the head to the next node (head =
         head => next) and delete temp1.

      • Step 10: If temp1 is not first node then check whether it is last node in the list
         (temp1=> next == NULL).

      • Step 11: If temp1 is last node then set temp2 => next = NULL and delete
        temp1 (free (temp1)).

      • Step 12: If temp1 is not first node and not last node then set temp2 => next =
         temp1=> next and delete temp1 (free (temp1)).

      Displaying a Single Linked List

      We can use the following steps to display the elements of a single linked list

      • Step 1: Check whether list is Empty (head == NULL)

      • Step 2: If it is Empty then, display ‘List is Empty!!!’ and terminate the function.

      • Step 3: If it is Not Empty then, define a Node pointer ‘temp’ and initialize with
         head.

      • Step 4: Keep displaying temp=> data with an arrow (->) until temp reaches to
         the last node

      • Step 5: Finally display temp => data with arrow pointing to NULL (temp =>
         data -> NULL).
       
      2. Double linked lists

      Double linked list is a sequence of elements in which every element has links to its
      previous element and next element in the sequence. So, we can traverse forward by
      using next field and can traverse backward by using previous field. Every node in a
      double linked list contains three fields and they are shown in the following figure

      Algorithm in Double Linked List

      Inserting at Specific location in the list (After a Node)

      We can use the following steps to insert a new node after a node in the double
      linked list

      • Step 1: Create a newNode with given value.

      • Step 2: Check whether list is Empty (head == NULL)

      • Step 3: If it is Empty then, assign NULL to newNode => previous&newNode =>
                  next and newNode to head.

      • Step 4: If it is not Empty then, define two node pointers temp1&temp2 and initialize temp1 with head.

      • Step 5: Keep moving the temp1 to its next node until it reaches to the node
        after which we want to insert the newNode (until temp1 => data is equal to
        location, here location is the node value after which we want to insert the newNode).

      • Step 6: Every time check whether temp1 is reached to the last node. If it is
         reached to the last node then display ‘Given node is not found in the list!!!
         Insertion not possible!!!’ and terminate the function. Otherwise move the
          temp1 to next node.

      • Step 7: Assign temp1 => next to temp2, newNode to temp1=> next, temp1
         to newNode => previous, temp2 to newNode => next and newNode to temp2
          => previous.

      Deleting a Specific Node from the list

      We can use the following steps to delete a specific node from the double linked list

      • Step 1: Check whether list is Empty (head == NULL)

      • Step 2: If it is Empty then, display ‘List is Empty!!! Deletion is not possible’ and
                   terminate the function.

      • Step 3: If it is not Empty, then define a Node pointer ‘temp’ and initialize with head.

      • Step 4: Keep moving the temp until it reaches to the exact node to be deleted
          or to the last node.

      • Step 5: If it is reached to the last node, then display ‘Given node not found in
        the list! Deletion not possible!!!’ and terminate the fuction.

      • Step 6: If it is reached to the exact node which we want to delete, then check
         whether list is having only one node or not

      • Step 7: If list has only one node and that is the node which is to be deleted
         then set head to NULL and delete temp (free(temp)).

      • Step 8: If list contains multiple nodes, then check whether temp is the first
         node in the list (temp == head).

      • Step 9: If temp is the first node, then move the head to the next node (head =
         head => next), set head of previous to NULL (head => previous = NULL) and
          delete temp.

      • Step 10: If temp is not the first node, then check whether it is the last node in
         the list (temp => next == NULL).

      • Step 11: If temp is the last node then set temp of previous of next to NULL
      (temp => previous => next = NULL) and delete temp (free(temp)).

      • Step 12: If temp is not the first node and not the last node, then set temp of
         previous of next to temp of next (temp => previous => next = temp => next),
         temp of next of previous to temp of previous (temp => next => previous =
         temp => previous) and delete temp (free(temp)).

      Displaying a Double Linked List

      We can use the following steps to display the elements of a double linked list

      Step 1: Check whether list is Empty (head == NULL)

      Step 2: If it is Empty, then display ‘List is Empty!!!’ and terminate the function.

      Step 3: If it is not Empty, then define a Node pointer ‘temp’ and initialize with
         head.

      Step 4: Display ‘NULL <= ‘.

      Step 5: Keep displaying temp → data with an arrow (↔) until temp reaches to
         the last node

      • Step 6: Finally, display temp → data with arrow pointing to NULL (temp → data ---> NULL).

      3. Circular Linked List

      In circular linked list, every node points to its next node in the sequence but the last
      node points to the first node in the list

      Algorithm in Circular Linked List

      Inserting at Specific location in the list (After a Node)

      We can use the following steps to insert a new node after a node in the circular
      linked list...

      • Step 1: Create a newNode with given value.

      • Step 2: Check whether list is Empty (head == NULL)

      • Step 3: If it is Empty then, set head = newNode and newNode → next = head.

      • Step 4: If it is Not Empty then, define a node pointer temp and initialize with head.

      • Step 5: Keep moving the temp to its next node until it reaches to the node
        after which we want to insert the newNode (until temp1 → data is equal to
       location, here location is the node value after which we want to insert the newNode).

      • Step 6: Every time check whether temp is reached to the last node or not. If
         it is reached to last node then display ‘Given node is not found in the list!!!
        Insertion not possible!!!’ and terminate the function. Otherwise move the
        temp to next node.

      • Step 7: If temp is reached to the exact node after which we want to insert the
         newNode then check whether it is last node (temp → next == head).

      • Step 8: If temp is last node then set temp → next = newNode and newNode
      → next = head.

      • Step 8: If temp is not last node then set newNode → next = temp → next
        and temp → next = newNode.

      Deleting a Specific Node from the list

      We can use the following steps to delete a specific node from the circular linked list...

      Step 1: Check whether list is Empty (head == NULL)

      Step 2: If it is Empty then, display ‘List is Empty!!! Deletion is not possible’
        and terminate the function.

      Step 3: If it is Not Empty then, define two Node pointers ‘temp1’ and ‘temp2
        and initialize ‘temp1’ with head.

      Step 4: Keep moving the temp1 until it reaches to the exact node to be deleted
        or to the last node. And every time set ‘temp2 = temp1’ before moving the
        ‘temp1’ to its next node.

      Step 5: If it is reached to the last node then display ‘Given node not found in
        the list! Deletion not possible!!!’
      . And terminate the function.

      Step 6: If it is reached to the exact node which we want to delete, then check
         whether list is having only one node (temp1 → next == head)

      Step 7: If list has only one node and that is the node to be deleted then set
         head = NULL and delete temp1 (free(temp1)).

      Step 8: If list contains multiple nodes then check whether temp1 is the first
        node in the list (temp1 == head).

      Step 9: If temp1 is the first node then set temp2 = head and keep moving
         temp2 to its next node until temp2 reaches to the last node. Then set head =
         head → next, temp2 → next = head and delete temp1.

      Step 10: If temp1 is not first node then check whether it is last node in the list

      (temp1 → next == head).

      Step 11: If temp1 is last node then set temp2 → next = head and delete
      temp1 (free (temp1)).

      Step 12: If temp1 is not first node and not last node then set temp2 → next
      = temp1 → next and delete temp1 (free (temp1)).

      Displaying a circular Linked List

      We can use the following steps to display the elements of a circular linked list

      Step 1: Check whether list is Empty (head == NULL)

      Step 2: If it is Empty, then display ‘List is Empty!!!’ and terminate the function.

      Step 3: If it is Not Empty then, define a Node pointer ‘temp’ and initialize with
                   head.

      Step 4: Keep displaying temp → data with an arrow (--->) until temp reaches
         to the last node

      • Step 5: Finally display temp → data with arrow pointing to head → data.

      2.5. Queue

      A queue is a linear list in which data can only be inserted at one end, called the REAR,
      and deleted from the other end, called the FRONT. These restrictions ensure that the
      data is processed through the queue in the order in which it is received. In an other
      words, a queue is a structure in which whatever goes fist comes out first (first in,
      first out(FIFO) structure).



      2.5.1 Types of queues

      There exist two types of queues:

      • Linear queue

      • Circular queue

      a. Linear Queue

      Queue data structure is a linear data structure in which the operations
      are performed based on FIFO principle. Queue Operations using Array
      before we implement actual operations, first follow the below steps to create an
      empty queue.

      Step 1: Include all the header files which are used in the program and define
        a constant ‘SIZE’ with specific value.

      Step 2: Declare all the user defined functions which are used in queue
          implementation.

      Step 3: Create a one dimensional array with above defined SIZE (int queue[SIZE])

      Step 4: Define two integer variables ‘front’ and ‘rear’ and initialize both with
          ‘-1’. (int front = -1, rear = -1)

      • Step 5: Then implement main method by displaying menu of operations list
       and make suitable function calls to perform operation selected by the user on
        queue.

      enQueue(value) - Inserting value into the queue


      • Step 1: Check whether queue is FULL. (rear == SIZE-1)

      • Step 2: If it is FULL, then display “Queue is FULL!!! Insertion is not possible!!!””
         and terminate the function.

      • Step 3: If it is NOT FULL, then increment rear value by one (rear++) and set
        queue [rear] = value.

      deQueue() - Deleting a value from the Queue

      • Step 1: Check whether queue is EMPTY. (front == rear)

      • Step 2: If it is EMPTY, then display “Queue is EMPTY!!! Deletion is not possible!!!”
         and terminate the function.

      • Step 3: If it is NOT EMPTY, then increment the front value by one (front ++).
        Then display queue[front] as deleted element. Then check whether both front
         and rear are equal (front == rear), if it TRUE, then set both front and rear to ‘-1’
         (front = rear = -1).

      display() - Displays the elements of a Queue

      We can use the following steps to display the elements of a queue

      Step 1: Check whether queue is EMPTY. (front == rear)

      • Step 2: If it is EMPTY, then display “Queue is EMPTY!!!” and terminate the
        function.

      Step 3: If it is NOT EMPTY, then define an integer variable ‘I’ and set ‘i = front+1’.

      Step 3: Display ‘queue[i]’ value and increment ‘I’ value by one (i++). Repeat
         the same until ‘I’ value is equal to rear (i<= rear)

      b. Circular Queue

      Circular Queue is a linear data structure in which the operations are performed
      based on FIFO (First In First Out) principle and the last position is connected back to
      the first position to make a circle.

      Circular Queue Operation

      To implement a circular queue data structure using array, we first create it.

      Step 1: Include all the header files which are used in the program and define a
         constant ‘SIZE’ with specific value.

      Step 2: Declare all user defined functions used in circular queue implementation.

      Step 3: Create a one dimensional array with above defined SIZE (int cQueue[SIZE])

      Step 4: Define two integer variables ‘front’ and ‘rear’ and initialize both with ‘-1’. (int
         front = -1, rear = -1)

      Step 5: Implement main method by displaying menu of operations list and make
        suitable function calls to perform operation selected by the user on circular queue.

      enQueue(value) - Inserting value into the Circular Queue

      • Step 1: Check whether queue is FULL. ((rear == SIZE-1 && front == 0) || (front ==
         rear+1))

      • Step 2: If it is FULL, then display “Queue is FULL!!! Insertion is not possible!!!” and
         terminate the function.

      • Step 3: If it is NOT FULL, then check rear == SIZE - 1 && front != 0 if it is TRUE, then
         set rear = -1.

      • Step 4: Increment rear value by one (rear++), set queue[rear] = value and check
      ‹front == -1’ if it is TRUE, then set front = 0.

      deQueue() - Deleting a value from the Circular Queue

      Step 1: Check whether queue is EMPTY. (front == -1 && rear == -1)

      Step 2: If it is EMPTY, then display “Queue is EMPTY!!! Deletion is not possible!!!” and
         terminate the function.

      • Step 3: If it is NOT EMPTY, then display queue[front] as deleted element and
         increment the front value by one (front ++). Then check whether front == SIZE, if it
         is TRUE, then set ‘front = 0’. Then check whether both ‘front – 1’ and rear are equal
         (front -1 == rear), if it TRUE, then set both front and rear to ‘-1’ (front = rear = -1).

      display () - Displays the elements of a Circular Queue

      Step 1: Check whether queue is EMPTY. (front == -1)

      Step 2: If it is EMPTY, then display “Queue is EMPTY!!!” and terminate the function.

      Step 3: If it is NOT EMPTY, then define an integer variable ‘i’ and set ‘i = front’.

      Step 4: Check whether ‘front <= rear’, if it is TRUE, then display ‘queue[i]’ value and
         increment ‘I’ value by one (i++). Repeat the same until ‘i <= rear’ becomes FALSE.

      Step 5: If ‘front <= rear’ is FALSE, then display ‘queue[i]’ value and increment ‘I’ value
         by one (i++). Repeat the same until ‘i <= SIZE – 1’ becomes FALSE.

      Step 6: Set i to 0.

      Step 7: Again display ‘cQueue[i]’ value and increment i value by one (i++). Repeat
         the same until ‘i <= rear’ becomes FALSE.

      2.5.2 Queue operations

      There are three main operations related to queues.

      Enqueue: the enqueue operation inserts an items at the rear of the queue

      Dequeue: the dequeue operation deletes the item at the front of the queue

      Display: show elements in the array

         2.6 Stack

      A stack is a restricted linear list in which all additions and deletions are made at one
      end, the top. If we insert a series of data items into a stack and then remove them,
      the order of the data is reversed. Data input as 5, 10, 15, 20, for example would be
      removed as 20, 15, 10, and 5. This reversing attribute is why stacks are known as Last
      in, First out (LIFO) data structures.

      We use many different types of stacks in our daily lives. We often talk of a stack of
      coins, stack of books on a table and stack of plates in a kitchen. Any situation in which

      we can only add or remove an object at the top is a stack. If we want to remove an
      object other than the one at the top, we must first remove all objects above it. The
      following charts illustrates cases of stack

      A Stack is a Last in First out (LIFO) dynamic table or data structure. It has the following
      characteristics:

      • List of the same kind of elements;

      • Addition and deletion of elements occur only at one end, called the top of the
        stack;

      • Computers use stacks to implement method calls;

      • Stacks are also used to convert recursive algorithms into non recursive
        algorithm.

      2.6.1 Operations performed on stacks

      The different operations performed on stacks are as follows:

      Push: adds an element to the stack

      Pop: removes an element from the stack

      Peek: display at top element of the stack

      Stack Operations using Array

      Before implementing actual operations, first follow the below steps to create an
      empty stack.

      Step 1: Include all the header files which are used in the program and define a
      constant ‘SIZE’ with specific value.

      Step 2: Declare all the functions used in stack implementation.

      Step 3: Create a one dimensional array with fixed size (int stack[SIZE])

      Step 4: Define a integer variable ‘top’ and initialize with ‘-1’. (int top = -1)

      • Step 5: In main method display menu with list of operations and make suitable
        function calls to perform operation selected by the user on the stack.

      push(value) - Inserting value into the stack

      Step 1: Check whether stack is FULL. (top == SIZE-1)

      Step 2: If it is FULL, then display “Stack is FULL!!! Insertion is not possible!!!” and
        terminate the function.

      Step 3: If it is NOT FULL, then increment top value by one (top++) and set stack [top]
        to value (stack[top] = value).

      pop() - Delete a value from the Stack

      Step 1: Check whether stack is EMPTY. (top == -1)

      Step 2: If it is EMPTY, then display “Stack is EMPTY!!! Deletion is not possible!!!’” and
        terminate the function.

      Step 3: If it is NOT EMPTY, then delete stack [top] and decrement top value by
         one(top-).

      Display() - Displays the elements of a Stack

      Step 1: Check whether stack is EMPTY. (top == -1)

      Step 2: If it is EMPTY, then display “Stack is EMPTY!!!” and terminate the function.

      Step 3: If it is NOT EMPTY, then define a variable ‘I’ and initialize with top.
        Display stack[i] value and decrement i value by one (i--).

      • Step 3: Repeat above step until i value becomes ‘0’.

        2.6.2 Stack exceptions

      Adding an element to a full stack and removing an element from an empty stack
      would generate errors or exceptions:

      Stack overflow exception: it occurs if you try to add an item to stack or queue
        which is already full.

      Stack underflow exception: it occurs if you try to remove an item from an
      empty queue or stack.

      Notec 1: Stack and Queue data structures can be implement in two ways: By using
      array or by using linked list.

      Notice 2: When stack or Queue is implemented using array, that stack or Queue can
      organize only a limited number of elements. When stack or Queue is implemented
      using linked list, that stack or Queue can organize an unlimited number of elements.

         2.7 Tree

      In linear data structure, data is organized in sequential order and in non-linear data
      structure; data is organized in random order. Tree is a very popular data structure
      used in wide range of applications. A tree data structure can be defined as follows.

      In a tree data structure, if we have N number of nodes then we can have a maximum
      of N-1 number of links.

      Tree data structure is a collection of data (Node) which is organized in hierarchical
      structure and this is a recursive definition.

      Example


      2.7.1 Tree Terminology

      In a tree data structure, we use the following terminology:

      a. Root

      In a tree data structure, the first node is called as Root Node. Every tree must have
      root node..



         b. Edge

      In a tree data structure, the connecting link between any two nodes is called an Edge.
      In a tree with ‘N’ number of nodes there will be a maximum of ‘N-1’ number of edges.

      c. Parent

      In a tree data structure, the node which is predecessor of any node is called a
      PARENT NODE. In simple words, the node which has branch from it to any other
      node is called as parent node.
            d. Child

      In a tree data structure, the node which is descendant of any node is called a CHILD
      Node. In a tree, any parent node can have any number of child nodes. In a tree, all
      the nodes except root are child nodes.

           e. Siblings
      In a tree data structure, nodes which belong to same Parent are called SIBLINGS.

      In a tree data structure, the node which does not have a child is called a LEAF Node.
      In a tree data structure, the leaf nodes are also called a External Nodes or Terminal
      node.

                 g. Internal Nods

      In a tree data structure, the node which has at least one child is called INTERNAL Node.
      In a tree data structure, nodes other than leaf nodes are called Internal Nodes. The
      root node is also said to be Internal Node if the tree has more than one node. Internal
      nodes are also called as ‹Non-Terminal’ nodes.


            h. Degree

      In a tree data structure, the total number of children of a node is called as DEGREE of
      that Node. In simple words, the Degree of a node is total number of children it has. The
      highest degree of a node among all the nodes in a tree is called as ‹Degree of Tree’

           i. Level

      In a tree data structure, the root node is said to be at Level 0 and the children of root
      node are at Level 1 and the children of the nodes which are at Level 1 will be at Level
      2 and so on... In simple words, in a tree each step from top to bottom is called as a
      Level and the Level count starts with ‘0’ and incremented by one at each level (Step).



            j. Height

      In a tree data structure, the total number of edges from leaf node to a particular
      node in the longest path is called as HEIGHT of that Node. In a tree, height of the root
      node is said to be height of the tree. In a tree, height of all leaf nodes is ‘0’.


      Figure 2.25.: Height representation
                  
                 k. Depth
      In a tree data structure, the total number of edges from root node to a particular
      node is called DEPTH of that Node. In a tree, the total number of edges from root node
      to a leaf node in the longest path is said to be Depth of the tree. In a tree, depth of
      the root node is ‘0’.



              l. Path

      In a tree data structure, the sequence of Nodes and Edges from one node to another
      node is called as PATH between those two Nodes. Length of a Path is total number of
      nodes in that path. In below example the path A - B - E - J has length 4.



              m. Sub Tree

      In a tree data structure, each child from a node forms a sub tree recursively. Every
      child node will form a sub-tree on its parent node.


         2.7.2 Binary Tree Representations

      A binary tree data structure is represented using two methods. Those methods are
      as follows:

      • Linked List of Binary Tree representation

      • Array Representation
      Let T be a Binary Tree. There are two ways of representing T in the memory as follow
      Linked

      a. Linked List of Binary Tree representation

      Consider a Binary Tree T. T will be maintained in memory by means of a linked list
      representation, which uses three parallel arrays; INFO, LEFT, and RIGHT pointer
      variable ROOT as follows. In Binary Tree, each node N of T will correspond to a
      location k such that:

      1. LEFT [k] contains the location of the left child of node N.

      2. INFO [k] contains the data at the node N.

      3. RIGHT [k] contains the location of right child of node N.
          • Representation of a node:


      In this representation of binary tree, root will contain the location of the root R of T.
      If any one of the sub tree is empty, then the corresponding pointer will contain the
      null value if the tree T itself is empty, the ROOT will contain the null value.

      Example

      Consider the binary tree T in the figure of Binary Tree


      Linked Representation of the Binary Tree

      b. Array Representation of Binary Tree
      Let us consider that we have a tree T. let our tree T is a binary tree that us complete binary
      tree. Then there is an efficient way of representing T in the memory called the sequential
      representation or array representation of T. This representation uses only a linear array
      TREE as follows:

      1. The root N of T is stored in TREE [1].

      2. If a node occupies TREE [k] then its left child is stored in TREE [2 * k] and its
         right child is stored into TREE [2 * k + 1].

      For Example:
      Consider the following Tree:




      Its sequential representation is as follow:


      2.7.3 Binary Tree Traversals

      When we wanted to display a binary tree, we need to follow some order in which all
      the nodes of that binary tree must be displayed. In any binary tree displaying order
      of nodes depends on the traversal method.

      Displaying (or) visiting order of nodes in a binary tree is called as Binary Tree
      Traversal.

      There are three types of binary tree traversals.

      • In - Order Traversal

      • Pre - Order Traversal

      • Post - Order Traversal

      Traversal is a process to visit all the nodes of a tree and may print their values too.
      Because, all nodes are connected via edges (links) we always start from the root
      (head) node. That is, we cannot randomly access a node in a tree.

      Generally, we traverse a tree to search or locate a given item or key in the tree or to
      print all the values it contains.

      a. In-order Traversal

      In this traversal method, the left sub tree is visited first, then the root and later the
      right sub-tree. We should always remember that every node may represent a sub
      tree itself.

      If a binary tree is traversed in-order, the output will produce sorted key values in an
      ascending order.


      We start from A, and following in-order traversal, we move to its left subtree B. B is
      also traversed in-order. The process goes on until all the nodes are visited. The output
      of inorder traversal of this tree will be −

      D → B → E → A → F → C → G

      Algorithm:

      Until all nodes are traversed −

      Step 1 − Recursively traverse left subtree.

      Step 2 − Visit root node.

      Step 3 − Recursively traverse right subtree.

      b. Pre-order Traversal

      In this traversal method, the root node is visited first, then the left subtree and finally
      the right subtree.

      We start from A, and following pre-order traversal, we first visit A itself and then
      move to its left subtree B. B is also traversed pre-order. The process goes on until all the
      nodes are visited. The output of pre-order traversal of this tree will be −

      A → B → D → E → C → F → G

      Algorithm:

      Until all nodes are traversed −

      Step 1 − Visit root node.

      Step 2 − Recursively traverse left subtree.

      Step 3 − Recursively traverse right subtree.

      c. Post-order Traversal

      In this traversal method, the root node is visited last, hence the name. First we
      traverse the left sub tree, then the right sub tree and finally the root node.



      We start from A, and following Post-order traversal, we first visit the left sub tree B. B is also
      traversed post-order. The process goes on until all the nodes are visited. The output of
      post-order traversal of this tree will be −
      D → E → B → F → G → C → A

      Algorithm:

      Until all nodes are traversed −

      Step 1 − Recursively traverse left subtree.

      Step 2 − Recursively traverse right subtree.

      Step 3 − Visit root node.

      Binary Search tree exhibits a special behavior. A node’s left child must have a value
      less than its parent’s value and the node’s right child must have a value greater than
      its parent value.

          2.7.4. Basic Operations on binary tree

      A Binary Search Tree (BST) is a tree in which all the nodes follow the below-mentioned
         properties

      • The left sub-tree of a node has a key less than or equal to its parent node’s key.

      • The right sub-tree of a node has a key greater than to its parent node’s key.

      Thus, BST divides all its sub-trees into two segments; the left sub-tree and the right

      sub-tree and can be defined as
      left_subtree (keys) ≤ node (key) ≤ right_subtree (keys)

      Representation

      BST is a collection of nodes arranged in a way where they maintain BST properties.
      Each node has a key and an associated value. While searching, the desired key is
      compared to the keys in BST and if found, the associated value is retrieved.
      Following is a pictorial representation of BST






      • Key Unit Competency:
        To be able to explain principles, standards and purposes of computer network

        Read the following scenario and answer to the asked questions.

        In the school computer labs, choose a classmate and send him/her an email that
        has “Computer Network “as the email subject and the email body contains names of
        previous units already covered in senior 5 computer science. Ask him/her to reply
        immediately to your email.

        After receiving the reply, answer the following questions:

        1. List all possible elements that make this communication possible

        2. What devices are used to facilitate sending email successfully?

        3. Discuss what made possible the sending and receiving of emails

        4. Do you like using email?

        5. How do you value the factor of sending and receiving an email

        6. Describe what you see in the photo below?

        3.1. Fundamental of computer Networ

        3.1.1. Computer Network Definition

        ACTIVITY 3.1

        Observe computers in the computer lab and answer the following question?

        1. Describe what you see?

        2. What are transmission media used to connect computers in the
            computer labs?

        3. Are all devices connected?

        A computer network is a system of interconnected computers for the purpose of
        sharing data and resources.

        Computers on a network are called nodes. Nodes can include hosts such as personal
        computers, phones, servers as well as networking hardware. Two devices are
        networked together when one device is able to exchange information with the
        other device. The computer can be connected to another in the two ways.

        Wired network: Computers are connected using cable media. Most commonly
        Ethernet Cable, coaxial cable and optic fiber.

        Wireless network: Computers are connected using wireless media. Radio waves are
        used in wireless mode.

        3.1.2 Properties of Computer Network


        • Easy Sharing of Resources: Computers are able to share various resources
        easily over a network. Shared resources can be Internet, files, printer, storage
        and others.

        Performance: It is achieved by measuring the speed of data transmission
        with number of network users, connectivity used and the software used. The
        commonly measured qualities in the network performance are Bandwidth
        and Latency.

        Reliability: It means that computer network provides assurance of the
        delivery of data to the intended recipient.

        Scalability: The possibility of adding new computer without affecting the
        network performance.

        Security: computer network must be secured for the benefit of the user and
        data protection. The security is achieved by protecting data from unauthorized
        access.

        Quality of Service (QoS): Quality of Service refers to the mechanism that
           manage congested network traffic.

        Fault tolerant: A fault tolerant network limits the impact of hardware or
        software failure and recovers quickly when a failure occurs

        APPLICATION ACTIVITY 3.2

        1. Investigate what happen when a shared resource is disconnected from
        the computer network?

        2. Imagine other areas where computer network is used?

        3.1.3 Advantages and Disadvantage of Computer Networking
               The common advantages of computer network

        Activity 3.2

        1. Discuss the disadvantages of using computer network within your school?

        2. In class of senior 5 MPC, Computer Science Teacher decides to share notes
           for students to use on our school network. The mathematics teacher decides
           to print notes of 100 pages and distributes to each member of senior 5 MPC
           class.

        i. Evaluate the cost impact for both teachers

        ii. Both teachers, whom save money in giving notes.

        The common advantages of computer network

        1. Enhanced communication and availability of information: It allows access
           to a vast amount of useful information.

        Example: Population data, newsletters, online businesses, contents,
        Applications.

        2. Allow resource sharing: Fewer resources are needed when an organization
        uses a computer network.
        Example: only one printer is needed instead of buying a printer for each office.

        3. File sharing made easy: computer network allows people to share files, which
            helps to save more time and effort.
            Example: A teacher can share homework to all students through school
            network

        4. Improve storage capacity: since you are going to share information, files and
            resources to other people, you have to ensure that all data and content are
            properly stored in the system.

        5. Cost efficiency: on computer network, you can share software license installed
        on the server and can then be used by various workstations.

        6. Security of information and resources: users cannot see other users' files
        unlike on stand-alone machines.

        7. Backup of data is easy as all the data is stored on the file server.

        The common disadvantages of computer networking

        1. Lack of independence: people rely on computer network and when the
        system is down, people get stack. Most of organizations depend on the
        computer networks.

        2. Security issues: huge number of people use a computer network to get and
        share their files and resources, a certain user’s security would be always at
        risk. Viruses can spread to other computers throughout a computer network.
        There is a danger of hacking, particularly with wide area networks. Security
        procedures are needed to prevent such abuse, Examples: The use of Antivirus
        and firewall.

        3. Lack of robustness: computer network’s main server breaks down, the entire
        system would become useless

        APPLICATION ACTIVITY 3.2

        1. Investigate what happen when a shared resource is disconnected from
            the computer network?

        2. Imagine other areas where computer network is used?

        3.1.4 Types of computer networks

        Activity 3.3

        With two or more Bluetooth enabled devices available in the classroom:

        1. Turn on the Bluetooth feature on both devices

        2. Share and receive files such images and documents between the
           devices

        3. Turn off Bluetooth feature in the two devices.

        A computer network is classified basing on the size of the area covered, the number
        of users connected and the number & types of services available.

        The followings are type of computer networks:

        1. Personal Area Network (PAN)

        A personal area network (PAN) is a network that connects devices, such as mice,
        keyboards, printers, Smartphone, and tablets within the range of an individual
        person. PAN has connectivity range up to 10 meters. PAN may include wireless
        computer keyboard and mouse, Bluetooth enabled headphones, wireless printers
        and TV remotes. All of these devices are dedicated to a single host and are most
        often connected with Bluetooth technology.

        Bluetooth is a wireless technology that enables devices to communicate over short
        distances. A Bluetooth device can connect up to seven other Bluetooth devices.

        2. Local Area Network (LAN)

        Traditionally, a LAN is defined as a network that covers a small geographical area.
        However, the distinguishing characteristic for LANs today is that they are typically
        owned by an individual, such as in a home or small business, or wholly managed
        by an IT department, such as in a school or corporation. This individual or group
        enforces the security and access control policies of the network. LAN uses Ethernet
        IEEE 802.3 as its standard.

        A Wireless LAN (WLAN) is a LAN that uses radio waves to transmit data between
        wireless devices. In a traditional LAN, devices are connected together using copper
        cabling. In some environments, installing copper cabling might not be practical,
        desirable, or even possible. In these situations, wireless devices are used to transmit
        and receive data using radio waves. As with LANs, on a WLAN, you can share resources,
        such as files, printers, and Internet access. WLAN uses Ethernet IEEE 802.11 as its
        standard.

        3. Metropolitan Area Network (MAN)

        A metropolitan area network (MAN) is a network that spans across a large organization
        like campus or a city. The network consists of various buildings interconnected
        through wireless or fiber optic backbones.

        A backbone is the part of the computer network infrastructure that interconnects
        different LAN networks and provides a path for exchange of data between these
        different networks

        The communication links and equipment are typically owned by a network service
        provider who sells the service to the users. A MAN can acts as a high-speed network
        to enable sharing of regional resources.

        4. Wide Area Network (WAN)

        A WAN connects multiple networks that are in geographically separated locations.

        The distinguishing characteristic of a WAN is that it is owned by a service provider.
        Individuals and organizations contract for WAN services. WAN network provides
        connectivity to MANs and LANs. The most common example of a WAN is the
        Internetwork or Internet in short. The Internet is a large WAN that is composed of
        millions of interconnected networks.

        Example: Kigali and Nairobi networks are connected through the Internet

        APPLICATION ACTIVITY 3.3


        1. Discuss the role ISP services for LANs?

        2. Do an observation in the school computer lab and categorize the
        computer network type available at your school? Justify your answer.

        3. Using clear examples, Distinguish Personal Area Network and Local Area
        Network?

        4. Using an arrow match the following in Group A with their
        corresponding in Group B

        Group A                                               Group B
        a. Radio waves                                     1. Qualities of Computer network
        Performance

        b. Millions of interconnected network    2. Disadvantages of Computer network

        c. Sharing resources                             3. Wireless

        d. Hacking attacks                                 4. WAN

        e. Bandwidth and Latency                     5. Advantages of Computer network

        3.2 Computer Network Concept and Technology

        ACTIVITY 3.4

        You are browsing a website on the internet while the speed is okay and suddenly you
        find that the page is loading slowly. Investigate the reason behind slowness?

        3.2.1 Network metrics

        Network metrics are defined as standards of measurement by which efficiency,
        performance, progress, or quality of a plan, process can be assessed. Network metric
        are used by a router to make routing decisions.

        When data is sent over a computer network, it is broken up into small chunks called
        packets. Each packet contains source and destination address information. Packets
        are sent across a network one bit at a time.

              a. Bandwidth

        Bandwidth is the amount of data that can be transmitted in a fixed amount of time.
        Bandwidth is measured in the number of bits that can be sent every second.
        The following are examples of bandwidth measurements:

        • b/s - bits per second

        • kb/s - kilobits per second

        • Mb/s - megabits per second

        • Gb/s - gigabits per second

                        b. Latency
        Latency is the time between requesting data and receiving data. More simply put,
        the time it takes to establish a connection between your computer and the server
        hosting the website you requested. The important thing to take away here is that
        latency is not speed. Data is delayed by network devices and cable length. Network
        devices add latency when processing and forwarding data.

                         c. Throughput:
        Throughput is the actual rate at which information is transferred. It measures the
        amount of completed work against time consumed and may be used to measure
        the performance of a processor, memory and/or network communications.

                           d. Error rate:
        Error rate is the number of corrupted bits expressed as percentage or fraction of the
        total sent.
                            e. Jitter:
        Jitter is variation in packet delay at the receiver of information. For measuring the
        capacity of all of these metrics above, we focus on capacity of message and this one
        change into different form depending on the network devices where this message
        is located.

                       3.2.2 Data Transmission model

        The term transmission mode is used to define the direction of signal flow between
        two linked devices. The data that is transmitted over the network can flow using one
        of three modes: simplex, half-duplex and full-duplex.


        1. Simplex: it is a single one-way transmission. In a simplex transmission
        mode, the communication between sender and receiver occurs only in one
        direction. That means only the sender can transmit data, and receiver can
        receive that data. The receiver cannot transmit any information back to the
        sender.

        The keyboard to monitor transmission is an example of simplex transmission
        mode. Other examples are communication between a computer and a
        printer, listening to the radio and the signal that is sent from a TV station to
        your home TV.

        2. Half-Duplex: data flows in one direction at a time. In half-duplex, the
            channel of communications allows alternating transmission in two
           directions, but not in both directions simultaneously. An Example of Halfduplex
           is the Talkie- Walkie used by the police.

        3. Full-Duplex: data flows in both directions at the same time. In a full duplex
           transmission mode, the communication between sender and receiver can
          occur simultaneously. Sender and receiver both can transmit and receive
          simultaneously at the same time.


        A telephone conversation is an example of full-duplex communication. Both people
        can talk and be heard at the same time.

        APPLICATION ACTIVITY 3.4

        1. Examine 2 reasons that cause latency in computer network.

        2. What is your school download bandwidth and upload bandwidth?

        3. Contrast upload bandwidth and download bandwidth?

        4. Categorize following devices according to their transmission modes

                             a. TV

                             b. Radio

                             c. Walkie -Talkie

                             d. Phone

                             e. Computer

        3.2.3. Internetwork (Internet, Intranet, Extranet)

        ACTIVITY 3.5

        Using computer network, an organization’s employees can access data when
        they are inside the organization buildingand when they are physically outside.
        Investigate technologies that can be used to allow employees inside and outside
        to access organization’s data.

        A network of networks is called an internetwork, or simply the Internet. The Internet,
        extranets, and intranets all rely on Transport Control Protocol / Internet Protocol
        (TCP/IP). However, they are different in terms of the levels of access they allow to
        various users inside and outside the organization and the size of the network.

        1. An Intranet is a private computer network that uses Internet Protocol to
           securely share any part of an organization’s information or operational
           systems within that organization. Only users inside the organization are
            only allowed to access it.

        2. An Extranet is a private network that uses Internet protocols, network

        connectivity. An extranet can be viewed as part of a company’s intranet
        that is extended to users outside the company, the connectivity is made
        possible by the Internet.

        3. The Internet is a global system of interconnected computer networks that
        use the standard Internet Protocol suite (TCP/IP) to serve billions of users
        worldwide.

        The difference between the Internet and Extranets is that while the extranet allows
        limited access to non-members of an organization, the Internet generally allows
        everyone to access all network resources.

        APPLICATION ACTIVITY 3.5

        General supply Ltd. sell various services online and offline. It has various partners such
        as suppliers, sellers, buyers and clients in different Districts of Rwanda. Each partner
        wants to access the General supply data from its servers located at the main office in
        Ruhango District.

        Examine in details the appropriate technology for each user to access the General
        supply Ltd. data to avoid the user location problem

        3.3 Local Area Networks (LANs)

        ACTIVITY 3.6

        By definition, computer network is said to be a group of computers connected together
        and share resources. Using your school environment, observe followings:

        1. The range covered by your school network?

        2. The number of users on your school network?

        3. Resources shared on your school network?

        3.3.1 Definition

        Local Area Networks (LANs) are networks usually confined to a geographic area, such
        as a single building or a college campus. LANs can be small, linking as few as three
        computers, but often link hundreds of computers used by thousands of people.

        3.3.2 LAN Categories

        1. Peer-to-Peer Network

        A peer-to-peer (P2P) network is created when two or more computers are connected
        and share resources without going through a separate server computer. In a peerto-
        peer network, there is no hierarchy among the computers, nor are there any
        dedicated servers.

        Each device on the network, also called a client, has equivalent capabilities and
        responsibilities. A user is responsible for its own resources and can decide which
        data and devices to be shared with other computers. Because individual users are
        responsible for the resources on their own computers, the network has no central
        point of control and no central administration. Peer-to-peer networks work best in
        environments with ten or fewer computers.



        Advantages of peer to peer network are as follows:

        • The main advantage of peer to peer network is that it is easier to set up

        • In peer-to-peer networks all nodes are act as server as well as client therefore
          no need of dedicated server

        • The peer to peer network is less expensive

        • Peer to peer network is easier to set up and use this means that you can spend
         less time in the configuration and implementation of peer to peer network.

        Disadvantages of peer to peer network

        • A computer can be accessed anytime

        • Network security has to be applied to each computer separately

        • Backup has to be performed on each computer separately

        • No centralized server is available to manage and control the access of data.

        2. Client-Server Network

        In a client-server network, the client requests information or services from the server
        and the server provides the requested information or service to the client. Servers
        on a client-server network commonly perform some of the processing work for
        client machines.

        In a client-server network, resources are controlled by a centralized network
        administration. The network administrator implements data backups and security
        measures. The network administrator also controls user access to the server
        resources.

        Note: In a home or small business, a single server can run multiple types of server
        software, it may be necessary for one computer to act as a file server, a web server,
        and an email server. A client computer can also run multiple types of client software.
        There must be client software for every service required. With multiple client software
        installed, a client can connect to multiple servers at the same time.

        Advantages of Client-Server Network

        • Centralization of control: Access, resources and integrity of the data are
          controlled by the dedicated server so that a program or unauthorized client
          cannot damage the system.

        • Scalability: You can increase the capacity of clients and servers separately.
          Any element can be increased (or enhanced) at any time, you can add new
          nodes to the network (clients or servers).

        • Easy maintenance: Distribute the roles and responsibilities to several
          standalone computers, you can replace, repair, upgrade, or even move a server,
          while customers will not be affected by that change (or minimally affect).

        Disadvantage of Client Server Networks

        • There is a reliance on the central server, if it fails, no work can be done

        • A network manager is required and this costs money

        • The server costs money, as does the network operating system

        • Servers are powerful, thus expensive

        • Lots of network traffic.

        Advantages of Client Server Networks over Peer to Peer Networks

        Centralization: Unlike Peer to Peer, where there is no central administration,
          Client Server Networks have a centralized control.

        Proper Management : All the files are stored at the same place. Therefore,
        management of files becomes easy and it is easier to find files.

        Back-up and Recovery possible: As all the data is stored on server it is easy to
          make a back-up of it. Also, in case of some break-down if data is lost, it can be
          recovered easily and efficiently. While in peer to peer network, we have to take
          back-up at every workstation.

        Upgrade and Scalability in Client-server set-up: Changes can be made
          easily by just upgrading the server. Also new resources and systems can be
           added by making necessary changes in server.

        Accessibility: From various platforms in the network, server can be accessed
          remotely.

        Security: Rules defining security and access rights can be defined at the time of
        set-up of server.

        Disadvantages of client server network over the Peer to peer network

        • Congestion in Network: Too many requests from the clients may lead to
          congestion, which rarely takes place in Peer to Peer network. Overload can
          lead to breaking-down of servers. In peer-to-peer, the total bandwidth of the
          network increases as the number of peers increase.

        • Client-Server network is not as robust as a Peer to Peer network and if the
          server fails, the whole network goes down.

        • Cost: It is very expensive to install and manage client server network.

        APPLICATION ACTIVITY 3.6

        Respond the following questions by True or False and justify your answer

        • Peer to Peer network is only implemented by computers which run same
        operating system.

        • In Server-Client network, Server respond to service only requested by the
        Client.

        • Limit number of hosts in the Peer to Peer network are 10 computers.

        • Client requests only the service available on the server in Server-Client
          network.

        • Peer to Peer network is more secure than Server-Client network.

        • There is a dedicated computer in Peer to Peer network.

        • In Client- Server network, both client and server must run the same Operating
         System.

        3.4. Physical Components

         ACTIVITY 3.7

        In the computer lab observe devices that are directly participating in the
        network. Examine the role of each device you have identified.

        3.4.1. Definition of network device

        A network host or a node is a computer or any other device that is directly connected
        to a computer network. A network host may offer information resources, services,
        and applications to users.

        i. Network Interface Card (NIC)

        Network Interface card is a component that allows the computer to communicate
        across a network. This component is frequently built into the motherboard of today’s
        computers, but it can also be a separate card for use in a PCI slot.

        Network Interface cards can be either wired or wireless. However, some cards do
        support both wireless and wired networking

        APPLICATION ACTIVITIES 3.7

        NIC Card installation in a desktop computer:

        Step 1: Shut down your Computer and disconnect it from the power source

        Step 2: Remove the case cover. Then remove the cover of the available slot.

        Step 3: Install NIC in proper slot and secure it

        Step4: Replace the case cover.

        Note: A wireless NIC has an antenna connected to the back of the card or attached
        with a cable so that it can be positioned for the best signal reception. You must
        connect and position the antenna.


             ii. Media Access Control Address

        Media Access Control Address (MAC address) of a device is a unique identifier
        assigned to network interfaces for communications at the data link layer of a
        network segment. MAC address is a physical address of Network Interface Card. In
        other words MAC addresses are linked to the hardware of network adapters. A MAC
        address is given to a network adapter when it is manufactured.
        Example of a MAC address: 00:0a:95:9d:68:16.

        iii. Modem

        A modem is a hardware device that enables a computer to send and receive data
        over a telephone line or a cable or satellite connection. Modem is used to transmit
        digital information via analog systems. The word “modem” is derived from the term
        “Modulator - Demodulator.”

        The essential functions of a modem are:

        • Modulate: an analog carrier signal to carry digital information, it means to
           convert the analog signal to digital signal.

        • Demodulate: a similar signal so as to decode the digital information from
        the analog carrier signal and it means to convert the same signal back to the
        analog signal then transmitted through telephone line.

        They are two types of modems:

        Internal modem which are circuit boards that plug into a computer’s motherboard and
        external modems which are discrete units housed in a separate case. Typically, an external
        modem is connected to the telephone line and the computer via cables or USB.

        APPLICATION ACTIVITY 3.8

        Find the Mac address of your computer

        Step1: Click the Run button in the windows 10 Start Menu

        Step 2: Type cmd in the Open prompt of the Run menu and click OK to launch a
                     command prompt window

        Step 3: Type ipconfig /all at the command prompt to check the network card
                     settings.

        Step4: MAC address is listed by ipconfig under Physical Address

        iv. RJ 45 Connector and Port

        A registered jack (RJ) is a standardized physical network interface for connecting
        telecommunications or data equipment. The physical connectors that registered
        jacks use are mainly of the modular connector and 50-pin miniature ribbon connectortypes

        The RJ45 port is the network port on a computer. This socket has many names. It is
        also known as the Ethernet port, the network adapter, the network jack or the RJ45jack.

        3.5. Network Devices

        ACTIVITY 3.8

        Observe the connection between network devices that make your school network.
        Then answer following questions:

        1. Examine how computers are connected together in order to exchange
            data?

        2. Investigate how data / message is forwarded from the Computer A (as
             source) to Computer B (as destination)?

        3. The equipment used to connect devices within a LAN has evolved from
             hub to bridge to switch. Contrast both devices?

        3.5.1 Hub

        A hub is a network hardware device for connecting multiple devices together and
        making them act as a single network segment.

        Definition:A network segment is a portion of a computer network that is separated from
        the rest of the network by a network device.

        Hub receives message on one port and then send it out to all other ports, this means
        that when hub receives message, the received message is regenerated or duplicated
        and sent to all computers connected to the hub, each computer on the network
        receives the message, if it is not the destination message is destroyed, if it is the
        destination it reads the message.

        Note: Hubs are used less often today because of the effectiveness and low cost of
        switch. Hub do not segment network traffic. When one device sends traffic, the hub
        floods that traffic to all other devices connected to hub. The devices are sharing the
        bandwidth.

        3.5.2 Switches

        Switch filters and segments network traffic by sending messages only to the device to
        which it is sent. This means that when a switch receives a message do not duplicated
        it, it sends it directly to the destination computer. This provides higher dedicated
        bandwidth to each device on the network.

        A switch maintains a switching table, the switching table contains a list of all MAC
        addresses of computers on the network and a list of switch port which are used to
        reach a computer with a given MAC address.
        When message arrives that is destined for a particular MAC address, the switch uses
        the switching table to determine which port to use to reach the MAC address. Then message is forwarded to the destination.

        3.5.3 Bridge


        A network bridge is a computer networking device that creates a single aggregate
        network from multiple communication networks or network segments. This function
        is called network bridging

        Bridges keep a record of all the devices on each segment. A bridge can then filter
        network traffic between LAN segments. This helps reduce the amount of traffic
        between devices

        3.5.4 Access point


        The Access Point is connected to a switch using UTP cable, therefore it can provide
        access to the rest of the network. Instead of providing copper cabling to every
        network host, only the wireless access point is connected to the network with
        copper cabling and spread radio waves to the rest of network.
        The range (radius of coverage) for Access Point indoors is 98.4 ft (30 m) and too
        much greater distances outdoors depending on the technology used.

        APPLICATION ACTIVITY 3.9

        1. Justify why outdoor range is better that indoor range?

        2. Discuss how a switch perform micro-segmentation?

        3. Analysis why Switch is much preferred than a HUB

        4. Examine the difference between Access Point and Bridge?

        5. Identify the purpose of switching table in the switch?

        6. Using the internet search for the diagram representation of hubs,
            switches and bridges in a network

        3.6 Network Transmission Medium

        ACTIVITY 3.9

        Draw a computer network of 10 computers
        This is the physical mean of communication between network computers.
        Data transmission media are the physical materials used to transmit data between
        computers. Packet of data can be transmitted on network as electrical signals
        in electric wire, light signal in fiber optic cables or as electromagnetic waves
        through space.
        There are two main types of data communication media used in network:

        1. Bounded or Guided media: which transmit signals by sending electricity
           or light over a cable wire. Common examples of bounded media are
          twisted cables, Coaxial cables and fiber optic cables.

        2. Unbounded media: which transmit data through the air, radio waves,
        layer or infrared signal and satellite based microwaves, etc.

        3.6.1 Guided transmission media

        A wide variety of networking cables are Coaxial, Fiber optic and twisted-pair
        cables which use electrical signals over copper to transmit data while Fiber-optic
        cables use light signals to transmit data. These cables differ in bandwidth, size, and
        cost.

        It is used by both cable television companies and satellite communication systems
        and it carries data in the form of electrical signals. There are several types of coaxial
        cable:

        • Thicknet or 10BASE5 - used in networks and operated at 10 Mb/s with a
        maximum length of 1640.4 ft. (500 m.)

        Thinnet 10BASE2 - used in networks and operated at 10 Mb/s with a maximum
        length of 607 ft. (185 m.)

              b. Twisted-pair copper cabling

        Twisted-pair is a type of copper cabling used for telephone communications and
        most Ethernet networks. The pair is twisted to provide protection against crosstalk,
        which is the noise generated by adjacent pairs of wires in the cable.
        The use of this cable is limited by two factors:

        a. Attenuation: the strength of signal reduces as the distance increases i.e the
        cables loose signals strength when they exceed their maximum length stated
        in network specification.

        b. Crosstalk: this refers to interference generated by cables when they are too
        close to each other. Signals from one line get mixed with signals from another.

        3.6.2. Types of twisted pair cables

        There are two types of twisted pair cables: unshielded and shielded cables

        a. Unshielded twisted-pair (UTP)

        Unshielded twisted-pair (UTP) cabling is the most common variety of twisted-pair
        cabling.

        UTP cable consists of four pairs of color-coded wires that are twisted together and
        then encased in a flexible plastic sheath that protects from minor physical damage.
        The twisting of wires helps protect against crosstalk. However, UTP does not protect
        against electromagnetic interference (EMI) or radio frequency interference (RFI).
        EMI and RFI can be caused by a variety of sources including electric motors and
        fluorescent lights.

        There are two different wiring schemes called T568A and T568B. Using the T568A
        and T568B wiring schemes, two types of cables can be created: a straight-through
        cable and a crossover cable.

        1. A straight-through cable is the most common cable type. It maps a wire
            to the same pins on both ends of the cable. The order of connections (the
            pin out) for each color is the exact same on both ends.


        Two devices directly connected and using different pins for Transmit and Receive
        are known as unlike devices. They require a straight-through cable to exchange
        data. For example, connecting a PC to a switch requires a straight-through cable.

        2. A crossover cable uses both wiring schemes. T568A on one end of the
        cable and T568B on the other end of the same cable.
        Devices that are directly connected and use the same pins for transmit and receive,
        are known as like devices. They require the use of a crossover cable to exchange
        data. For example, connecting a PC to another PC requires a crossover cable.

        Note: The most used cable standards are below:

        • 100Base-TX: known as Fast Ethernet, it uses category 5, 5E, or 6 UTP cable and
        it wires u to 100 meters long.

        • 1000Base-T means that the speed of the network is up to 1000
        Mbps, baseband signaling is sed, T stands for twisted-pair as UTP cable used

        b. Shielded twisted-pair (STP)

        The STP type similar to UTP cable except that there is a metal foil or braided metal-
        mesh cover that encases each pair of insulated wires. The extra covering in shielded
        twisted pair wiring protect the transmission line from electromagnetic interference
        ( EMI) leaking into or out of cable. However this can make cables quite bulky
         and harder to install.
        The basic difference between UTP and STP is that UTP is a cable with wires that are twisted
        together to reduce noise and crosstalk. On other hand, STP is a twisted pair cable confined
        in foil or mesh shield that guards the cable against electromagnetic interference.

        APPLICATION ACTIVITY 3.10

        Requirements:

        1. Unshielded twisted pair (UTP) patch cable

        2. Modular connector (8P8C plug, aka RJ45)

        3. Crimping tool

        4. Cable tester (optional, but recommended

        Step 1: Strip the cable jacket about 1.5 inch down from the end.

        Step 2: Spread the four pairs of twisted wire apart.

        Step 3: Untwist the wire pairs and neatly align them in the T568B orientation.

        Step 4: Cut the wires as straight as possible, about 0.5 inch above the end of the jacket.

        Step 5: Carefully insert the wires all the way into the modular connector, making sure
                    that each wire passes through the appropriate guides inside the connector.

        Step 5: Carefully insert the wires all the way into the modular connector, making sure
                    that each wire passes through the appropriate guides inside the connector.

        Step 6: Push the connector inside the crimping tool and squeeze the crimper all the
                    way down.

        Step 7: Repeat steps 1-6 for the other end of the cable.

        Step 8: To make sure you›ve successfully terminated each end of the cable, use a cable
                    tester to test each pin.

        APPLICATION ACTIVITY 3.11

        Step 1: Open the Network and Sharing Center:

        Step 2: Select the Control Panel from the Start menu.

        Step 3: Select Open Network and Sharing Center and click Network and Sharing Center

        3.6.3 Fiber optic cables

        An optical fiber cable, also known as a fiber optic cable, is an assembly similar to an
        electrical cable, but containing one or more optical fibers that are used to carry light
        signals

        Advantages of fiber optic

        a. Since they transmit light rather than electronic signal, the problem of electrical
            interference is eliminated , therefore they are not affected by radio interference
             or cross talk

        b. They have become the standard for connecting networks between buildings due
             to their immunity the effects of moisture and lighting.

        c. Fiber optic can transmit signal over much longer distance than coaxial cable and
            twisted cables

        d. They can carry information at high rate speed between

        e. The distance can be up to 2000 meters without repeater

        f. Security: it is difficult to tap into optical fiber line. If this is happen it will be
            noticed immediately.

        g. Low transmission loss

        h. Data can be transmitted digitally

        i. They are more resistant to adverse weather conditions.


        3.6.4 Unguided transmission media

        Unguided media transport electromagnetic waves without using a physical
        conductor. This type of communication is often referred to as wireless communication.
        The mediums used in wireless communications are air, vacuum and even water. Air
        is the most commonly used medium.

              a. Wireless Transmission

        Wireless transmission can be categorized into three broad groups namely radio
        waves, microwaves, infrared

              1. Radio waves

        Radio waves are normally omnidirectional. When an antenna transmits radio
        waves, they are propagated in all directions. This means that the sending and
        receiving antennas do not have to be aligned. The omnidirectional characteristics
        of radio waves make them useful for multicasting, in which there is one sender but
        many receivers. Our FM radio stations, cordless phones and televisions are examples
        of multicasting.

             2. Infrared

        Infrared is used in devices such as the mouse, wireless keyboard and printers. Some
        manufacturers provide a special port called the IrDA port that allows a wireless
        keyboard to communicate with a PC.

        Infrared signals have frequencies between 300 GHz to 400 THz. They are used for
        short-range communication. Infrared signals have high frequencies and cannot
        penetrate walls. Due to its short-range communication system, the use of an infrared
        communication system in one room will not be affected by the use of another system
        in the next room. This is why using an infrared TV remote control in our home will
        not interfere with the use of our neighbor’s infrared TV remote control.

        The disadvantages of using infrared

        • Infrared signals cannot be used for long distance communication.

        • Infrared waves can not be used outside of a building because sun’s rays contain
        infrared waves that can interfere with communication.

               3. Bluetooth

        Bluetooth technology is designed to serve as a new way of connecting devices.
        Bluetooth technology has an advantage of being low investment and low energy
        consumption demanding.

        The difference between Bluetooth and infrared is that Bluetooth allows communication
        when there is a barrier or a wall.

        4. Wi-Fi (Wireless Fidelity)

        Wi-Fi (Wireless Fidelity) is a standard that certifies that wireless devices in Wireless
        LAN to work together. It supports IEEE802.11b Ethernet standard.

        Wi-Fi uses radio signals to transmit high speed data over the wireless network, the
        Access Point is used to connect devices and it acts as the central device for Wireless
        LAN. Wireless devices can be: smartphones, PDAs, IPad, laptop and notebook.

        APPLICATION ACTIVITY 3.11
        General steps to connect to a WI-FI network near you
        The following steps run through the general steps that anyone needs to take to get
        connected to the internet via WI-FI. (Do this exercise and discover the corresponding
        windows for every step. What is the meaning of different icons forms that a wireless
        network take?)

        Step 1: Locate yourself in a property or public space that has a wireless router.

        Step 2: Make sure that the device you›re going to use is:

                  • Capable of connecting to the internet and

                 • Capable of connecting to WI-FI.

        Step 3: Find out the name of the WI-FI network that the router in your location is
                   transmitting.

        Step 4: Once you know the name of the WI-FI network, use your chosen device to find
                    it.

               3.7. IP Address

               3.7. IP Address


        The fingerprint and addressed letters are ways of identifying and addressing a person.
        A person's fingerprints usually do not change. They provide a way to physically identify
        people. The mailing address of a person can change, as it relates to where the person
        lives or picks up mail. Do network devices have addresses? Justify your answer.

            3.7.1 Understand IP Addresses

        An IP address is an address used in order to uniquely identify a device on a computer
        network.

              IP Versions

        There are two versions of IP addressknown as IP version 4 and IP version 6

              a. IP version 4

        IP version 4 is the common used IP address,

            a.1 Structure of IP address

        • An IP address is simply a series of 32 binary bits. Because it is difficult for human
           to read a binary IP address, the 32 bits are grouped into fout-8-bits bytes called
            octets.

        • When a computer is configured with an IP address it is entered as doted decimal
           number such as 192.168.1.5

        • When a host receives an IP address , it looks at all 32 bits as they are received by
           the NIC

        • Each octet is made up with 8 bits an each bit has a value. The four groups of 8 bits
           have same set of value.

        • Parts of the IP address
         The logical 32 bits IP address is made up two parts which are network part or network
         address and the second one is host address .

         a.2 Classes of IP version 4

        There are five classes of available IP ranges: Class A, Class B, Class C, Class D and Class
        E, while only A, B, and C are commonly used classes D and E are reserved.
        Here is a listing of these addresses:

        Class A

        In class A the first bit of the first byte is always 0

        0xxxxxxx where x stand for any value (either o or 1)

        Minimum: 00000000
        Maximum: 01111111

        The valid range in class A =

        The range of IPs 127.x.x.x is reserved for the loopback or localhost, for example,
        127.0.0.1 is the common loopback address. Range 255.255.255.255broadcasts to

        all hosts on the local network.
        The first byte in class A represent Network address while the three remaining
        represent the host address thus class A=Network. Host-Host-Host

        Class B

        In class B the first bit of first byte is always 1 and the second bit of first byte is always
        0

        10xxxxxx

        Minimum: 10000000=128
        Maximum: 10111111=191

        Valid range[ 128-191]

        The two first byte in class B represent Network address while the two remaining
        represent the host address thus class B=Network-Network-Host-Host

        Class C

        The first bit of first byte is always 1, the second bit of first byte is always 1 and the
        third bit of first byte is always 0 i.e 1100000


        Minimum: 11000000= 192
        Maximum: 11101111= 223
        Valid range: 192-223
        The three first bytes in class C represent Network address while the last byte remaining
        represent the host address thus class C=Network. Network -Network -Host

        a.3 Subnet Masks

        A subnet mask help to know which portion of the address identifies the network
        and which portion of the address identifies the host. Class A, B, and C networks have
        default masks, also known as natural masks, as shown here:

        Class A: 255.0.0.0

        Class B: 255.255.0.0

        Class C: 255.255.255.0

        Devices that are attached to a network have two addresses that are similar to a
        person’s fingerprints and a person’s mailing address. These two types of addresses
        are the Media Access Control (MAC) address and the IP address. The MAC address is
        hard coded onto the network interface card (NIC) by the manufacturer and it does
        not change. The IP address is assigned to a host to the network and may change.

          b. Internet Protocol Version 6 (IPv6)

        IPv6 (Internet Protocol Version 6) also called IPng (Internet Protocol next generation)
        is the newest version of the Internet Protocol reviewed to replace the current version
        of IPv4. IPv6 is designed to allow the Internet to grow steadily, both in terms of the
        number of hosts connected and the total amount of data traffic transmitted.

        IPv6 shows a 128-bit address in eight 16-bitblocks separated by colons

        Example: 3ffe:1900:4545:3:200:f8ff:fe21:67cf.

        FE80:0000:0000:0000:0202:B3FF:FE1E:8329

          b.1 Features of IPv6

        • Supports source and destination addresses that are 128 bits (16 bytes) long.

        • No more NAT (Network Address Translation)

        • Auto-configuration

        • No more private address collisions. Requires IPSec support to provide two
           security headers which can be used separately

        • Those security headers are Authentication Headers(AH) and Encrypting
           security payload(ESP)

        • Uses Flow Label field to identify packet flow for Quality of Service handling by
           router.

        • Allows the host to send fragments packets but not routers.

        • Does not require manual configuration or DHCP.

        • Moves optional data to IPv6 extension headers.

        • Uses Multicast Neighbor Solicitation messages to resolve IP addresses to linklayer
           addresses.

        • Uses Multicast Listener Discovery (MLD) messages to manage membership in
           local subnet groups.

        • Uses ICMPv6 Router Solicitation and Router Advertisement messages to
          determine the IP address of the best default gateway

        Why there is no different classes in IP v6?

        In IPv4 we have class A, B, C,D and E. In IPv6 we have only global prefix and interface
        id

        IP v6 has three types of addresses, which can be categorized by type and scope:

        Unicast addresses: a packet is delivered to one interface.

        Multicast addresses: a packet is delivered to multiple interfaces.

        Anycast addresses:a packet is delivered to the nearest of multiple interfaces (in
        terms of routing distance).

        3.7.2. IP address assignment1. Static IP assignment

         The manual configuration of a host in a network, allows to assign the static IP address
         and the following information has to be specified:

        IP address - identifies the computer on the network

        Subnet mask - is used to identify the network on which the computer is
           connected

        Default gateway - identifies the device that the computer uses to access the
        Internet or another network

        Optional values - such as the preferred Domain Name System (DNS) server
        address and the alternate DNS server address

        Note that host on the same network should have the same Network ID

        APPLICATION ACTIVITY 3.12

        Go through all these steps to assign to your computer a static IP address

        STEP 1: Go to Network Connections.

        STEP 2: Go to the network connection your computer is currently using, then
                     select Properties.

        STEP 3: Go to Internet Protocol Version 4 (IPv4) from the list and click the Properties
                     button
        STEP 4: Choose Use the following IP address option

        NOTE: When assigning a static IP address, make sure to set a value that will not
                    conflict with others on your network. You may refer to your router documentation
                   for the range of IP address that it assigns to its devices.

        STEP 5: Next to the IP address field, enter the IP address value you want to assign
                      to the computer.

        NOTE: If the DHCP range of your router is from say 192.168.1.100-200, you can use
        any range from 192.168.1.2-99 for example.

        STEP 6: In the Subnet mask field, enter “255.255.255.0.”

        STEP 7: In the Default gateway field, enter the IP address of your router or gateway
                      device.

        NOTE: Usually, the default gateway address for most routers is 192.168.1.1. Again,
        you may refer to your device documentation to determine the correct IP address
        of your router.

        STEP 8: For the Preferred DNS server and Alternate DNS server fields, you can take
                     a look for the exact DNS values that your router is getting from your ISP, which can
                     be usually found by accessing your router’s configuration page.

        STEP 9: Click OK on all windows to save your changes.

        3. Dynamic IP configuration

        A DHCP (Dynamic Host Configuration Protocol) server automatically assigns IP
        address to host. It simplifies the addressing process. DHCP server can automatically
        assign to a host an IP addres, Subnet mask, Default gateway and Optional values,
        such as a DNS server address

        APPLICATION ACTIVITY 3.13

        Go through all the steps to assign an IP address using DHCP

        Step 1: Go to network connections

        Step 2: Select “View network connections”.

        Step 3: Locate the “Network connection” you want to view

        Step 4: After locating connection, right –click on it and select “Properties”

        Step 5: Double-click “Internet Protocol Version (TCP/IPv4)”

        Step 6: Select the followings:

                  • Obtain an IP address automatically

                  • Obtain DNS server addresses automatically
                  • OK

        Step 7: Select “OK” and restart your computer.

        3.7.3 Some common protocols

        A protocol is defined a set of rules and procedures that control communication
        between computers or other network devices on a network.

        a. Internet control message protocol (ICMP)

        Internet Control Message Protocol (ICMP) is used by devices on a network to send
        control and error messages to computers and servers. There are several different
        uses for ICMP, such as announcing network errors, announcing network congestion,
        and troubleshooting.

        b. HTTP (Hypertext Transfer Protocol)

        e.g. http://www.reb.rw/
        http:stands for hypertext transfer protocol used to connect computer to the server.
        It provides a standard web browser to communicate with a server FTP (File Transfer
        Protocol)

        This protocol allows you to transfer files between two computers on internet.

             c. TCP and UDP

        Transmission Control Protocol and User Datagram Protocolare most common
        transport layer both protocols that manage the communication of multiple
        applications. The difference between the two are the specification function that
        each protocol implements.

        d. SMTP (Simple mail Transfer protocol)

        The SMTP stands for Simple mail Transfer protocol is a TCP/IP used in sending and
        receiving e-mails. However, since it is limited in its ability to queue message at the
        receiving end, it is used with one of two other protocols POP or IMAP that let users to
        save messages in server mailbox and download them from the server once needed.

        e. POP (Post Office Protocol)

        Post Office Protocol is a protocol designed to allow single user computer to retrieve
        electronic mail from a POP server via TCP/IP.

        3.7.4 Commands used to verify computer connection on a network

        3.7.4.1 Ping

        The command Ping is commonly used to test connections between computers.
        Ping is a simple but highly useful command-line utility used to determine whether a
        specific IP address is accessible.

        3.7.4.2 ipconfig

        The ipconfig command is used to find out your current local IP address, default
        gateway, TCP/IP settings and more.

        All Ipconfig commands explained:

                  i. ipconfig/all: it displays all current IP information for all adapters.

                  ii. ipconfig /release: Used to release current IP information and obtain a
                      new IP Address from the DHCP server.

                iii. ipconfig /renew: it is used to renew IP Address if you have it set to

                   obtain IP Address automatically.

         3.8. Data and device sharing

           ACTIVITY 3.10(b)

        1. Share a folder with your classmate on your school computer network

        2. Identify how resource are shared on computer network

        3.8.1 Workgroup


        A workgroup is a collection of computers and servers on a LAN that are designed
        to communicate and exchange data with one another. Each individual workstation
        controls its user accounts, security information, and access to data and resources.

        APPLICATION ACTIVITY 3.14

        Go through the steps below in order to create a WorkGroup

        Step 1: Open the Start menu, do a search for HomeGroup and press Enter.

        Step 2: Click Create a HomeGroup.

        Step 3: Click Next.

        Step 4: Choose what to share on the network. By default Windows sets Pictures, Videos,
        Music, and Printers & Devices as Shared. However, the Documents folder is marked as
        not shared.

        Note: The sharing options you choose will only apply to devices connecting with
        different accounts. If you sign-in with the same user account on another computer,
        you will have access to all files regardless of what you chose to share.

        Step 5: Once you've decided what content to share, click Next.

        Step 6: The wizard will complete the setup, and you'll be presented with a HomeGroup
        password, which is needed to allow other computers to access files and printers. Write
        down or click the link to print the password.

        APPLICATION ACTIVITY 3.15

        Go through these steps to add computers to a HomeGroup

        Step 1: Open the Start menu, do a search for HomeGroup and press Enter.

        Step 2: Click the Join now button.

        Note: If you don't see the Join now button, there is something wrong, make sure
        you're connected to the network and restart your computer.

        Step 3: Click Next.

        Step 4: Select the content you want to share on the network by using the drop
        down menu for each folder and click Next.

        Step 5: Enter your HomeGroup password and click Next.

        Note: If you're signed into another computer, but you're using your Microsoft
        Account, then you won't be prompted to enter a password.

        Step 6: Click Finish to complete the task.

        3.8.2 Network Resource Sharing

        First determine which resources will be shared over the network and the type of
        permissions users will have to the resources. Any device which is connected to a
        host /node is called a Network Peripheral in other word network peripheral is any
        device that is indirectly connected to the network. Examples of network peripheral
        are: printer, scanner

        APPLICATION ACTIVITY 3.16

        Go through the steps below to add new folders to shared HomeGroup libraries

        Step 1: Use the Windows key + E keyboard shortcut to open File Explorer.

        Step 2: On the left pane, expand your computer’s libraries on HomeGroup.

        Step 3: Right-click Documents.

        Step 4: Click Properties.

        Step 5: Click Add.

        Step 6: Select the folder you want to share and click Include folder.

        Step 7: Click Apply.

        Step 8: Click OK.

        Application activity 3.17

        Go through these steps to add new folder via Windows network share to your
        HomeGroup

        Step 1: Right-click the folder you want to share.

        Step 2: Select Share with and click the Homegroup (view) option.
        Users can access the newly shared folder by:

        Step 3: Using the Windows key + E keyboard shortcut to open File Explorer.

        Step 4: Clicking Network on the left pane.

        Step 5: Double-clicking the computer name with shared content, and browsing the
                    folder location.

        By default, every HomeGroup folder shared on the network are set with read only
        permissions. It has to be this way to prevent accidental deletions and modification to
        your files by other users.

        3.9. Network Topology

        ACTIVITY 3.11

        Draw a Peer-to-peer network and assign each host an IP address. Network must have 1
        switch, 8 computers, one printer which has NIC card and a printer.

        The network topology describes the configuration of network, the physical and
        logical arrangement of nodes that form a network. Network topologies are classified
        as physical, logical and signals topologies.

        Physical topology describes the mapping of network nodes and physical connection
        between them. Signal topology describes the paths which signals take while they
        pass over network that mapping of the paths taken by data as they travel over
        network. A logical topology is the way data signals pass from one device to another.

        There exist different types of network topologies which are Bus topology, Ring
        topology, Star topology, Mesh topology, Tree topology and Hybrid topology,

        3.9.1 BUS Topology

        Bus topology is a network type in which every computer and network device is
        connected to single cable. When it has exactly two endpoints, then it is called Linear
        Bus topology.

        It is the most used and employed in LAN architecture. All devices are connected to a
        central cable, called the bus or backbone. This topology is relatively inexpensive and
        easy to install for small networks.

        Features of Bus Topology

        1. It transmits data only in one direction.

        2. Every device is connected to a single cable

        3.9.2 RING Topology

        It is called ring topology because it forms a ring as each computer is connected to
        another computer, with the last one connected to the first. Exactly two neighbors
        for each device. In a Ring topology each device is connected directly to two other
        devices, one on either side of it, to form a closed loop. This topology is relatively
        expensive and difficult to install, but it offers high bandwidth and can span large
        distances

        A ring topology is a computer network configuration in which computer connections
        create a circular data path. Each networked computer is connected to two others
        like points on a circle.

        In a ring network, data travel from one device to the next until they reach their
        destination. Most ring topologies allow data to travel only in one direction called
        a unidirectional ring network. Others permit data to move in both directions called bidirectional.

        3.9.3 STAR Topology

        In this type of topology all the computers are connected to a single hub or a switch
        through a cable. This hub or switch acts as the central device and all others nodes
        are connected to the central device.


        So, in a Star topology all devices are connected directly to a central computer or
        server. Such networks are relatively easy to install and manage

        Features of Star Topology

              1. Every node has its own dedicated connection to the hub.

              2. Hub acts as a repeater for data flow.

             3. Can be used with twisted pair or coaxial cable.

        3.9.4 MESH Topology

        • It is a point-to-point connection to other nodes or devices. All the network
        nodes are connected to each other. A Mesh topology can be either a full mesh
        or a partial mesh. In the former, each computer is connected directly to each
        of the others.

        Types of Mesh Topology

        1. Partial Mesh Topology: In this topology some of the systems are connected
        in the same fashion as mesh topology but some devices are only connected to
        two or three devices.

        2. Full Mesh Topology: all devices are connected to each other which is very
        expensive but provides the best redundancy as a failure of a single does not
        affect the network connectivity.

        Features of Mesh Topology

        1. Fully connected.

        2. Robust.

        3. Not flexible.

        3.9.5 Tree Topology

        It has a root node and all other nodes are connected to it forming a hierarchy. It is
        also called hierarchical topology. It should at least have three levels of hierarchy.

        Features of Tree Topology

        1. Ideal if workstations are located in groups.

        2. Used in Wide Area Network.

        3.9.6 Hybrid Topology

        Hybrid, as the name suggests, is mixture of two different things. Similarly in this
        type of topology that integrate two or more different topologies to form a resultant
        topology which has good points (as well as weaknesses) of all the constituent
        basic topologies rather than having characteristics of one specific topology. This
        combination of topologies is done according to the requirements of the organization.

        For example, if there exists a ring topology in one office department while there is a bus
        topology in another department, connecting these two will result in hybrid topology.
        However, connecting two similar topologies cannot be termed as Hybrid topology.

        Notice that the cost of technology, network devices, and transmission mediums to
        be used in the computer network has to be considered while choosing the network
        topology to use.

        APPLICATION ACTIVITY 3.18

        Using clear example, compare computer network devices, network peripherals
        and computer peripherals?

        1. In an organization there are 20 computers distributed into different offices
            and all offices share one printer .The managements wants to build a
             computer network that connects all the computers and printer.

             i. Identify a topology to use in this situation

             ii. Draw arrangement of computers using identified topology

        2. Draw a hybrid topology


        • Key Unit Competency: To be able to identify concepts of database and differentiate
          database models

          INTRODUCTORY ACTIVITY

          Observe the following diagram showing the collection of files for the school. Answer
          to the questions below:

          4.1. Definitions of key terms

          Activity 4.1 1.

          1. Interview someone from the administration office at your school who
              is dealing with student’s information on daily basis. In your interview,
              include the following questions:

             a. How do you collect data of students?

             b. What are the data do you need from the student?

             c. Where are you keeping that data?

             d. How do you call the set of all information related to students?

             e. Have you full information about students

              f. With whom else do you share that information?

          2. After you have done the interview, write up findings in the form of report
              to be presented to the class.

                 i. Data

          Data is commonly referred to as ‘raw’ data – a collection of text, numbers and
          symbols, images with no meaning. Data therefore has to be processed, or provided
          with a context, before it can have meaning.

               ii. Information

          Information is the result of processing data, usually by computer. This results in
          facts, which enables the processed data to be used in context and have meaning.
          Information is data that has meaning.

          iii. Database

          Database is an organized collection of related data. It is considered to be
          organized because the data is stored in categories that are accessible in a logical
          manner. A database is a collection of one or more relations, where each relation is a
          table made of rows and columns.

          Note: An information system is a combination of computer hardware and software
          that is designed to create, store, process and present information. The heart of all
          information systems is a database.

          In general data management consists of following tasks:
          Data capture, Data classification, Data storage, Data arranging, Data retrieval, Data
          maintenance, Data verification, Data coding, Data editing, Data transcription, Data
          transmission.

          Application Activity 4.1

          Using the following exam results of S5MCE students:

          1. KANEZA has 39/40 in Math, 37/40 in C++, 20/20 in ICT and 15/20 in English,

          2. CYUSA has 40/40 in C++, 35/40 in Math, 18/20 in ICT, and 17/20 in English

          3. KEZA has 35/40 ni Math, 38/40 in C++, 19/20 in ICT and 16/20 in English,

          4. NTWARI has 35/40 in Math, 35/40 in C++, 16/20 in ICT and 15/20 in English,

          5. MUTESI has 37/40 in Math, 37/40 in C++, 20/20 in ICT and 20/20 in English

          Using spreadsheet:

          a. Organize the students’ marks in a table

          b. Calculate total marks

          c. Calculate the Calculate the percentage

          d. Arrange their marks by descending order

          4.2. Different area where database can be applied

          Databases touch all aspects of our lives such as:

          1. Human resources: to track information about employees

          2. Banking: to keep customer information, accounts, and loans, and banking
              transactions.

          3. Airlines: to keep for reservations and schedule information. Airlines were
              among the first to use databases in a geographically distributed manner

          4. Universities: to keep student information, course registrations, and grades.

          5. Credit card transactions: to keep purchases on credit cards and generation
          of monthly statements.

          6. Telecommunication: to keep records of calls made, generating monthly
              bills, maintaining balances on prepaid calling cards, and storing information
              about the communication networks.

          7. Finance: to keep storing information about holdings, sales, and purchases
             of financial instruments such as stocks and bonds.

          8. Manufacturing: to keep management of supply chain and for tracking
             production of items in factories, inventories of items in warehouses / stores,
             and orders for items. etc.

          Application activities 4.2

          1. Research and identify the impact of database in society

          2. Present your findings to the class

          4.3. Database approaches

          Activity 4.2

          Mr. Mugabo is managing a shop in our village. All daily sold products are recorded
          manually in book note so that he can know how much money he got. Sometimes
          he uses to write that the payment is cash or not. However, when it is time to make a
          verification of the whole week so that he can buy new products for the shop, he uses
          to meet serious problems related to calculations, to know how much sold, how much
          remain and who have not reimbursed the depts.

          1. How Mr. Mugabo can improve his shop management?

          2. Identify approaches of database which are replacing manual database
              system;

          3. After that replacement of systems where Mugabo will puts some useless
              hard copy files?

          4.3.1 Traditional File Processing Systems (TFPS) approach

          This is an approach which was used earlier, prior to DBMS. With this approach, users
          had to write their application programs to store data in form of files on the computer
          permanent storage device (Hard Disk). A user must have knowledge of programming
          languages but this is not easy for a common computer user, even an experienced
          programmer would find it difficult to write a program each time a new database was
          to be created. Each application program written by a user had to define and manage
          its own data.

          a. Advantages of the Traditional File Processing

          Compared to manual management of information, the Traditional File
          Processing presents the following advantages:

          Simplicity: the design of file processing is more simple than designing
                              Database

          Efficiency: file processing cost less and can be more speed than Database

          Customization: you can customize file processing more easily and efficiently
            than Database because files are related with the application and it have all the
             data needed for that application.

          b. Disadvantages of Traditional File Processing System

          • Separation and Isolation of Data: In file-based approach, data is stored in
            separate files, hence it is difficult to access it.

          Duplication of Data: Duplication of data means same data being stored more
            than once. This can also be termed as data redundancy.

          Misuse of storage space: Duplication of data leads to misuse of storage space.
            If the storage space is not properly it will have a direct impact on cost. The cost
            will increase.

          Loss of data integrity: Data integrity means that the data contained in the
            database is both accurate and consistent (Data inconsistency means different
            copies of the same data will have different values).

          Data Dependence: In traditional file processing, the structure of data files is
            embedded in the application programs, so any changes to the structure of a
            file may require changing all programs that access this file.

          Security problems: File based approach is not secured because different files
          are stored in different locations.

          Application activity 4.3

          Located in Nyarugenge District, Lycee de Kigali has 50 teachers and there are
          different departments within. There are 3 departments that need information
          about those teachers namely Salaries, Restaurant and Dispensary. The information
          for salaries is represented as follows:

          MUNEZA is from Huye district, Salary is 11000, born on 1/3/1991and his bill is 10000.
          UMUTESI was born on 7/9/1992, in Gisagara district, Salary is 11000 and his bill is 15000
          MUKANTWARI is from Gatsibo district, she was born on 3/2/1990, Salary is 12000, her bill is 12000.
          NYINAWUMUNTU is from Gasabo and born on 3/1/1992 her Salary is 15000 and bill is 11000.
          KABALISA is from Musanze district, born on 3/2/1980, Salary is 13000 and bill is 10000

          Information for Dispensary is:

          MUNEZA from, Huye , Salary is 11000, born on 1/3/1991, bill is 5000.
          UMUTESI born on 7/9/1992, from Gisagara, Salary is 11000, bill is 1000
          MUKANTWARI from Gatsibo born on 3/2/1990 Salary is 12000, bill is 2000
          NYINAWUMUNTU from Gasabo born on 3/1/1992 Salary is 15000, bill is 1000
          KABALISA from Musanze born on 3/2/1980 Salary is 13000, bill is 1200

          In groups do the following:

          a. Analyze how information is organized in 3 departments

          b. Write down your critics about this information management in respective
            departments

          c. What do you propose as a solution to minimize the cost of information
              management at Lycee de Kigali?

          4.3.2 Database Management System (DBMS)

          Database Management system (DBMS) is referred to as a software system that
          is used to store, access, manage, organize, maintain, modify and delete data from
          databases. Some of the most popular software include, Microsoft Access, Oracle,
          Microsoft SQL Server, MySQL

          MySQL is, one of the most popular database management systems used when there
          is a need to have access to information online.

          a. The advantages of database management system

          There are many advantages of database management system.

          1. Reduce data redundancy: Data redundancy refers to the duplication or
             repetition of data. The database system is used to eliminate the problems
              of data redundancy and data inconsistency.

          2. Data integration: Data integrity means that the data contained in the
              database is both accurate and consistent.

          3. Data Independence: Data independence means that programs are isolated
             from changes in the way the data are structured and stored.

          4. Reduce data inconsistency: Actually, data redundancy and data
             inconsistency are inter-related. If data redundancy is controlled, then data
             inconsistency will also be controlled automatically. Data inconsistency
             means different copies of the same data will have different values.

          5. Data sharing: Due to the fact that data is centralized, many different users
             from different locations can share data.

          6. Data recovery after a crash (a break down): DBMS allows to recover data
             after a crash. The crash may depend on power failure or hardware failure.

          7. Concurrent transaction control: A transaction means a collection of
            operations that perform a single action in a database.

          8. Increased Data security and safety: DBMS allows data to be highly
              protected against unauthorized access.

          b. Disadvantages of DBMS

          The disadvantages of the database approach are summarized as follows:

          1. Complexity: The provision of the functionality that is expected of a good
             DBMS makes the DBMS an extremely complex piece of software. Database
            designers, developers, database administrators and end-users must
            understand this functionality to take full advantage of it.
            Failure to understand the system can lead to bad design decisions, which can
            have serious consequences for an organization.

          2. Size: The complexity and breadth of functionality makes the DBMS an
          extremely large piece of software, occupying many megabytes of disk
          space and requiring substantial amounts of memory to run efficiently.

          3. Performance: Typically, a File Based system is written for a specific
          application, such as invoicing. As a result, performance is generally very
          good.

          However, the DBMS is written for general purpose, to cater for many applications
          rather than just one. The effect is that some applications may not run as fast as
          they used to.

          4. Higher impact of a failure: The centralization of resources increases
             the vulnerability of the system. Since all users and applications rely on
             the availability of the DBMS, the failure of any component can bring
             operations to a halt.

          5. Cost of DBMS: The cost of DBMS varies significantly, depending on
              the environment and functionality provided. There is also the regular
              maintenance costs.

          6. Additional Hardware costs: The disk storage requirements for the DBMS
             and the database may necessitate the purchase of additional storage
             space.

          Furthermore, to achieve the required performance it may be necessary to
          purchase a specicalised computer (server), dedicated to running the DBMS.
          The procurement of additional hardware results in further expenditure.

          7. Cost of Conversion: In some situations, the cost of the DBMS and extra
              hardware may be insignificant compared to the cost of converting existing
              applications to run on the new DBMS and hardware.

          This cost also includes the cost of training staff to use these new systems
          and possibly the employment of specialist staff to help with conversion and
          running of the system.

          This cost is one of the main reasons why some organizations feel tied to their

          current systems and cannot switch to modern database technology.

          Application activity 4.4

          1. Compare Database Management System and traditional File processing system
          Check the DBMS existing in computers of the school computer lab. If they are more
          than one, discuss the similarities and differences of them.

          4.4 Database access levels and users

          Activity 4.3

          Activity 4.3

          Observe and interpret the following figure.


          4.4.1. Database access levels

          A major purpose of a database system is to provide users with an abstract view
          of the data. That is, the system hides certain details of how the data are stored
          and maintained. There are three-levels that form the basis of modern database
          architectures:

          The internal level has an internal schema, which describes the physical storage
          structure of the database. The internal schema uses a physical data model and
          describes the complete details of data storage and access paths for the database.
          The conceptual level has a conceptual schema, which describes the structure of
          the whole database for a community of users.

          The conceptual schema hides the details of physical storage structures and
          concentrates on describing entities, data types, relationships, user operations,
          and constraints. Usually, a representational data model is used to describe the

          conceptual schema when a database system is implemented. This implementation
          conceptual schema is often based on a conceptual schema design in a high-level
          data model.

          The external or view level: The external view level is closest to the users. It is
          concerned with the way the data is viewed by individual users. A user can either
          be an application programmer or an end-user. The external level consists of many
          different external views of database. At the view level, computer users see a set of
          application programs that hide details of the data types.

          The purpose of the three-level architecture is to separate the user application and
          the physical database. Different users need different views of the same data.

          For example users should not have to deal directly with the physical database
          storage details. While the database administrator should be able to change the
          database storage structure or storage device without affecting other user’s views.

          4.4.2 Database users

          When considering users of a Database system, there are three broad classes to
          consider:

          a. Database administrator (DBA):

          Responsible for authorizing access to the database, for coordinating and
          monitoring its use, acquiring software and hardware resources, controlling its use
          and monitoring efficiency of operations.

          b. The database designer:

          Responsible to define the content, the structure, the constraints, and functions or
          transactions against the database. They must communicate with the end-users
          and understand their needs.

          c. The end-user:

          End-users, They use the data for queries, reports and some of them update the
          database content.

          Application Activity 4.5

          From the above figure, explain different access level and right form your school
          hierarchy such as headmaster, DOS, teachers, students, visitors.

               a. Assign each user from the hierarchy what is supposed to do. Example:
                   Everything happening in your school is hidden from the visitors.

              b. What is responsibility of DBA?

          4.4.3. Data Independence

          Activity 4.4

          The modification of an application used to access a database does not modify the
          database itself.

          In groups, discuss this assertion

          .
          Data Independence: The ability to modify a scheme definition in one level without
          affecting a scheme definition in a higher level is called data independence.
          There are two kinds of data independence:

          a. Logical data independence

          The ability to modify the conceptual scheme without causing application programs
          to be rewritten.
          Immunity of external schemas to changes in the conceptual schema usually done
          when logical structure of database is altered.

          b. Physical data independence

          The ability to modify the internal scheme without having to change the conceptual
          or external schemas. Modifications at this level are usually to improve performance.

          Application activity 4.6

          1. Discuss about logical independence and physical independence

          2. Compare data dependence and data independence in database 4.5.4.
              Data models

          4.4.4. Database models

          Activity 4.5

          Search and summarize found information on Data Models focusing on:

          a. Common data models

          b. Definition of common data models

          A data model is a collection of concepts and rules for the description of the structure
          of the database. Structure of the database means the data types, the constraints
          and the relationships for the description or storage of data respectively.
          The most often used data models arenHierarchical model network model and

          Relational model

              i. Hierarchical Model

          The hierarchical model organizes its data using a tree structure. The root of the
          tree is the parent followed by child nodes. A child node cannot have more than
          one parent, though a parent can have many child nodes.

          ii. Network Model

          In the network model, entities are organized in a graph, in which some entities
          can be accessed through several paths.


          iii. Relational Model

          In this model, data is organized in two-dimensional tables called relations.
          The tables or relation are related to each other.
          A relational database is a collection of relational tables.
          The following is a graphical representation of entities and their relationships in a
          database structure.

          Notice that since more than three decades, the most used database model is the
          Relational models. This justifies the fact that most of the currently used DBMS are
          all relational. They are hence called relational Database Management Systems
          (RDBMS).

          The database systems in their differences and similarities all serve to manage
          databases. The tables bellow present in summary the Database models Time
          frame and description, the Database Models Physical Structure, the Database
          models Structural Changes, the Database models Relationships, the Database
          models Advantages, the Database models Disadvantages, the Database models
          Examples and the Database models Status Today.

          Database models Comparison








          Application Activity 4.7

          In groups, do a research on Relational Database Management Systems. Present the
          report in class using presentation software.

          END OF UNIT ASSESSMENT

          1. What is the purpose of managing information?

          2. Give the difference between File Processing System and Database
               Management System approach.

          3. Discuss data independence and explain its importance in database
             environment.

          4. Discuss the uses of databases in business environment.




          • INTRODUCTORY ACTIVITY

            Consider the Company AMAHORO Ltd with departments like Accounting and Finance,
            Human Resource and ICT. Each department has its own employees who are each
            identified by Id, First Name, Surname, Salary, telephone number and Address.

            Suppose that this Company uses the file approach to keep information of its employees,
            where each department has its own file to store necessary information. The payroll file
            is managed in Accounting and Finance departments and a record of an employee’s
            salary is described by Employee Id, First name, Surname and Salary Amount.

            Assume that a new column for the date of recruitment is to be added to the payroll and
            there is a request in Accounting and Finance departments to retrieve all the employees’
            details whose salaries are greater than 100,000 FRW. One employee finds that his/her
            first name was not correctly written on the payroll.

            Since each department has own separate file, it is difficulty to the Human Resource
            Manager to access all the files and make any modification any time he/she wants.

            1. Discuss whether the approach described above is well designed?

            2. Describe the difficulties each department may encounter?

            3. Discuss and Suggest the CEO of this Company the best and efficient
               approach to be used for overcoming all difficulties.

            5.1 INTRODUCTION

            Sometimes ago, organizations usually stored information in a way which was with
            many risks of being lost, damaged, corrupted and not well organized. It was kept
            inTraditional File Processing (TFP) which presented many disadvantages.

            Nowadays, well-designed database arises to overcome those problems and saves the
            time in the long run for the user. It is facilitated by a Database Management Systems
            (DBMS). The design of such database presents 3 main levels called “Database design
            levels”. These levels help to make easy the understanding and the management of a
            database. Later on, it will not be very difficult for the software developer to use that
            database.

            ACTIVITY 5.1

            Read the following scenario and give answers to the asked questions

            Your school needs to keep information securely of its teachers, students, combinations
            and courses. Each teacher is characterized by its identity number, first name, second
            name, salary, qualification, address, telephone number and email.
            The Combination is identified by its Id and Name. The student identified by its Id, First
            Name, Surname, Address, School fees, Contact Number, Combination Id, Class and
            Course is identified by the Course Id, Title, Combination,
            From the above,

            1. Discuss the data types for the attributes identifying entity Teacher,
                Combination, Student and Subject.

            2. Describe the relationships between entities: Teacher, Combination,
                Student and Subject?

            5.1.1 The conceptual level

            The conceptual levelis concerned with concept(abstract), an idea of what something
            is or how it works; something formed in the mind; a mental image.

            There exist different models used for the conceptual level to represent all the data
            elements likely to belong to the database but the most used is the Entity- Relationship
            Model (ERM) It uses the main concepts like entities, attributes and relationships.

            An entity represents a real-world object such as an employee or a project and has
            attributes that represent properties such as EmpId, FirstName, Surname, Address
            and Birthdate. A relationship represents an association or a link among entities.

            For example, when an employee works on many projects, a relationship exists
            between the employee and each project.

            If an employee is identified by EmpId, FirstName, Surname, Address and Birthdate
            while a project is identified by its ProjectId and ProjectName, the diagram
            representing the Entity Relationship is the following.
            5.1.2 The logical level

            The logical level makes it possible to create relational structures enabling us to put
            into practice the conceptualization by imagining a relational Database Management
            System (DBMS). It is characterized by clear and sound reasoning. At this level there
            exist different models like network data models and hierarchical data models and
            relational model. Currently the mostly used is the Relational model. In the case of
            database having Employee and Project entities the relational model is represented
            by the following tables.
            5.1.3 Physical level

            The physical level is concerned with how data will be encoded and stored. It
            consists of the practical application (Database Management Systems - DBMS) of
            all the preceding theories by using computers together with its software to create
            a database. It deals with storage and processing performance, volumetric (time &
            space), partitioning and distribution.

            The most known development tools to use are MS Access, MySQL (My Structured
            Query Language), SQL (Structured Query Language) and NoSQL.
            Application Activity 5.1

            Galleries keep information about artists, their identification, their names, birth address,
            age, and art style. For each piece of artwork/product, the artist, the production year, its
            title, its type of art (e.g., painting, filmmaking, photograph, crafts, sculpture, drawings,
            etc), and its price in FRW must be stored. Pieces of artwork are also classified into
            groups of various kinds, for example, Rwandan art, 19th-century Art(old testament,
            the French art,Haloween,etc), works by Pablo Picasso; a given piece may belong to
            more than one group.Each group is described by an id and name.

            Finally, galleries keep information about customers. For each customer, galleries keep
            that person’s unique identification, full name, and address, total amount of FRW spent
            in the gallery, the artists and groups of art that the customers tend to appreciate.

            Draw conceptual, logical and physical levels for the above described database.
            Example: SCHOOLS Database

            • A View for registrar office
            Course info (coursid:string,enrollment:integer)

            • The conceptual schema:
            Students(studid: string, name: string, login:string, age: integer, gpa:real)

            Courses(coursid: string, ccoursname:string, courcredits:integer)

            Enrolled(sstudid:string, coursid:string, grade:string)

            • The physical schema:

            Relations stored as unordered files.

            Index on first column of Students.

            5.2. DATABASE DESIGN STEPS

            Learning Activity 5.2.

            Read the following scenario and give answers to the asked questions
            At Groupe Scolaire Kinazi, the management of students’ information is not
            computerized. The Headteacher is looking for a solution so that the database of
            students can be managed digitally and hence speed up the production of transcripts
            and the search of information when they are requested for. If you are given the task to
            design that database, how are you going to proceed?

            1. Discuss the different steps to use so that you can succeed the
                assignment.

            2. Discuss the financial savings made by the school when using
               computerized application instead of manual system.

            The most important thing to do to start designing a database is to think ahead.
            When a case that needs a database creation is presented, before to switch on the
            computer, it is better to think about the type of information to work with and the
            types of questions that the database should answer, what information needs to
            be stored and what specifically are the links between them. The next phases are
            to verify all requirements specifications, to represent the data with diagram, and
            to plan the database, here are three rules of database design: Rule 1-Plan; Rule
            2-Plan; Rule3-Plan.

            When data is more complex, there are more needs to plan. Even the simplest
            database should be thought through on paper before being created in any tool such
            as Microsoft Access, SQL, MySQL, etc.

            A well-designed database performs well and adapts to future needs by giving users
            access to essential information. Poor planning often results in a database that fails

            to meet overlooked needs.

            In planning the database, regardless of its size and complexity the following basic
            steps are used:

            1. Investigate the information.

            2. Identify the objects.

            3. Model the objects.

            4. Identify the types of information for each object.

            5. Identify the relationships between objects.

            6. Database optimization through normalization.

            7. Data entry and manipulation

            5.2.1. Investigate information

            Before creating a database, there is a need of good understanding of the problem
            that the database is expected to solve. If the database is to replace the traditional
            method, file based approach method, then the existing system will give most of the
            information needed.

            During investing information, there is a need to work with everyone involved in the
            existing system to see what is needed from the new database. Gathering techniques
            include collect copies of customer information, management reports, and any other
            documents that are part of the existing system, because these will be useful in
            designing the database and the interfaces.

            5.2.2. Identifying the important entities and their attributes

            During the process of gathering/investigating information, the key objects or
            entities that will be managed by the database must be identified. The object can be
            a tangible thing, such as a person (for example student, employee, and patient) or a
            product, or it can be a more intangible item, such as a department in an institution,
            a Combination in a school. Each distinct item in the database should have a
            corresponding table for which column titles are attributes of the entity

            5.2.3. Identifying the Relationship Between entities

            One of the strengths of an E-R database is the ability to relate or associate information
            about various items in the database.

            Isolated types of information can be stored separately, but the database can combine
            data when it is required. Identifying the relationship between entities in the design
            process requires looking at the entities, determining how they are logically related,
            and adding relational columns that establish a link from one table to another.

            5.2.4. Modeling the objects

            As the objects in the system and their attributes are identified, they are recorded in
            a way that represents the system visually. They are recorded using Relational model
            and Entity Relational model

            5.2.5. Identifying the types of information for each object

            After identifying the primary objects/entities in the database as candidates for
            tables, the next step is to identify the types of information that must be stored for
            each object.

            These are the columns in the table of the object.

            Fields/columns should be kept simple, the more atomic your fields the more flexible
            will be your database.

            For example, in a database of names and addresses, you would keep each part of
            the person’s name as a separate field.

            The columns in a database table contain a few common types of information:

            Raw data columns

            These columns store tangible pieces of information, such as names.

            Categorical columns

            These columns group the data and store a limited selection of data such as true/
            false, married/single/divorced/widowed, Male/Female, etc.

            Identifier columns

            These columns provide a mechanism to identify each item stored in the database
            table. These columns frequently have an id or number in their name, for example,
            EmployeeId, StudentId, PersonIdNo and InvoiceNumber. The identifier column is the
            primary component.

            Relational or referential columns

            These columns establish a link between information in one entity and related
            information in another entity.

            For example, an entity that tracks sales transactions will generally have a link to the
            customer’s entity so that the complete customer information can be associated with
            the sales transaction.

            5.2.6. Database optimization through normalization

            One of the most important step to consider when designing a database is database
            definition. If tables are not set up properly, it can cause a lot of headaches down
            the road the time of extracting/retrieving required data. Understanding the rules
            of normalization enforces redundancy elimination and inconsistent dependency in
            database designs.

            5.2.7. Data entry and manipulation

            The goal of data entry is to create data that are valid and well organized to assure
            their quality during extraction. Well stored data leads to data consistency.

            Application activity 5.2.

            Discuss the benefits of following database design steps?

            5.3. RELATIONAL MODEL

            Learning Activity 5.3.

            Read the following scenario and give answers to the asked questions
            Suppose that School wants to develop an information system in which student studies
            in one of the combination and learns different subjects. The system will record details
            concerning student, combination and subject.

                  1. Which properties would you expect to find in each student object?

                  2. Arrange those properties in tabular form of mxn dimension

            5.3.1. Introduction

            The relational data model was introduced by C. F. Codd in 1970. Currently, it is the
            most widely used data model. It describes the world as “a collection of inter-related
            relations (or tables).”

                 a. Relation

            A relation, also known as a table or file, is a subset of the Cartesian product of a list
            of domains characterized by a name. You can also think of it this way: an attribute is
            used to define the record and a record contains a set of attributes.

            The steps below outline the logic between a relation and its domains.

            1. Given n domains are denoted by D1, D2 Dn

            2. And r is a relation defined on these domains

            3. hen r C D1×D2×…×Dn

            The following are the key component to know when we are talking about relation:
            Relation, Tuple, Attribute, Cardinality, Degree, Primary key, Domain

            b. Equivalent Database Concepts

            • Relation <=> Table

            • Tuple <=> Row or record

            • Attribute <=> Column or field

            • Cardinality <=> Number of rows

            • Degree <=> Number of columns

            • Primary key <=> Unique identifier

            • Domain <=> Pool of legal values

            c. Table

            Data is stored in rows and columns. Each Row is known as record and the data items
            are known as fields. Tables contain data about one type of item, person or event, for
            example:

            • a table of patients, a table of a student, a table of teacher, a table of books and
            a table of doctor’s appointment

            For a book the fields could include:

              • Title, Author, ISBN, Publication house

            Column

            A database stores pieces of information or facts in an organized way. The principal
            storage units are called columns or fields or attributes. These house the basic
            components of data into which your content can be broken down.

            Records

            Each row represents a group of related data values, such as a customer or an
            employee. A row, or record, is also known as a tuple

            Cell

            The link/intersection between column and record is known as cell. It also needs to
            be available so that they can be reconstituted into their whole form, the basis of all

            databases.

            A simple table below gives us the clearest picture of how records and fields work
            together in a database storage project.

             d. Null value

            In many situations every row and column will contain data, but there cases where it
            makes sense for some columns to not contain a value.
            In our example StudentId cannot be null because it is unique but Sex can be null
            because it is optional field

            e. Degree

            The degree is the number of attributes in a table. In our example above in Figure 5.4
            the degree is 6.

            f. Domain

            A domain is the original sets of atomic values used to model data. A domain is a set
            of acceptable values that a column is allowed to contain.

            For example:

            • The domain of Marital Status has a set of possibilities: Married, Single, Divorced,
                Widowed.

            • The domain of Shift has the set of all possible days: {Monday, Tuesday,
               Wednesday, Thursday, Friday, Saturday and Sunday}.

            • The domain of Salary is the set of all floating-point numbers greater than 0 and
               less than 200,000 FRW.

            • The domain of First Name and Surname is the set of character strings that
            represents names of people.

            g. Datatype

            Each field in a record has its own data type. The data types in the fields can be text,
            alphanumeric, numeric, and Boolean or date/time.

            Table 5.1: Datatype example

            Application Activity 5.3.

            1. Suppose that a hospital wants to develop system which manages
            doctors and patients.

            Patients are treated in a ward by the doctors assigned to them. Each patient will be
            assigned a single doctor. What fields would you expect to find in each record for a
            hospital patient and doctor

            2. The following table describes information about employees, study it
               and answer the following questions :


            a. Using correct terminology, identify and describe all the components of
                employee table.

            b. What is the possible domain for field EmpId?

            c. How many records are shown?

            d. How many attributes are shown?

            e. Explain the datatype for each field.

            5.3.2 Queries in design view

            Learning activity 5.4.

            Microsoft Access is a database management system from Microsoft that deals with
            relational model and it is consisted of the following different views:

            a. Layout view

            b. Backstage view

            c. Design view

            d. Datasheet view

            Which of the view above contains command buttons that execute operations on entire
            databases? Explain its advantages.

            Data in a Microsoft Access database is stored in various interlinked tables. A database
            also has forms for data entry though you could enter data directly in tables and
            queries for manipulating your data and permitting information to be retrieved from
            a table. It also allows filtering so only the required records and fields are seen.

            Steps for creating database in Microsoft Access

            • Open Microsoft Access

            • Click on Blank database in the task pane

            • Name your database file (say Company) and click the Create button to create
               the database.


            Steps for creating a table in Microsoft Access-Design View

            1. Open an created database in access DBMS

            2. Click on create tab from menu bar

            3. In table group click on table design icon

            4. Fill field names, data type and their descriptions

            Data in an Access table is stored in various fields. Those fields have different properties
            such as fieldname, size and data types as shown in the figure below:

            Steps for creating relationship between created tables

            1. Open a created database in access DBMS

            2. Click on database tools tab from menu bar

            3. In relationships group click on relationships icon then the relationships
                 panel will be displayed

            4. Select a table name and click on add button

            5. Repeat step 4 to all table you want to use

            6. Click on design tab from menu bar

            7. In tools panel click on edit relationship icon

            8. On opened window click on create new button

            9. Select the table names and their columns that you want to join

            10. Click on ok button

            11. Repeat 8, 9, and 10 to all pair table to be joined

            After creating a table, enter the data. Note that there are various methods to create
            tables in Access, such as by using Table Wizard, Datasheet view or by importing
            tables, but this Unit restricts only to Design view.


            Steps for creating a query using design view-Query by example

            Creation of a query in design view has three rows, one to sort the fields, the other
            to specify whether or not to display a field, and the last to specify some criteria to
            select the records.

            1. Click on Create tab of menu from bar

            2. In queries grout click on query Design icon

            3. Select tables to use then click on Add button

            4. In Query Type group select a query commend to be used, Example Select

            5. In query panel select the table names and field names you want to select
                in different tables

            6. Check in show row ender the select item if you want to display them on
                output at run time

            7. Rename the created query

            8. In Result group of menu bar click on Run icon

            After the above steps you will get a table containing the selected items as shown in
            the examples below:

            Query 1: Company leader wants to display onlyEmpId, Fullname (sorted is ascending
            order) and salary for all employees.

            1. Select EmpId, EmpId, FullName, Salary and check them

            2. Select Sort by Ascending on FullName

            Output:

            Query2: The CEO wants to see only EmpId and FullNames where Salary is less or
            equal to 240000.
            Select EmpId, EmpId , FullName and check them
            Set criteria and uncheck Salary field


            Query 3: The following search condition was entered using a query design view
            (Query by example) grid:

            What will be displayed?
            Output:


            5.3.3 Dynamic queries using parameter

            A parameter is a piece of information you supply to a query right as you run it.

            Creating a parameter query

            Creating a parameter is similar to adding a normal criterion to a query:

            1. Create a select query, and then open the query Design view.

            2. In the Criteria row of the field you want to apply a parameter to, enter the
                  text that you want to display in the parameter box, enclosed in square
                brackets.
              For example, [Enter the Doj:]

              3. Repeat step 2 for each field you want to add parameters to.
            When you run the query, the prompt appears without the square brackets.

            Fill in the value you’re looking for, and then click OK.

            Specify parameter data types

            To specify the data type for parameters in a query:

            1. With the query open in Design view, on the Design tab, in the Show/Hide
                group, click Parameters.

            2. In the Query Parameters box, in the Parameter column, enter the prompt
                for each parameter you want to specify a data type for.
                Make sure that each parameter matches the prompt that you used in the Criteria
                row of the query design grid.

            3. In the Data Type column, select the data type for each parameter.


            Application Activity 5.4.

            The database WORLD is composed of one table called WORLDCITIES Figure 5.14.
            which stores information about World Cities. Use it to answer asked questions
            1. The query-design view grid below selects all Cities from America where
            Population is greater than 8 million.


            Figure 5.13 QBE grid to display Name of city located in America having population >8M

            Show what would be the output.

            2. Copy and Complete the query design view grid below to select and
               show Name_of_city where Population is greater than to 13 and Area is
               equal to 1590.



            5.4. ENTITY-RELATIONSHIP MODEL

            5.4.1. Introduction

            Learning Activity 5.5.

            A School needs to store information about Teacher (identified by TeacherId, FirstName,
            Surname, Salary, Qualification, Address, Contact); Combination (identified by
            CombinationId, CombinationName),Student (identified by StudentId, FirstName,
            Surname, Address, Schoolfees, ContactNumber) and Subject (identified by subjectId,
            SubjectTitle).

            Discribe the logical relationships between objects Teacher-Student, Teacher-
            Combination, Student-Combination and Teacher-Subject??

            The entity relationship (ER) data model has existed for over 35 years. It is well suited
            to data modelling for use with databases because it is fairly abstract and is easy to
            discuss and explain. ER models are readily translated to relations. ER models, also
            called an ER schema, are represented by ER diagrams.
            ER modelling is based on two concepts:

            • Entities, defined as tables that hold specific information (data)

            • Relationships, defined as the associations or interactions between entities

            5.4.2. Entity Relationship Diagram

            The ER diagram is used to represent the conceptual database schema. In ER diagram:
            Entity, Attributes and Relationships form the components of ER Diagram and there
            are defined symbols and shapes to represent each one of them.

            1. Entity

            A rectangle represents an entity set.

            2. Relationships between Entities
                A diamond represents a relationship.

            3. Entity Types

            • Entity types ->boxes

            • Weak entity type -> double box


            Entity types are similar to classes; they describe potential objects (entities) that will
            appear in the database. Weak entity types describe dependent entities, entities that
            depend on other entities for identity.

            4. Attribute

            An ellipse represents an attribute (Property).



            5. Link between attribute and entity set

            Lines represent linking of attributes (properties) to entity sets.



            5.4.4. Entities and entity sets

            An entity set is a set of entities of the same type that share the same properties. A
            noun is used to represent an entity set. An entity is an instance of an entity set.

            For example, an entity can be:

            • Concrete (TEACHER or STUDENT)

            • Insubstantial (GRADE)

            • An occurrence (EXAM)

            5.4.5. Attributes

            A characteristic of an entity, for example First name, Last name and Age. An attribute
            is a data item that describes a property of an entity set. Attributes determine, explain,
            or categorize an entity set. Attributes have values, which can be of different data
            types such as numbers, character strings, dates, images, sounds, and so on. In a
            physical model, an attribute is a named column in a table. Each table has a list of
            attributes (or columns).

            The types of attributes are:

            Simple (atomic) attribute – This type of attribute has a single component. It is called
            single-valued attribute. For example, the Gender attribute has a single component
            with two values.

            In the COMPANY database, an example of this would be: Name = {John} ; Age = {23}
            Composite attribute – A composite attribute consists of many components.

            For example, the Name attribute has the components Last name and First name. So
            this would be written as → Name = {KAGABO+Peter}

            Address may consist of Province and District, Number, Avenue. So this would be
            written as → Address = {KG +‘14’ + ‘Av’}



            Single valued attribute – This type of attribute has one value for one entity. For
            example, the Title attribute has a single value for each teacher.

            Multi-valued attribute – A multi-valued attribute has many values for one entity.

            An example of a multivalued attribute from the COMPANY database, as seen in
            Figure below, are the degrees of an employee: BSc, MSc., PhD.

            Derived attribute – A derived attribute has its value computed from another attribute
            or attributes.

            A derived attribute is not a part of a table from a database, but is shown for clarity or
            included for design purposes even though it adds no semantic information; it also
            provides clues for application programmers.

            An example of this can be seen in Figure below. Age can be derived from the attribute
            Birthdate

            In this situation, Birthdate is called a stored attribute, which is physically saved to the
            database.



            Unstable attributes - This type of attribute have values that always change. For
            example, the salary of employee.

            Mandatory attributes - Mandatory attributes must have a value. For example, in
            most businesses that track personal information, Name is required.

            Optional attributes - Optional attributes may have a value or be left null; For
            example, address of employee

            Unique identifier - This type of attribute distinguishes one entity from another.

            For example, in a company, you can distinguish between one employee and another
            using a EmployeeID.

            5.4.6. Keys
            An important constraint on an entity is the key. The key is an attribute or a group
            of attributes whose values can be used to uniquely identify an individual entity in
            an entity set. In the case of Logical Model you use a special approach for unique
            identifier.The equivalent concept for unique identifier within Logical Model is a key.

            A key is a field or a set of fields that has/have a unique value for each record in
            the relation. You need a key to ensure that you do not meet redundancies within a
            relation There are several types of keys each having slightly different characteristics:

            Super key-is defined as a set of attributes within a table that can uniquely identify
            each record within a table. Super Key is a superset of Candidate key.

            Candidate key – A candidate key is an attribute or set of attributes that uniquely
            identifies a record in a relation. A candidate key is unique and minimal.

            It is unique because no two rows in a table may have the same value at any time. It is
            minimal because every column is necessary in order to attain uniqueness.

            From our Company database example, if the entity is Employee(SerialNo,EmpId,
            First Name, Surname, Address, Contact, Birthdate, Salary, Depid), possible candidate
            keys are:

            EmpId,

            • SerialNo

            FirstName and Surname – assuming there is no one else in the company with
            the same full name

            Surname and Depid – assuming two people with the same Surname don’t
            work in the same

            Department

            Composite keys – these keys have multiple attributes.
            Using the example from the candidate key section, possible composite keys are:

            • First Name and Surname

            • Surname and Depid

            Primary key – A primary key is one of the candidate keys from a relation. Every
            relation must have a primary key. A primary key shall be at least: - Stable. The value
            of a primary key must not change or become null throughout the life of the entity.

            The primary key is indicated in the ER model by underlining the attribute.

            For example, consider an employee record; using the Age field as the primary key
            would not be appropriate because the value of the primary key must not change
            over time.

            It should be Minimal. The primary key should be composed of the minimum number
            of fields to ensure the occurrences are unique.

            In this case Employee (EmpId, First Name, Surname, Address, Contact, Birthdate,
            Salary, Depid), EmpId is primary key

            Secondary key

            A secondary key is an attribute used strictly for retrieval purposes (can be composite),
            for example: Phone and Surname.
            Alternate key – An alternate key is any candidate key that is not chosen to be the

            primary key. It may become the primary key if the selected primary key is not
            appropriate.

            Simple keys – these keys have a single attribute.

            Foreignkeys – these keys exist usually when there are two or more relations. An attribute
            from one relation has to exist in the other(s) relation. A foreign key is a field (or
            fields) that points to the primary key of another table. The purpose of the foreign key
            is to ensure referential integrity of the data. In other words, only values that are supposed
            to appear in the database are permitted
            In the Company database example below, Depid is the foreign key
            (EmpId, First Name, Surname, Address, Contact, Birthdate, Salary, Depid)

            Attributes and Keys

            • Key attributes must be unique for each entity

            • Keys are used to identify particular entities

            • Partial keys are only partially unique used for weak entity types



            Entity Types and Attributes

            All regular entity types must have a key attribute or set of key attributes, Weak entity
            types must have partial keys, Weak entities get part of their key (and part of their
            identity) from some related entity.


            Nulls

            A null is a special symbol, independent of data type, which means either unknown
            or inapplicable. It does not mean zero or blank.

            Features of null include:

            • No data entry

            • Not permitted in the primary key

            • Should be avoided in other attributes

            • It can represent

            an unknown attribute value

            1. a known, but missing, attribute value

            2. a “not applicable” condition

            Example of null

            Employee Salary table

            In this case commission can be left null

            Relationship sets

            A relationship set is a set of relationships between two or more sets of entities, and
            are regularly represented using a verb.

            A relationship is an instance of a relationship set and establishes an association
            between entities that are related. These relationships represent something important
            in the model. Example: an employee works on a project.

            A relationship set always exists between two entity sets (or one entity set relating
            to itself ). You need to read a relationship set in double sense, from one entity set to
            the other.

            Relationships representation

            Relationships => diamonds
            Identifying relationship => double diamond

            Relationships indicate a meaningful connection between two entity types,
            Relationships may have attributes, but they cannot have key attributes. Identifying
            relationships connect a weak entity type to some other entity type indicates where
            the weak entity gets a key to complete its own partial key

            5.4.7. Degree of a relationship

            The degree of a relationship refers to the number of associated entities. The degree of
            a relationship can broadly be classified into unary, binary, and ternary relationship.

            5.4.7.1. Unary Relationship


            The unary relationship is known as recursive relationship.
            In the unary relationship the number of associated entities is one. An entity is related
            to itself is known as recursive relation.
            An example is shown by the following figure:
            Roles and Recursive Relations

            When an entity set appears in more than one relationship, it is useful to add labels to
            the connecting lines. These labels are called roles.
            In this example, labels “Husband” and “wife” are referred to as roles.
            5.4.7.2 Binary Relationship

            In a binary relationship, two entities are involved. Consider the example where each
            staff will be assigned to a particular department. Here the two entities are STAFF and
            DEPARTMENT.


            5.4.7.3. Ternary Relationship

            In a ternary relationship, three entities are simultaneously involved. Ternary
            relationships are required when binary relationships are not sufficient to accurately
            describe the semantics of an association among three entities.

            Example

            Consider the example of employee assigned a project.
            Here we are considering three entities EMPLOYEE, PROJECT, and LOCATION. The
            relationship is “assigned-to.” Many employees will be assigned to one project hence
            it is an example of one-to-many relationship.

            5.4.7.4. Quaternary Relationships

            Quaternary relationships involve four entities. The example of quaternary relationship
            is “A professor teaches a course to students using slides.” Here the four entities are
            PROFESSOR, SLIDES, COURSE, and STUDENT.
            The relationships between the entities are “Teaches.

            The degree of relationship, which determines how many instances of an entity relate
            to a single instance of another entity is called Cardinality.

            5.4.8. Classifications or types of Relationships

            Based on cardinality, the different types of relationships that can exist between
            entities are:

            5.4.8.1. One-to one (1:1)

            A single instance of an entity can relate to only one instance of the other entity.It
            is the relationship of one entity to only one other entity, and vice versa. It should
            be rare in any relational database design. In fact, it could indicate that two entities
            actually belong in the same table. An example from our Company database is one
            employee is associated with one spouse, and one spouse is associated with one
            employee.

            Other Examples:

            • A person can have only one passport.

            • The relationship between the President and the country is an example of oneto-
               one relationship. For a particular country at a given time, there will be only
               one President. In general, a country will not have more than one President at
               a given time hence the relationship between the country and the President is
               an example of one-to-one relationship.
            5.4.8.2. One-to-many (1: M)

            An instance of one entity can relate to multiple instance of another instance.

            The relationship that associates one record of entity A to more than one record of
            entity B is called one-to-many relationship.

            Example of one-to-many relationship is a country having states.

            For one country there can be more than one state hence it is an example of oneto-
            many relationship. Another example of one-to-many relationship is parent–child
            relationship. For one parent there can be more than one child. Hence it is an example
            of one-to-many relationship.

            For Example,

            • A class has many students.

            • The relationship between EMPLOYEE and DEPARTMENT is an example of
            many-to-one relationship. There may be many EMPLOYEES working in one
            DEPARTMENT. Hence relationship between EMPLOYEE and DEPARTMENT is
            many-to-one relationship.

            5.4.8.3. Many-to-One Relationship Type (M: 1)

            The relationship between EMPLOYEE and DEPARTMENT is an example of many-to-one
            relationship. There may be many EMPLOYEES working in one DEPARTMENT. Hence
            relationship between EMPLOYEE and DEPARTMENT is many-to-one relationship


            5.4.8.4. Many-to-many (M: M):

            Multiple instances of an entity can relate to multiple instances of another entity.
            For our company database. The relationship between employee and department
            is many-to-many relationship.

            Other examples are:

            • A customer can purchase more than one book.

            • The relationship between TEACHER entity and STUDENT entity is an example
              of many-to-many relationship. Many one teacher teaches many students and
              one student is taught by many teachers.
              Employee and project, many employees can work on many projects


            Participation and Cardinality

            Participation and cardinality define constraints on relationships; Participation
            indicates whether an entity is required to take part in a relationship, Cardinality ratios
            and structural constraints place limits on the number of entities that may participate
            in a relationship.

            Participation Constraints

            • Total participation → double or thick line indicates required participation

            • Partial participation →thin line indicates optional participation


            Participation Constraint

            Arrowheads can be used to indicate an upper bound of 1 for participation

            Cardinality Ratios: a cardinality ratios specify the maximum number of relationship
            instances that an entity may participate in.

            Cardinality Ratios: a cardinality ratios specify the maximum number of relationship
            instances that an entity may participate in.



            Structural Constraints

            Structural constraints specify the minimum and maximum number of relationship
            instances that an entity may participate in.


            An employee must work for exactly 1 department. A department must have at least
            4 employees.

            Participation and Cardinality

            There’s generally numerous ways to express a relationship constraint.


            Equivalent Notations

            An employee can manage at most one department.
            A department must have exactly one manager.

            Equivalent Notations

            • An employee must work for exactly one department.

            • A department must have at least one employee.



            Application Activity 5.5

            Given an ER diagrams below

            Write the degree, cardinality, participation and Constraints of each relationship in
            ER diagram

            Write the names of all: weak entities, composite attributes, multivalued attributes,
            composite keys and Partial Key Attribute, derivative attribute, identity relationship.



            Relationships representation

            1. Consider a database used to record information about the marks that
            students get in the different exams of different subject studying in Math-
            Computer Science-Economics combination.

            STUDENT entity is described by StudentId, StudentName and School; SUBJECT_
            STUDYING is identified by SSId, SSName, SSClass and SSRoom and EXAM entity is
            described by EId, EName, ETime and ERoom.

            Construct an E-R diagram that models STUDENT, SUBJECT_STUDYING and EXAM
            as entities that uses ternary relationship.

            5.5. Database optimization through normalization

            Learning Activity 5.6.

            Let consider the database with table CUSTOMER identified by CustomerName,
            Address, TelephoneNumber, CreditLimit, ItemOrdered,Quantity and Price.
            This can easily be implemented in a relational database as follow:


            However, a customer may order several items and each customer in the
            database may order a different number of items. This situation makes it difficult
            to implement the data in a relational database, since we do not know how many
            order entries to allow.

            1. How many order entries our database design would allow every
            customer?

            2. Is this structure simple?

            3. If this database structure is complex, identify the anomalies it has and suggest
                the solution to the database designer to make it simple.

            5.5.1. Introduction

            Another method for designing a relational database is to use a process commonly
            known as normalisation. The goal is to generate a set of relation schemas that
            allows us to store information without unnecessary redundancy, yet also allows
            us to retrieve information easily. The approach is to design schemas that are in an
            appropriate normal form. Therefore, normalisation is a part of the database design
            process. Normalisation is a series of steps designed to remove repeating groups
            and unwanted functional dependencies. Normalisation is a design technique for
            constructing a set of table designs from a list of data items. . It is also used to avoid
            insertion, deletion and updating anomalies. Therefore it used to improve on existing
            table designs.

            5.5.2. Normal Forms

            Normalization theory defines six normal forms (NF). Each normal form involves a set
            of dependency properties that a schema must satisfy and each normal form gives
            guarantees about the presence and/or absence of update anomalies. To correct
            update anomalies in a database, you must convert tables to various types of normal
            forms.

            The most common normal forms are First Normal Form (1NF), Second Normal Form
            (2NF), Third Normal Form(3NF) and Fourth Normal Form(4NF).

            a. First Normal Form

            A relation (table) that contains a repeating group (multiple entries for a single record)
            is called unnormalised relation. Removing repeating groups is the starting point in
            the quest to create tables that are as free of problems as possible. The conversion
            to first normal form (lNF) requires splitting the data into two groups. Tables without
            repeating group are said to 1NF.

            A relation is in first normal form if and only if the domain of each attribute contains
            only atomic (indivisible) values, and the value of each attribute contains only a single
            value from that domain

            Example:

            A database has been designed to store data about sellers and the products they
            have sold.
            The following facts help to define the structure of the database:

            • each seller works in a particular shop

            • each seller has a unique Surname

            • each shop has one or more sellers

            • each product which is sold is manufactured by one company only

            • each seller can sell any of the products

            • the number of products that each seller has sold is recorded


            This table is not in 1NF because:

            1. SHOPSALES table has repeated group of attributes

            (ProductName, Manufacturer)

            (ProductName, NumberofProducts),

            (NumberofProducts, Manufacturer)

            2. each seller has a number of products

            3. SurName and ShopName would need to be repeated for each record

            The following table is in 1NF because it does not contain repeating groups


            b. Second Normal Form (2NF)

            For the second normal form, the relation must first be in 1NF. The relation is
            automatically in 2NF if, and only if, the Primary Key comprises a single attribute.

            To move to 2NF, a table must first be in 1NF.

            The database is changed to the following design:

            SELLER (SurName, ShopName)

            PRODUCTSSOLD (SurName, ProductName, NumberofProducts, Manufacturer)



            Table SELLER is in Second Normal Form because attribute ShopName depends on
            primary key SurName; the same on PRODUCTSSOLD where NumberofProducts
            and Manufacture attributes depends on composite primary key SurName,
            ProductName. The link between these two tables is: primary key of SELLER table is
            FirstName, links to FirstName in PRODUCTSSOLD table, FirstName in SalesProducts
            table is foreign key

            c. Third Normal Form (3NF)

            To be in third normal form, the relation must be in second normal form. Also
            all transitive dependencies must be removed; a non-key attribute may not be
            functionally dependent on another non-key attribute.

            In our case on table PRODUCTSSOLD, Manufacturer attribute is dependent on
            ProductName, which is not the primary key of the PRODUCTSSOLD table therefore
            there is no key dependency.

            Process for 3NF:

            1. Eliminate all dependent attributes in transitive relationship(s) from each of
                the tables that have transitive relationship.

            2. Create new table(s) with removed dependency.

            3. Check new table(s) and modified table(s) to make sure that each table
               does not contain contains inappropriate dependencies.

            See the three new tables below.

            SELLERS (SurName, Shop)

            PRODUCTSSOLD (SurName, ProductName, NumberofProducts)

            PRODUCTS (ProductName, Manufacturer)


            Table: PRODUCTSSOLDM1


            d. Boyce-Codd Normal Form (BCNF)

            When a table has more than one candidate key, anomalies may result even though
            the relation is in 3NF. Boyce-Codd normal form is a special case of 3NF. A relation
            is in BCNF if, and only if, every determinant is a candidate key.

            Example

            Consider the following table STUDENT
            The following facts help to define the structure of the database:

            1. Each Student may major in several Combinations.

            2. For each Combination, a given Student has only one ClassTeacher.

            3. Each Combination has several Advisors.

            4. Each ClassTeacher advises only one Combination.

            5. Each ClassTeacher advises several Students in one Combination.

            The functional dependencies for this table are:

            1. StudentId, Combination→ClassTeacher

            2. ClassTeacher →Combination

            Anomalies for this table include:

            • Delete→Student deletes ClassTeacher inforamtion

            • Insert→a new ClassTeacher needs a Student

            • Update →inconsistencies or contradiction

            Because no single attribute which is a candidate key, primary key can be

            StudentId, Combination, Student_id,ClassTeacher.

            To reduce STUDENT table to BCNF, there is creation of two tables:

            • STUDENTTEACHER (Studentid, ClassTeacher)

            • TEACHERCOMBINATION(ClassTeacher, Combinationr)

            e. Fourth Normal Form (4NF)

            Fourth normal form eliminates independent many to one relationships between
            columns.
            A relation is in Fourth Normal Form:

            • A relation must first be in Boyce-Codd Normal Form.
            • Given relation may not contain more than one multivalued attribute.

            The multi valued dependency X→Y holds in a relation R if whenever there is two
            tuples of R that same in all the attributes of X, then we can swap their Y components
            and get two new tuples that are also in R.


            Primary key→{StudentId , Subject , Clubs}

            • Many StudentId have same Subject.

            • Many StudentId have same Clubs.

            Thus violates 4NF.
            To convert to 4NF, the table STUDENTCLUB is changed to the following design:
            STUDENTSUBJECT {StudentId, Subject}



            Is this normalised table? If not,
            convert it to 1NF, 2NF and 3NF.

            2. Consider the following table SUBJECT that contains multivalued
                dependency thus it is in 3NF, use it to answer asked questions


            i. Identify functional dependencies exist in this tabale above

            ii. Eliminate those dependencies.

            END UNIT ASSESSMENT

            Question 1.

            The database below is composed of two tables. Use it to answer asked questions


            i. What is primary key for each table and give reasons.

            ii. Identify the foreign key in the BOOKS table.

            iii. Identify the candidate keys in both tables.

            iv. Identify the relationship between BORROWERS and BOOKS tables
                and draw the E-R model.

            v. Does the BOOKS table exhibit referential integrity? Why or why not?

            Question 2.

            Write an ER diagram for Banking System. Assume your own entities (minimum 5),
            attributes and relation. Mention the cardinality ratio.

            Question 3.

            A picture gallery owner has decided to set up a database to keep information
            about the pictures he has for sale. The database table, PICTURE, will contain the
            following fields:

            PictureTitle; PictureArtist; PictureDescription; CatalogueNumber; PictureSize (in
            MB); PicturePrice; ArrivedDate (date picture arrived at gallery); Status(whether
            picture is already sold)


            PictureTitle; PictureArtist; PictureDescription; CatalogueNumber; PictureSize (in MB);
            PicturePrice; ArrivedDate (date picture arrived at gallery); Status(whether picture is
            already sold)

            i. State what data type you would choose for each field.

            ii. State which field you would choose for the primary key.

            iii. Complete the query-by-example grid below to select and show the

            CatalogueNumber, PictureTitle and PicturePrice of all unsold pictures
             by the artist ‘GATOTO’.




            • INTRODUCTORY ACTIVITY

              The Groupe Scolaire Nderonziza which is located in District Gakenke, Sector Amahoro,
              Cell Bwiza and Village Rumuri is a twelve-year basic education school. It has 4 blocks
              of 3 equal classrooms each. Each classroom has 10 meters of length and can contain a
              maximum of 30 students. Each classroom is labelled with a name made of the name of
              block and the name of the level as showed in the next figure.


              After analyzing this figure, respond to the following questions.

              1. Describe the role of each label of a classroom?

              2. Discuss the way of knowing the content of each classroom?

              3. If you are asked to describe the entity student, what are its attributes?

              4. In C++ Programming language, how are you going to declare the variable
                  student?

              5. Suppose that at the beginning of the next year there are 60 new students
                   who are enrolled at that school in S4. If the schools need to maintain the
                   quality of teaching and learning by keeping a maximum of 30 students
                   per classroom, what will happen for the 30 students who don’t have
                   space in S4?

              6. In C++ programming language, how to create that space?

              6.1 Pointers in C++

              ACTIVITY 6.1

              1. The student called Kayiranga of Computer Science Senior 5 has a class
                   work and wants to borrow a C++ programming language book and a
                  computer from his classmate Iradukunda. Kayiranga needs to use those
                  materials which are on the desk of Iradukunda to submit the work on
                  time while Iradukunda was absent.
                 Discuss

              a. What could Kayiranga do if he takes those materials without informing
              Iradukunda?

              b. What could happen to Iradukunda when he comes back?

              3. On The list, the students of Senior 5 are arranged in ascending order
                  according to their names. From one name of a student, how to reach the
                  next student?

              a. How to get to the student number 5 while you are on student number 2?

              b. How to get to the student number 8 while you are on student number 15?

              6.1.1 Definition of Pointers

              A pointer is a variable which contains the address in memory of another variable.
              There can be a pointer to any variable type. The unary or monadic operator & gives
              the ``address of a variable’’. The indirection or dereference operator * gives the
              ``contents of an object pointed to by a pointer’’.

              C++ gives the power to manipulate the data in the computer’s memory directly. The
              space in the memory can be assigned and de-assigned. This is done using pointer
              variables. Pointer variables are variables that points to a specific address in the
              memory pointed to by another variable.

              6.1.2 Dereference operators

              The asterisk sign (*) in the cout statements is called the dereference operator. If the
              dereference operator is used, the “value pointed by” a pointer is got.

              The statement:

              cout << *ptr; means to print the content of the memory space pointed by ptr.

              6.1.3 Reference operator

              The ampersand sign (&) is called the reference operator. If the reference operator
              is used, it will get the “address of” a variable. The ptr = &x; means that it stores the
              address of the variable x in the pointer ptr.

              6.1.4 Declaring pointer variables

              A pointer is declared by using the * (asterisk) operator before an identifier. It is
              necessary to initialize the pointer before you can use a pointer in for instance a cout
              statement. Due to the ability of a pointer to directly refer to the value that it points
              to, it becomes necessary to specify in its declaration which data type a pointer is
              going to point to. It is not the same thing to point to a char as to point to an int or a
              float.

              Pointer declaration Syntax:

              data_type *pt_name;

              Where data_type is the data type of the value that the pointer is intended to point to.

              The following are three declarations of pointers and all of them are pointers and will
              occupy the same amount of space in memory:

              6.1.5 Initialization of Pointer Variable

              Pointers can be initialized to point to specific locations at the very moment they are
              defined,You need to initialize a pointer by assigning it a valid address.

              6.1.6 Graphical representation of pointers for referencing memory allocation.

              Consider the following,

              int jim,tom,*blaise;
              jim = 10;
              tom= jim;
              blaise = &jim;

              The following is graphical representation of the value contained in each variable
              after the execution of this, are shown in the following diagram:


              First, we have assigned the value 10 to jim (a variable
              whose address in memory we have assumed to be 501).
              The second statement copied to tom the content of variable jim which is 10. the
              third statement copies to blaise not the value contained in jim but a reference to it (its
              address, which we have assumed to be 501). The reason is that in this third assignment
              operation we have preceded the identifier jim with the reference operator (&), so
              we were no longer referring to the value of jim but to its reference (its address in
              memory).

              1.1.7 Incrementing a Pointer

              Incrementing a pointer is generally used in array because we have contiguous
              memory in array and we know the contents of next memory location. Incrementing
              pointer variable depends upon data type of the Pointer variable
              Three Rules should be used to increment pointer.

              Address + 1 = Address

              Address++ = Address

              ++Address = Address

              The following program increments the variable pointer to access each succeeding
               element of the array –

              #include <iostream>

              6.1.8 Decrementing a Pointer

              As shown in example below, the program decrementing a pointer, which decreases
              its value by the number of bytes of its data type

              #include <iostream>
              using namespace std;
              const int MAX = 3;

              int main () {
              int var[MAX] = {10, 100, 200};
              int *ptr;
              // let us have address of the last element in pointer.
              ptr = &var[MAX-1];
              for (int i = MAX; i > 0; i--) {
              cout << “Address of var[“ << i << “] = “;
              cout << ptr << endl;
              cout << “Value of var[“ << i << “] = “;
              cout << *ptr << endl;
              // point to the previous location
              ptr--;
              }
              getchar();
              return 0;
              }

              6.1.9 Arrays and pointers

              The name of an array is a pointer to the first element in the array.

              int a[10];

              int *aptr = a;

              a // is equivalent to &a[0]

              aptr = a // is equivalent to aptr = &a[0];

              aptr+5 // is equivalent to &a[5]

              *(aptr+5)

              // is equivalent to a[5]

              Exemple :
              #include <iostream>

              using namespace std;

              int main()
              {
              float arr[10];

              float *ptr;

              cout << “Displaying address using arrays: “ << endl;

              for (int i = 0; i < 10; ++i)
              {
              cout << “&arr[“ << i << “] = “ << &arr[i] << endl;
              }
              // ptr = &arr[0]

              ptr = arr;

              cout<<”\n Displaying address using pointers: “<< endl;

              for (int i = 0; i < 10; ++i)

              { cout << “ptr + “ << i << “ = “<< ptr + i << endl;
              }
              getchar();

              return 0;}

              Different pointer ptr is used for displaying the address of array elements arr. Pointers
              are the variables that hold address. Not only can pointers store address of a single
              variable, it can also store address of cells of an array.

              6.1.10 Comparison of pointers

              Pointers may be compared by using relational operators, such as ==, <, and >.

              The following program incrementing the variable pointer so long as the address to
              which it points is either less than or equal to the address of the last element of the
              array, which is &var[MAX - 1].


              6.1.11 Subtracting pointers

              Differencing means subtracting two Pointers. Subtraction gives the Total number of
              objects between them. Subtraction indicates “How apart the two Pointers are?”

              Example:

              #include<iostream>

              using namespace std;

              int main()

              {
              int num , *ptr1 ,*ptr2 ;

              ptr1 = &num ;

              ptr2 = ptr1 + 2 ;

              cout << “ the difference of two pointers is: “ << ptr2 - ptr1 << endl;

              getchar ();

              return 0;

              }

              6.1.12 Assignment of pointers

              In pointer assignment, the pointer is associated with a target. If the target is undefined
              or disassociated, the pointer acquires the same status as the target

              pointer-object => target ,

              6.1.13 Pointers and function in C++

              A function pointer is a variable that stores the address of a function that can later be
              called through that function pointer.

              Example:

              #include<iostream>

              using namespace std;

              void swapping (int *ptr_a, int *ptr_b)



              Activity1:

              a. What is the pointer in C++

              b. Explain the use of Address Operator (&) and operator (*).

              Activity 2:

              Given the following declarations, which of the following statements are not valid?

              int i;

              int *pi;

              double d;

              double *pd;

              a. i=&pi; b.*pi=&i; c. pd=&pi; d. pd=i; e. pi=&i;

              Activity3:

              What is the error in each of the following expressions?

              6.2. Memory allocation

              ACTIVITY 6.2

              Public bonded warehouse known as MAGERWA (Magazin Generaux Rwandais) is a
              Rwandan company where all goods from abroad are stored before being distributed in
              the country. When an importer brings his/her goods to MAGERWA, he/she is allocated
              a space where to put those goods for checking and is charged the space per square
              meter (m2) per day. When he/she withdraws his/her goods from MAGERWA, the
              occupied space is given to other customers for use.

              Discuss: What would happen to the MAGERWA store if all customers failed to withdraw
              their goods on time?

              6.2.1 Definition

              Memory allocation means reserving memory for specific purposes. It is a process
              by which computer programs and services are assigned with physical or virtual
              memory space, the process of reserving a partial or complete portion of computer
              memory for the execution of programs and processes. Once the program has
              finished its operation, the memory is released and allocated to another program
              or merged within the primary memory. Programs and services are assigned with a
              specific memory as per their requirements when they are executed

              6.2.2 Dynamic memory allocation in C++

              Up to this level, all memories needed in programs were determined before the
              program execution by defining the variables where it is reserved for. But there may
              be cases where the memory needed in a program can only be determined during
              runtime.

              When a memory is dynamically allocated, the operating system is asked to reserve
              some of that memory for that program’s use. If it can fulfill this request, it will return
              the address of that memory to the current application. From that point forward, the
              application can use this memory as it wishes. When the application is done with
              the memory, it can return the memory back to the operating system to be given to
              another program. This allows to obtain more memory when required and release it
              when not necessary.

              C++ integrates the operators new and delete for allocating dynamic memory. With
              the functions malloc, calloc, realloc and free are available in C++ and can also be
              used to allocate and deallocate dynamic memory.

              A. Operators:

              i. Operator new and new[]

              Dynamic memory is allocated using operator new. New is followed by a data type
              specifier and, if a sequence of more than one element is required, the number of
              these are within brackets []. It returns a pointer to the beginning of the new block of
              memory allocated.

              Its syntax is:
              pointer = new type
              pointer = new type [number_of_elements]

              The first expression is used to allocate memory to contain one single element of
              type type. The second one is used to allocate a block (an array) of elements of type
              type, where number_of_elements is an integer value representing the amount of
              these. For example:

              int * mem;
              mem= new int[6];

              There is a substantial difference between declaring a normal array and allocating
              dynamic memory for a block of memory using new. The most important
              difference is that the size of a regular array needs to be a constant expression,
              and thus its size has to be determined at the moment of designing the program,
              before it is run, whereas the dynamic memory allocation performed by new
              allows to assign memory during runtime using any variable value as size.
              The dynamic memory requested by a program is allocated by the system from the
              memory heap (unused memory of the program). However, computer memory is a
              limited resource, and it can be exhausted. Therefore, there are no guarantees that
              all requests to allocate memory using operator new are going to be granted by the
              system.

              ii. Operators delete and delete[]

              In most cases, memory allocated dynamically is only needed during specific periods
              of time within a program; once it is no longer needed, it can be freed so that the
              memory becomes available again for other requests of dynamic memory. This is the
              purpose of operator delete, whose syntax is:

              delete pointer;

              delete[] pointer;

              The first statement releases the memory of a single element allocated using new,
              and the second one releases the memory allocated for arrays of elements using

              new and a size in brackets ([]).
              The value passed as argument to delete shall be either a pointer to a memory block
              previously allocated with new, or a null pointer (in the case of a null pointer, delete
              produces no effect).

              b. Functions

                       Malloc (): void* malloc (size_t size);

              Allocate memory block. Allocates requested size of bytes of memory and returns
              a pointer to the beginning of the block (first byte of allocated space). Simply pass
              in how big you want your memory to be (in bytes), and you get a pointer to that
              memory back. The content of the newly allocated block of memory is not initialized,
              remaining with indeterminate values. If it fails it returns NULL. It is routine used to
              allocate a single block of memory.

                             Calloc (): void* calloc (size_t num, size_t size);

              Allocate and zero-initialize array. Allocates space for an array element, initializes to
              zero and then returns a pointer to memory. The calloc() takes two integer arguments
              and multiplied together to specify how much memory to allocate. This is routine
              used to allocate arrays of memory.

                            Free (): void free (void* ptr);

              Deallocate memory block (the previously allocated space). A block of memory
              previously allocated by a call to malloc, calloc or realloc is deallocated, making it
              available again for further allocations.

                            Realloc (): void* realloc (void* ptr, size_t size);

              Reallocate memory block, Change the size of previously allocated space pointed to
              by ptr. The function may move the memory block to a new location (whose address
              is returned by the function).

              Notice: In the above program:

              Malloc () function dynamically allocates initial value of the size maximum 10
              characters (e.g the size of HelloWord has 9 characters) otherwise it returns null and
              is copied to str variable which has address in memory.

              Realloc() function :reallocate the content of str concatenating with .com and change
              the size from 10 to 15 but it keeps the existing address which is 0x22ff44.

              Free(): the memory size of (10) characters that has been reallocated with realloc () is
              released after using free() because it is no longer needed.

              6.2.3 Static memory (or Compile Time) allocation

              The memory for your variables is allocated when the program starts, the size is fixed
              when the program is created

              Statically allocated variables have their storage allocated and initialized before main
              starts running and are not deallocated until main has terminated. Statically allocated

              local variables are not re-initialized on every call to the function in which they are
              declared. A statically allocated variable thus has the occasionally useful property of
              maintaining its value even when none of the functions that access the variable are
              active.

              6.2.4 Advantages of dynamic memory allocation over static memory allocation

              An advantage is that the program determines how much memory it needs at run time
              and allocate exactly the right amount of storage and released when it’s no longer needed.

              • Dynamic Memory Allocation

                   * Memory allocated “on the fly” during run time

                   * Dynamically allocated space usually placed in a program segment known
                    as the heap or the free store

                  * Exact amount of space or number of items does not have to be known by
                    the compiler in advance.

                  * For dynamic memory allocation, pointers are crucial

              • Static (or Compile Time) Allocation

                  * Memory for named variables is allocated by the compiler

                  * Exact size and type of storage must be known at compile time

                  * For standard array declarations, this is why the size has to be constant

              Application activity 6.2

              Activity 1:

              Explain the memory allocation and compare dynamic memory over static memory
              allocation.

              6.3 C++ Structures

              ACTIVITY 6.3

              The company Urukundo Ltd specialized in production of Milk Powder has a group
              of 20 employees and its management is not computerized. Each employee is
              identified by the attributes first name, second name, age, degree and salary. The
              programmer of that company wants to write a program in C++ programming
              language that will allow to constitute a file containing the information of each
              employee.

              1. What should be the data type of each attribute?

              2. Is it easy to enter the value of each attribute one by one? What should
                  be the solution?

              3. If employee is considered as a single entity, how will it be declared in
                  the program?

              6.3.1 Introduction to C++ structure

              Structure is a collection of variables of different data types under a single name.
              These data elements, known as members, can have different types. To store some
              information about a student: Name, Age and student ID. Creation of different
              variables name, Age, ID needed to store this information separately.

              6.3.2 How to declare a structure in C++ programming?

              The struct keyword defines a structure type followed by an identifier (name of the
              structure).

              Data structures can be declared in C++ using the following syntax:

              struct type_name {

              member_type1 member_name1;

              member_type2 member_name2;

              member_type3 member_name3;

              . } object_names;

              Where:

              type_name is a name for the structure type, object_name can be a set of valid
              identifiers for objects that have the type of this structure. Within braces {}, there is a
              list with the data members, each one is specified with a type and a valid identifier as
              its name.

              6.3.3 Initializing structure in C++ programming

              Just like any variable, we can specify the initial value of a structure at the time of its
              definition.

              Example of Initialization of structure:

              6.3.4 Calculate Memory consumption by structure

              To generate the program below, padding must be added to the structs to satisfy this
              alignment criteria. It creates two structs; both contain 3 values of the same types
              and of the same name. It then prints out the sizes of these structs (in bytes).

              Note: Output may vary depending on the systems

              The C++ standard defines that struct members must be arranged in memory in the
              same order that they are defined within their access level. Different types must have
              certain memory alignment requirements; long (on a 64-bit platform) uses 8 bytes of
              memory and must start at a memory location divisible by 8 char, on the other hand,
              only uses 1 byte of memory and can start at any memory address.

              6.3.5 Accessing members of a structure

              We need to specify both the structure name (name of the variable) and the member
              name when accessing information stored in a structure. There are two types of
              operators used for accessing members of a structure:

              1. Member operator (.) or Dot Operator

              structure_variable_name.member_name

              For Example:
              We can access the member age of employee structure variable employee_one as:
              struct employee
              {
              char name[50];

              int age;

              float salary;

              char department[30];

              } employee_one = {“paul”, 25, 150000.5, “ICT”};

              int age = employee_one.age;

              2. Structure pointer operator (->) or Arrow Operator (->)

              Structure pointer operator or Arrow operator is used to access members of structure
              using pointer variable. When we have pointer to a structure variable, then we can
              access member variable by using pointer variable followed by an arrow operator
              and then the name of the member variable.

              structure_pointer->member_name;

              For example:

              6.3.6 Global use of structure

              As defined, a structure is a compound data type that contains different members
              of different types, structs are simpler to be managed by the programmer and the
              compiler,a better example of using a global variable, and a situation where global
              variables are completely necessary, is when passing a structure to a function. In
              that case, you must declare the structure as global so that all functions can access
              variables of that structure type.

              6.3.7 Pointer to structure

              Just like other variables we can use pointers to access information stored in a
              structure. Structures can also be pointed by pointers and store pointers. The rules
              are the same as for any fundamental data type. The pointer must be declared as a
              pointer to the structure.

              6.3.8 Nesting structure

              Structures can be nested within other structures in C++ programming. Structures
              can also be nested so that a valid element of a structure can also be another structure.
              When a structure contains another structure, it is called nested structure. For
              example, we have two structures named Address and Student. To make Address
              nested to Student, we have to define Address structure before and outside Student
              structure and create an object of Address structure inside Student structure.

              Syntax for structure within structure or nested structure

              struct structure1
              {
              - - - - - - - - - -
              - - - - - - - - - -
              };
              struct structure2
              {
              - - - - - - - - - -
              - - - - - - - - - -
              struct structure1 obj;
              };

              Example:




              6.3.9 Array of structure

              Arrays of structure are good for storing information of a single entity. By declaring
              an array of structures, you specify the number of reserved structures inside array
              brackets when you declare the structure variable.

              Example:

              Consider learning activity 6.3 example:

              #include <iostream>

              #include <conio.h>

              #include<stdio.h>

              #include<string.h>

              using namespace std;

              struct Employee

              Application activity 6.3

              1.
              a. Define a structure in C++
              b. Given a structure definition,
              struct Employee {
              string emName;
              string emSex;
              string emAddress;
              }; Employee Emp;
              A member of the structure can be accessed by which one of the following statements?:

                                 a. Employee.emName;

                                  b. Emp.emName;

                                   c. Emp->emName;

              2. Store Information of students and Display It Using Structure by creating an
              array having 4 elements of structure student. Each of the element stores the
              information of a student.

              For example, st[0] stores the information of the first student, st[1] for the
              second and so on.

              3. What is the output of the following program?

              END UNIT ASSESSMENT





              • Key Unit Competence:

                To be able to explain common concepts of Object Oriented Programming (OOP) and
                implement them in C++.

                INTRODUCTORY ACTIVITY

                Human beings can be grouped into males and females. Each of them has two legs, two
                hands, two eyes, a nose, a heart, and so on. There are body parts that are common to
                males and females, but there are specific body parts for males and not for Females, and
                vice versa.
                Both Males and Females perform some common functions like walking, eating, seeing,
                talking, hearing etc. But there are some specific functions for each group of Human
                Beings.

                After reading the above, do the following.

                1. Categorize human beings into two main groups

                2. What are the body parts that all human beings have in common?

                3. List the parts that are specific for females and males.

                4. What all human beings can do in common? What are specific functions
                     only for each gender?

                5. Based on database concepts, write down the properties of the entities
                   human being, male and female. Design on papers a Diagram of entities
                   found in the above scenario.

                6. Add to each entity the functions raised in question 3, 4 and 5. Which
                    entity depends on the other one?

                7. Do you need to repeat the properties and functions of human being
                    entity to male entity and to female entity? Explain your answer.

                8. After considering the question above, design a diagram of the new
                    entities.

                9. Discuss your answer

                7.1. Introduction to Object Oriented Programming (OOP)

                Activity 7.1

                Compare the programming paradigms that you have learnt so far.

                1. Which one can help you to create a program for the “Introductory
                    activity”?

                2. Search and write an essay on the concepts and principles of that new
                    programming paradigm.

                7.1.1 Definition of Object Oriented Programming(oop)

                Object-oriented programming (OOP) refers to a type of computer programming (software
                design) in which programmers define not only the data type of a data structure, but also
                the types of operations (functions) that can be applied to the data structure.
                In this way, the data structure becomes an object that includes both data and functions. In
                addition, programmers can create relationships between one object and another.

                7.1.2 Basic Concepts of Object Oriented Programming

                The main concepts and principles used within Object Oriented Programming are:

                • Objects

                • Classes

                • Abstraction

                • Encapsulation

                • Inheritance

                • Polymorphism

                • Exception Handling

                Definitions of OOP concepts

                                a. Object

                An objects is the basic unit of OOP. It is an instance of class, which has data members and
                use various member functions to perform tasks.

                               b. Class

                A class is basically a blueprint of an object. It can also be defined as user defined data type
                but it also contains functions in it. It declares and defines what data variables the object will
                have and what operations can be performed on the class’s object.

                                c. Encapsulation

                Encapsulation means that the internal representation of an object is generally hidden from
                view outside of the object’s definition. Typically, only the object’s own methods can directly
                inspect or manipulate its fields. It can also be said data binding. Encapsulation is all about
                binding the data variables and functions together in class.

                               d. Abstraction

                Data abstraction and encapsulation are closely tied together, because a simple definition
                of data abstraction is the development of classes, objects, types in terms of their interfaces
                and functionality, instead of their implementation details. Abstraction denotes a model, a
                view, or some other focused representation for an actual item.
                In C++, classes can provide methods to the outside world to access & use the data variables,
                keeping the variables hidden from direct access, or classes can even declare everything
                accessible to everyone, or maybe just to the classes inheriting it. This can be done using
                access specifiers.

                            e. Inheritance

                Inheritance as the key feature of Object-Oriented Programming is a way to reuse code
                of existing objects, or to establish a subtype from an existing object, or both, depending
                upon programming language support. In classical inheritance where objects are defined
                by classes, classes can inherit attributes and behavior from pre-existing classes called base
                classes, super classes, parent classes or ancestor classes. The resulting classes are known as
                derived classes, subclasses or child classes. The relationships of classes through inheritance
                gives rise to a hierarchy.
                The derived class inherits all the features from the base class and can have additional
                features of its own.

                             f. Polymorphism

                It is a feature, which lets programmers create functions with same name but different
                arguments, which will perform different actions. That means, functions with same name, but
                functioning in different ways. Or, it also allows users to redefine a function and provide it with
                a completely new definition.

                            g. Exception Handling

                Exception handling is a feature of OOP, to handle unresolved exceptions or errors produced
                at runtime (during the running of the program).

                Graphically the principles of Object Oriented Paradigm can be represented like this.


                Advantages of Object Oriented Programming

                One of the principal advantages of Object-Oriented Programming techniques over procedural
                programming techniques is that they enable programmers to create modules that do
                not need to be changed when a new type of object is added. A programmer can simply
                create a new object that inherits many of its features from existing objects. This makes
                object-oriented programs easier to modify.
                So, Object Oriented Programming has great advantages over other programming styles.

                1. Code Reuse and Recycling: Objects created for Object Oriented
                   Programming can easily be reused in other programs.

                2. Data Redundancy: Inheritance is the good feature for data redundancy. If
                    you need a same functionality in multiple classes, you can write a common
                    class for the same functionality and inherit that class to sub class.

                3. Data hiding: Implementation details are hidden from other modules and
                    other modules has a clearly defined interface.

                4. Design Benefits: Large programs are very difficult to write. Object
                   Oriented Programming force designers to go through an extensive
                   planning phase, which makes for better designs with less flaws. In
                  addition, once a program reaches a certain size, Object Oriented Programs
                  are actually easier to program than non-Object Oriented ones.

                5. Software Maintenance: An Object Oriented Program is much easier to
                   modify and maintain than a non-Object Oriented Program. So although a
                  lot of work is spent before the program is written, less work is needed to
                 maintain it over time.

                Application Activity 7.1

                1. The following are the principles of OOP: Object, Class, Encapsulation,
                    inheritance and Polymorphism. Explain them one by one.

                2. What are the advantages of OOP?

                3. Name the features that are added to standard C++.

                7.2 Class definition in C++

                Activity 7.2

                Observe the C++ program below and answer the following questions:

                #include<iostream>

                Using namespace std;

                class Test

                {

                int a;

                float b;

                public:

                void number1()

                { a = 2;

                return a;}

                float number2()

                {
                b = 3.5;
                return b;
                }
                };

                int main()
                {

                test m1;

                cout <<”First number is: “<< m1.number1()<<’\n’;

                cout <<”Second number is: “<< m1.number2()<<’\n’;

                return0;

                }

                From the program above, answer the following questions:

                1. What are new key words in the above program?

                2. Describe the structure of the part starting with the word class.

                3. List the data members contained in the class “Test”

                4. What are the functions found in that class?

                5. What is the role of the variable m1?

                7.2.1 Definition of a class

                A class is defined in C++ using keyword class followed by the name of class.
                The body of class is defined inside the curly brackets and terminated by a semicolon at the
                end.

                7.2.2 Syntax



                Here, the class is named Test. This class has two data members: data_1 and data_2 and two
                member functions: function_1() and function_2().
                A Class is an expanded concept of data structures, like data structures, it can contain data
                members, but it can also contain functions as members. Where class_name is a valid identifier
                for the class, object_names is an optional list of names for objects of this class. The body
                of the declaration can contain members, which can either be data or function declarations,
                and optionally access specifiers.

                Classes have the same format as plain data structures, except that they can also include
                functions and have these new things called access specifiers (data hiding). An access specifier
                is one of the following three keywords: private, public or protected.
                Access specifiers are used to identify access rights for the data and member functions of the
                class. There are three main types of access specifiers in C++ programming language:

                A private member within a class denotes that only members of the same class
                  have accessibility. The private member is inaccessible from outside the class.

                Public members are accessible from outside the class.

                A protected access specifier is a stage between private and public access. If
                member functions defined in a class are protected, they cannot be accessed
                from outside the class but can be accessed from the derived class.
                When defining access specifiers, the programmer must use the keywords: private, public or
                protected when needed, followed by a colon and then define the data and member functions
                under it.

                class AddNumbers

                {
                private:
                int x,y;
                public:
                void sum()
                {
                ………
                ………
                }
                };

                In the code above, the member x and y are defined as private access specifiers. The member
                function sum is defined as a public access specifier.
                General structure for defining a class is:


                Generally, in class, all members (data) would be declared as private and the member functions
                would be declared as public. If no access specifiers are identified for members of a
                class, the members are defaulted to private access (Private is the default access level for
                specifiers).

                class AddNumbers
                {
                int a,b;

                public:

                void sum()
                {
                ………
                ………
                }
                };

                In this example, for members a and b of the class AddNumbers there are no access specifiers
                identified. This means that by default a and b are private members of class AddNumbers.
                You can have functions inside a class. These functions can be either under public or private,
                and their syntaxes are the same. For example, if you have a function to display information
                of an account called display, and other classes should be able to access that function, the
                following line would be added under the public area:

                void display (accountno);
                And use the following syntax to implement the function:
                void BankAccount::display (int accountno)
                {
                ……………;
                ………….;
                }

                The computer accesses an object through the use of one of the object’s methods. The
                method performs some action to the data in the object and returns this value to the

                computer. Classes of objects can also be further grouped into hierarchies, in which objects
                of one class can inherit methods from another class. The structure provided in objectoriented
                languages makes them very useful for complicated programming tasks.
                7.2.3 Defining member functions inside or outside the class definition
                Member functions of a class can be defined either inside or outside the class definition.
                In both cases, the function body remains the same, however, the function header is
                different.

                7.2.3 .I Inside the Class

                A member function of a class can be defined inside the class. However, when a member
                function is defined inside the class, the class name and the scope resolution operator are
                not specified in the function header. Moreover, the member functions defined inside a class
                definition are by default inline functions.
                To understand the concept of defining a member function inside a class, consider this example.


                In this example, the member function putdata() is defined inside the class book. Hence,
                putdata()is by default an inline function.
                Note that the functions defined outside the class can be explicitly made inline by prefixing
                the keyword inline before the return type of the function in the function header. For example,
                consider the definition of the function getdata().
                inline void student ::getdata ()
                {
                body of the function
                }

                7.2.3.2 Outside the Class

                Defining a member function outside a class requires the function declaration (function prototype)
                to be provided inside the class definition. The member function is declared inside
                the class like a normal function. This declaration informs the compiler that the function is a
                member of the class and that it has been defined outside the class. After a member function
                is declared inside the class, it must be defined (outside the class) in the program.

                The definition of member function outside the class differs from normal function definition,
                as the function name in the function header is preceded by the class name and the scope
                resolution operator (: :). The scope resolution operator informs the compiler what class the
                member belongs to.

                Here is the syntax for defining a member function outside the class:

                Return_type class_name :: function_name (parameter_list)
                {
                // This is the body of the function
                }

                To understand the concept of defining a member function outside a class, consider this
                  example.

                Example

                 Let us re-write the program which converts the degree from Fahrenheit to Celsius and displays
                 the corresponding degrees on the screen. By creating the method outside the class,
                 we have:



                Note that the member functions of the class can access all the data members and other
                member functions of the same class (private, public or protected) directly by using their
                names. In addition, different classes can use the same function name.

                Application Activity 7.2

                The below piece of code is for class declaration, analyze it and answer the following questions:


                7.3 Object in C++

                Activity 7.3

                Your District wants to create a program that will help to know its primary and secondary
                schools. Create the class “school” with the following attributes and functions:
                Decide on the types of attributes

                a. Attributes:

                     1. Name of the school

                     2. Code of the school

                    3. Number of student in your school

                    4. Number of teachers

                    5. reading the attributes

                    6. printing the attributes

                B (i) Write a program in C++ that reads and prints the list of schools available in your
                    District.

                (ii) complete the table below with the following list:

                     1. school

                     2. School name

                     3. Code of the school

                    4. Combinations

                    5. Number of students

                    6. Number of teachers

                     7. Read_school ()

                     8. Print_school()

                The first characteristic of an object language is to place at your disposal the objects.
                An object can be regarded as an additional structure of information, a type of super-variable.
                Indeed, we know that a variable is a place in primary memory, characterized by an address
                – a name - and a type (integer, double, character, Boolean, etc).

                In a variable, we can store one and only one information.
                Even if an indexed variable is used - a table - the various memory spaces thus defined will
                store all obligatorily information of the same type.

                7.3.1 Definition:

                An object is an instantiation of a class. In terms of variables, a class would be the type, and
                an object would be the variable. So, an object is a group of variables of various types. It
                thus usually gathers tens of very different information from/to each other within the same
                structure, thus making this information easier to handle. By analogy with equation of Wirth,
                we could say that the equation of the Object Oriented Programming (OOP) is: methods+-
                data=objects

                With the difference of what occurs with a table, the various variables of the same object
                are not indicated by an index, but by a name which is proper for them. In fact, these names
                which characterize the various variables within an object are called properties of the object.
                As consequence, any property of object obeys strictly the rules which apply to the variables
                in any language (type, size, rules of assignment…).
                It will be also said that several objects which have the same properties are of the same type,
                or for better explanation, of the same class.

                Example

                let us say that you want to make a program which will record or process the data on the
                books in a library or bookshop, take an object of everyday usage: “A book”.
                The properties of a book are:
                its size (number of the pages), the name of the author, date of publication, printing company,
                its price, its name (title), if a person can borrow it or not, etc.
                You can easily find the type of each one of these properties:

                • The title and the name of author are the properties of the character type.

                • The size (a number of pages) and the price are the properties of the numerical
                type.
                The situation “if one can borrow it from the library or not” is a Boolean property.

                7.3.2 Creating single object

                When a class is defined, only the specifications for the object is defined, the memory or
                storage is not allocated. To use the data and access functions defined in the class, you need
                to create objects.

                7.3.2.1 Syntax to define Object in C++

                className objectVariableName;
                You can create objects of Test class (defined in above example) as follows:


                Here, two objects o1 and o2 of Test class are created.
                In the above class Test, data1 and data2 are data members and function1() and function2()
                are member functions

                Example: Class and Object



                Number: 12
                Enter data: 23.3
                You entered 23.3
                In this program, two data members data1 and data2 and two memberfunctions insertIntegerData()
                and insertFloatData() are defined under Test class.
                Two objects o1 and o2 of the same class are declared.
                The insertIntegerData() function is called for the o1 object using:
                o1.insertIntegerData(12);
                This sets the value of data1 for object o1 to 12.
                Then, the insertFloatData() function for object o2 is called and the return value from the
                function is stored in variable secondDataOfObject2 using:
                secondDataOfObject2 = o2.insertFloatData();
                In this program, data2 of o1 and data1 of o2 are not used and contains garbage value.

                7.3.2.2 Creating array of objects



                7.3.3. Passing object to function

                As it is known, we can pass (give) any type of arguments within the member function which
                can have any numbers of arguments. In C++ programming language, it is also possible to
                pass an object as an argument within the member function of class.
                This is useful, when we want to initialize all data members of an object with another object,
                we can pass objects and assign the values of supplied object to the current object. For complex
                or large projects, we need to use objects as an argument or parameter.
                Syntax:



                • KeyUnitCompetency.

                  To be able to describe a Visual Basic Integrated Development (VB-IDE) and write a program in Visual Basic.

                  INTRODUCTORY ACTIVITY

                  Read the bellow scenario:
                  ABC hotel provides different services to its customers such as business center, room services, restaurant and others. For the room services, front desk office receives clients and information is collected as shown below:

                  Observe the above picture and answer the following questions:

                  1. What do you think of the above figure?

                  2. Explain why ABC hotel needs to collect data of each client

                  3. Investigate why the figure hold these words such :Add new ,Display and Exit

                  4. Which programming language would use to design the above figure?

                  5. Can you try to design the above figure?

                  In programming, the above scenario requires specific programming language that enables us to enter data using forms and save the data in database to receive them whether is a need. This unit will enable to build a simple desktop application for a real life situation.

                  8.1. Understanding Visual Basic.

                  LEARNING ACTIVITY. 8.1

                  1. Click on start button, All programs, Microsoft Visual basic 6.0, Microsoft visual basic 6.0. What is the name of the window that has opened?

                  2. Make double click on standard EXE. What do you observe?

                  3. Differentiate desktop and web applications.

                  8.1.0. General introduction

                  VISUAL BASIC is a high level and Event-driven Programming Language which evolved from the earlier Desk Opening System (DOS) version called BASIC. (BASIC means: Beginners’ All-purpose Symbolic Instruction Code). Visual basic for DOS and Visual Basic for Windows were introduced in 1991 and
                  evolved through the years to give Visual basic 3.0(in 1993), Visual basic 4.0 (in 1995) Visual basic 5.0 (in 1996) and now we use Visual basic 6.0 version released in 1998.

                  Visual basic 6.0 has the following advantages:

                  • It is easier for the user to minimize code writing.

                  • The user will become more familiar with visual approach for other visual languages.

                  • It provides Input box and Output box as interactive windows with user.

                  • It is very easy program language compare with other.

                  8.1.1. Definition of terms

                  d. Graphical User Interface.

                  A graphical user interface (GUI) is an interface through which a user interacts with electronic devices such as computers, hand-held devices and other appliances. GUI representations are manipulated by a pointing device such as a mouse, trackball, stylus, or a finger on a touch screen.

                  The need for GUI became apparent because the first human/computer text interface was through keyboard text creation by what is called a prompt (or DOS prompt). Commands were typed on a keyboard at the DOS prompt to initiate responses from a computer. The use of these commands and the need for exact spelling made this interface difficult to use and inefficient.

                  A GUI uses a combination of technologies and devices to provide a platform that user can interact with, for the tasks of gathering and producing information. Graphical user interface (GUI) is different from command line interface (CLI) or command language interpreter as command line interface (CLI) enables users to type commands in a terminal or console window to interact with an operating system. Users respond to a visual prompt by typing a command on a specified line (MLI), and receive a response back from the system. Users type a command or series of commands for each task they want to perform.

                  e. Desktop application

                  A desktop application is a computer program that runs locally on a computer device, such as desktop or laptop computer, in contrast to a web application, which is delivered to a local device over the Internet through browser from a remote server. Different user environments can impact whether a desktop or a web application is the best solution for your needs.

                  Difference between desktop and web applications.

                  Desktop applications

                  • They must be developed for and installed on a particular operating system.

                  • Have strict hardware requirements that must be met to ensure that they function correctly.

                  • Updates to the applications must be applied by the user directly to their installation, and may require hardware upgrades or other changes in order to work.

                  Web applications

                  • A web application is any computer program that performs a specific function by using a web browser.

                  • The user accesses the application using the web browser and works with resources available over the internet, including storage and CPU processing power.

                  • This approach allows for “thin clients” (machines with limited hardware capabilities) to provide access to complex applications delivered from a centralized infrastructure.

                  f. Event oriented programming.

                  Event oriented programming is a paradigm in which the flow of program is determined by events, such as user actions (mouse clicks, key presses), sensor outputs or messages from other programs is common used in graphical user interfaces and other applications like Web applications, JavaScript, C#.
                  Other types of programming paradigm are: C, C++
                  • Procedural programming used by Basic, Fortran and COBAL
                  • Declarative programming used by Prolog

                  Event oriented programming using Visual Basic

                  Visual Basic is Event oriented programming because of the following

                  • The programmer needs to write code that performs some tasks in response to certain events.

                  • Has events that occur by mouse clicking and moving or keyboard stokes (Some of the events are load, click, double click, drag and drop, pressing the keys and more.)

                  • Focus on the use of Graphical User Interface.

                  • The events usually comply but not limited to the user’s inputs.

                  8.1.2. The Features of Visual Basic

                  Visual Basic has the following features:

                  1. Data Access Features: this allows programmers to develop database front end applications and server side components for most popular database formats including MS SQL and other Databases.

                  2. Active X Technologies: that allows programmers to use the functionality provided by other applications, such as MS Office and other windows applications.

                  3. Internet capabilities make it easy to provide access to documents and applications across internet server applications.

                  4. Your finished application is a true executable (.exe) file that uses a visual Basic Virtual Machine that you can freely distribute.

                  8.1.3 Standard EXE Visual Basic Application

                  Using Visual Basic one can develop one of these main projects as indicated in the
                  screen below:
                  1. Standard Exe project is a typical application in which can use the database
                  manipulation.

                  A standard exe application is one that is created using Standard EXE project. It is the most widely used Project type using VB6. Standard EXE application is normally the most widely used among the available Project types in Visual Basic. Stand-alone

                  programs have an .EXE file extension. A standard EXE application is normally used
                  when you want to develop a stand-alone application. Examples include calculators,
                  text editors, and other similar applications.

                  8.1.4. Starting VB 6.0

                  Opening application of visual basic 6.0

                  On start up, Visual basic 6.0 will display a dialog box, and one can choose to start a new project, open a new existing project, or select a list of recently opened programs.


                  Application activities (8.1)

                  1. With examples, discuss the difference between the following:

                  a. Graphical User Interface and Command User Interface.

                  b. Desktop application and Online application.

                  2. State the process followed to start up Visual basic 6.0.

                  8.2 Visual Basic Standard EXE Integrated Development Environment(VB-IDE)

                  Learning Activity 8.2

                  1. Observe the figure and name the objects labeled A, B, C, D, E and F

                  a) Visual basic Integrated Development Environment describes the interface
                  and environment that we use to create our applications in VB.

                  It is called integrated because we can access virtually all of the development tools
                  that we need from one screen called interface. The IDE is also commonly referred to
                  as the design environment, or the program.

                  Project description in standard exe. Project window.

                  To design a form window in Visual basic integrated development environment, first
                  install Microsoft visual basic 6.0 into PC, and follow the following in order to use it.
                  Start>all program> Microsoft visual basic 6.0> Dialog Box >Standard EXE> formwindow
                  appear.From the New Project window we can select new, existing and recent
                  project.The Standard EXE Project looks like this:

                  This is the main IDE window of Visual Basic. The following are components of the standard exe.windows.

                  8.2.1 Tool Box

                  Items of tool box are used to design the application interface. These items are
                  called Controls and are shown in the image below.


                  8.2.2 Form window

                  The form window is the window or background, where the user can design his form using various controls from the toolbox


                  Each standard form has a code window in which the user can write to direct the behavior of a control. You open the code window by double clicking on a form or a control. If you double click a form, you will be taken to a procedure for the form, but once the code window is open, you can go to any procedure for any object on the selected form.

                  The codes are of two Categories:

                  Declaration is written before any procedure in the code window.
                  Statements. The user selects the required event then code statements are written inside these event procedures.

                  8.2.4 Project explorer

                  Contains forms related to your application, it also contains code modules and classes.

                  8.2.5 Properties Window

                  Properties are the attribute of controls. Every object has properties, for example a Pen, has its Color, Metal Type, Ink Color, Type etc. In the same manner every control in VB has many properties which are applied by using the property fields in property box . Some properties are read only, which means the values of such properties can’t change using code, while others are Read and Write. You can move Property window any side of VB IDE Window, can appeal using tool bar or by Pressing F4.

                  It is also possible to change the properties at runtime to give special effects such as change of color, shape, animation effect and so on.

                  8.2.6 Form Layout Window

                  The Form Layout window is a visual design tool which is used to control the placement of the forms in the windows environment when they are executed especially when you have more than one form in your program, To position a form in the Form Layout window, simply drag the miniature form to the desired location in the window.

                  8.2.7 Menu Bar

                  This is where you can select actions to perform on all your project files and to access help. When a project is open extra menus of project, build and data, are shown in addition to the default menu selection of File, edit, View, Debug, tools, window and Help.


                  Application activities 8.2

                  1. Name five items on VB toolbox.

                  2. List two boxes that make up Visual Basic IDE?

                  8.3 Visual basic controls

                  a) Uses of properties window

                  Learning activities (8.3.1)

                  1. Design a form and call it “NDI UMUNYARWANDA” and have the three labels with three textbox. As well as the properties of label are:

                  Name: lblfirstname, lbllastname, and lblnationarity respectively.

                  Appearance: run time with 3D effects.

                  Caption: First Name, last Name and Nationality. Respectively

                  Font: (font face Bold, font style Time New roman, size 14 and effects)

                  Forecolor: It returns foreground color of a label

                  Height: 1000.

                  Width: 2000

                  Backcolor: Active border.

                  Borderstyle: Fixed Single-With border)

                  Backstyle: Opaque

                  • And the textbox as

                  Name: txtfirstname, txtlastname, and txtnationarity respectively.

                  Caption: Null in all

                  Font: (font face Bold, font style Time New roman, size 14 and effects)

                  Height: 730.

                  Width: 3000

                  8.3.1 Definition of form.

                  Form is the shape, visual appearance, or configuration of an object. In a wider sense, the form is the way something is or happens. Form may also refer to: Form (document), a document (printed or electronic) with spaces in which to write or enter data.

                  8.3.2 How to design a form in Visual Basic

                  To design a form in visual basic use the controls which are available in the Tool Box in the left side of the project window. Use the following steps for each control that you want to add on the form:

                  Step 1: In the Tool Box, choose a control that you want andClick on it.

                  Step 2: Drag and draw a control in the form using mouse.

                  Step 3: Change state for Specific control like size etc.

                  8.3.3 properties Window

                  Definition of Properties Window.

                  Properties Window is used to change the state of each control using particular properties associated with each control.

                  How to use Properties Window.

                  Before writing an event procedure for the control to response to a user’s input, you have to set certain properties for the control to determine its appearance and how it will work with the event procedure. You can set the properties of the controls in the properties window or at runtime.

                  Consider the following picture



                  Figure 8.15 above is a typical properties window for a form. You can rename the form caption to any name that you like best. In the properties window, the item appears at the top part is the object currently selected (in Figure 8.15, the object selected is Form1). At the bottom part, the items listed in the left column represent the names of various properties associated with the selected object while the items listed in the right column represent the states of the properties. Properties can be set by highlighting the items in the right column then change them by typing or selecting the options available. For example, in order to change the caption, just highlight Form1 under the name Caption and change it to other names. You may also try to alter the appearance of the form by setting it to 3D or flat. Other things you can do
                  are to change its foreground and background color, change the font type and font
                  size, enable or disable minimize and maximize buttons and etc.

                  Application activity 8.3.1

                  Q1. Which property used to change state of a control?

                  a) Design a form using a control.

                  Learning activities (8.3.2)

                  Observe the figure below:
                  Using the toolbox design the above form.


                  A control: is a tool you use to create objects on a Visual Basic form. You select controls from the toolbox and use the mouse to draw objects on a form. You use most controls to create user interface elements, such as command buttons, image boxes, and list boxes.

                  • Properties of a control.


                  Before writing an event procedure for the control to respond to an event, you have to set certain properties for the control to determine its appearance and how it will work with the event procedure. You can set the properties of the controls in the properties window or at design time. Other things you can do are to change its foreground and background color, change the font type and font size, enable or disable minimize and maximize buttons etc. Here are the important points about setting up control properties:

                  • Caption Property of a control should be clearly defined so that a user knows what to do with control

                  • Use a meaningful name for property as it is easier to write and read the event procedure and easier to debug or modify the program later.

                  • One more important property is whether to make the control enabled or not.

                  • You should also consider making the control visible or invisible at design time, or when should it become visible or invisible.

                  8.3.4 Common controls used in Visual Basic:


                  a .Form
                  Form is used when you start Visual Basic, a default form (Form1) with a standard grid (a window consisting of regularly spaced dots) appears in a pane called the Formwindow. You can use the Form window grid to create the user interface and to line up interface elements.

                  Steps to create Form

                  Step 1: Click Project on menu and choose Add form from the list of options


                  Step 2: Click Form and click Open


                  Step 3: Set the Properties for a form

                  Name: Enter the name of the form. It returns the name used to identify form.

                  Enabled: form controls can be enabled or disabled on initial execution with the enabled property.

                  Appearance: It sets whether or not object is painted at run time with 3D effects.

                  Caption: Enter the caption associated with the form. It sets the text displayed as the title of the form.

                  Backcolor: Choose background color of textbox .It sets the background color used to display textbox.

                  Borderstyle: Choose border style of the form

                  Fillcolor: It sets the colour used to fill in shapes, circles and boxes.

                  Fillstyle: It returns the fill style of a shape

                  Backstyle: Choose background style; Opaque or transparent

                  Font: It returns the font of a form.

                  Scaleheight: It sets the number of units for the vertical measurement of form.

                  Scaleleft: It returns the horizontal coordinates for the left edge of form.

                  • Visible shows or hide a control on a form. It sets value that determines whether an object is visible or hidden


                  The label is a very useful control for Visual Basic, as it is not only used to provide instructions and guides to the users, it can also be used to display outputs. One of its most important properties is Caption. Using the syntax label.Caption, it can display text and numeric data. You can change its caption in the properties window and also at runtime.

                  The following are the steps to add a label on the form.

                  Step 1: Click on the label icon on the toolbox

                  Step 2: Drag and drop a label control in the form

                  Step 3: Set Properties for label

                  Name: Enter the name of the label control. It returns the name used to identify object.

                  Alignment: It returns/sets the alignment of a label

                  Appearance: It sets whether or not object is painted at run time with 3D effects.

                  Caption: Enter the caption associated with the label. It sets the text displayed on the form.

                  Font: It returns the font of object (font face, font style, size and effects)

                  Forecolor: It returns foreground color of a label

                  Height: Enter the height of the label.

                  Backcolor: Choose background color. It sets the background color used to display label.

                  Borderstyle: Choose border style of the label(None-no border or Fixed Single- With border)

                  Backstyle: Choose background style; Opaque or transparent

                  c. Text Box


                  The text box is the standard control that is used to receive input from the user as
                  well as to display the output. It can handle string (text) and numeric data but not
                  images or pictures. String in a text box can be converted to a numeric data by using
                  the function Val(text).
                  . Steps to add Textbox
                  Step 1: Click on the Textbox icon    on the toolbox

                  Step 2: Drag and drop a Textbox control in the form

                  Step 3: Set Properties for Textbox such as Name, alignment, appearance, backcolor etc.

                  d. Frame


                  If you want to create a group of controls that work together, you must first create a frame for the controls. (To do this, use Frame, a Visual Basic toolbox control.) Next, place your controls inside the frame so that they can be processed as a group in your program code and moved as a group along with the frame

                  Steps to add Frame:

                  Step 1: Click on the Frame icon  on the toolbox

                  Step 2: Drag and drop a Frame control in the form

                  Step 3: Set Properties for Frame: on this step, you set preferred properties


                  e. Radio Buttons/ Option Buttons

                  The Option Box control lets the user selects one of the choices. However, two or more Option Boxes must work together because as one of the Option Boxes is selected, the other Option Boxes will be unselected. In fact, only one Option Box can be selected at one time. In computer terminology we call this ‘mutual exclusion’. Therefore, two option box controls are said to be mutually exclusive of each other. When an option box is selected, its value is set to “True” and when it is unselected; its value is set to “False”.

                  Steps to add Option Button

                  Step 1: Click on the OptionButton   icon on the toolbox

                  Step 2: Drag and drop aOptionButton control in the form

                  Step 3: Set Properties for Option Button

                  f. Check box control

                  The Check Box control lets the user to select or unselect an option. When the Check Box is checked, its value is set to 1 and when it is unchecked, the value is set to 0. You can include the statements Check1.Value=1 to mark the Check Box and Check1. Value=0 unmark the Check Box, and use them to initiate certain actions. For example, the program will change the background color of the form to red when the check box is unchecked and it will change to blue when the check box is checked.

                  Steps to add CheckBox

                  Step 1: Click on the CheckBox  icon on the toolbox

                  Step 2: Drag and drop a CheckBox control in the form

                  Step 3: Set Properties for CheckBox

                  g. Command button

                  Command button is a very important control as it is used to execute commands. It displays an illusion that the button is pressed when the user clicks on it. The most common event associated with the command button is the Click event.

                  h. List Box
                  The function of the List Box is to present a list of items where the user can click and select the items from the list. In order to add items to the list, we can use the AddItem method.

                  List Box contains a list of options from which user can choose. In windows the
                  Font List box is an example of the use of a list box. The Selected item in a ListBox is

                  given by the Textproperty. The sorted property determines whether the items in the
                  list box will be sorted or not.

                  Adding items to list

                  a) Change property list from properties window: Open the list properties window
                  and choose list property. Write a list of items to appear in the list box

                  i. Combo Box

                  The function of the Combo Box is also to present a list of items where the user can click and select the items from the list. However, the user needs to click on the small arrowhead on the right of the combo box to see the items which are presented in a drop-down list. In order to add items to the list, you can also use the AddItem method.


                  j. Picture Box

                  The Picture Box is one of the controls that used to handle graphics. You can load a picture at design phase by clicking on the picture item in the properties window and select the picture from the selected folder. You can also load the picture at runtime using the LoadPicture method. For example, the statement will load the picture grape.gif into the picture box.

                  Picture1.Picture=LoadPicture(“C:\Images\grape.gif”)

                  Picture Box is a control used to display images on a VB page. The Picture Box control also supports few functionality of generating advanced drawing.

                  k. Image box

                  The Image Box is another control that handles images and pictures. It functions almost identically to the picture box. However, there is one major difference, the image in an Image Box is stretchable, which means it can be resized. This feature is not available in the Picture Box. The syntax is as follows:

                  l. Timer

                  When we need to perform tasks at regular interval we can use Timer . Open a new project and place a timer object on your form. Then locate a label at the center of theform and adjust the size as shown in the figure below. For such a program a better look will beestablished by sizing your form as a pop up window.

                  m. File System Controls

                  File System Controls are set of controls which help us to add file handling capabilities to our program. They are used together to provide an interface for accessing and exploring drives, folders and files. File system controls can be drive list box, directory list box and file list box.

                  1) Drive List Box: The Drive ListBox is for displaying a list of drives available in
                  your computer. When you place this control on the form and run the program, you will be able to select different drives from your computer.

                  2) Directory List Box: is for displaying the list of directories or folders in a selected drive. When you place this control into the form and run the program, you will be able to select different directories from a selected drive in your computer.

                  3) File List Box: This control displays a list of files in the current folder.
                  These are important controls even though there are plenty of controls used in VB.

                  g. ADO

                  ADO (ActiveX Data Objects)is the preferred method for accessing non-Jet tables. ADO and DAO are interchangeable for most things and you are unlikely to experience real timing differences with the two methods. There are some things that ADO cannot do with an Access database that DAO can do.DAO is native to Jet, and on several operations, it might perform a bit faster on Jet than ADO. DAO will contain some methods and properties that are only relevant to Jet, not other databases.

                  h. DAO

                  DAO(Data Access Objects) was the first object-oriented interface that exposed the Microsoft Jet database engine (used by Microsoft Access) and allowed Visual Basic developers to directly connect to Access tables as well as other databases - through Open Database Connectivity (ODBC).

                  3. Design a form “Rectangle” that contains a round rectangle.

                  4. What is the most common Event associated with the Command Button?

                  8.4. Planning and Developing a Visual Basic program.8

                  8.4.1 The process of Planning and Developing a Visual Basic program

                  Learning activity 8.4.1
                  Consider and observe the following form that contains different controls and help a
                  school to calculate the monthly interest according to the borrowed money per month.

                  1. What is the role of each control on the form.

                  2. Which cause the command button named calculate to find and display           the interest

                  3. What happen if you do not find the simple interest?

                  4. What can you do if run a program and you are informed that the program contains errors?

                  Developing a VB program is mainly done in three steps namely setting up user interface, defining the properties, and creating code.

                  a. Draw the interface

                  At this step, you will be using the object to design the interface of your application; the controls will be taken from the tool box by dragging it from there to the form designer.

                  b. Set properties

                  At this stage, you will be setting up properties for your form and controls. Those properties are set from the properties window.

                  c. Write the event code.

                  Coding is to be done in the code window and you get there by double clicking the object you want to code. Now we double click on the form1, the source code Window for the form1 appears:

                  Private Sub Form_Load()
                  End Sub

                  You just have to write your code between two statements. In order to display the
                  output, you have to add Form1.show

                  Example 8.4.1: VB application to display the message: “welcome to the world of
                  programming:”

                  Private sub Form_load()

                  Form1.show

                  Print”welcome to the world of programming”

                  End sub.

                  Procedure:

                  • Put the pointer on the form 1, right button, properties, go to name and replace form1 by frmvolumecylinder.

                  • Go to caption; and replace form1 by Volume of cylinder

                  • Go now to toolbox, then choose label (3 times) and if toolbox is not there, go to view then choose toolbox

                  • Click once on the label one, right button; properties and replace label1 name by lblradius and the caption by the “Radius

                  • Click on the label2, properties and replace the label2 name by lblheight and the caption by “Height”

                  • Click on label3, properties and replace the name by lblarea and caption by “Volume”.

                  • Then go to toolbox, choose now the textbox (3 times) starting by the first, go to properties and remove.

                  • Go to text name and replace the text1, text2 and text3 by txtradius, txtheight and txtvolume respectively.

                  • Go back to toolbox and choose command buttons (3 times)

                  • Go to properties and replace names command1, command2 and command3 by cmdcalculate, cmdnew and cmdexit respectively captions by Calculate,Newcalculation and Exit.

                  Command “Calculate”

                  Double click on command button “Calculate” to write the code to calculate the
                  area when you click on it at running time.

                  Codes:

                  Private Sub cmdcalculate_Click()
                  txtvolume.Text = 3.14 * Val(txtradius.Text ^ 2) * Val(txtheight.Text)
                  End Sub

                  Command “New Calculation”

                  Double click on the command New calculation to write the code to let you make other calculation when click on it.

                  Codes:

                  Private Sub cmdnew_Click()
                  txtradius.Text = “”
                  txtheight.Text = “”
                  txtvolume.Text = “”
                  End Sub

                  Command “Exit”

                  And finally Exit command to write the code to end the program when you click
                  on it.

                  Codes:

                  Private Sub cmdexit_Click()
                  Unload Me
                  End Sub


                  Application activity 8.4.1


                  1. A. Design a form like above using all possible control and its proportional properties.

                  2. Coding a program.

                  8.4.2. Debugging Your Code and Handling Errors

                  Application activities 8.4.2

                  UMWARI is a student in senior five, once planning and developing a visual basic program but in running stage it does not run correctly.

                  a. Is it possible to correct it? Explain.

                  b. Give appropriate term of correct the challenges faces.

                  c. Identify why program does not runand the possible solutions.

                  8.4.2 Debugging your Code and Handling Errors

                  A. Program error: is a result of bad code in some program involved in producing the erroneous result

                  B. Handling errors

                  Error handling should be used to process only exceptional situations, despite the fact
                  that there is nothing to prevent that programmer from using errors as an alternate
                  form of program control.

                  These errors can be grouped into three categories:

                  • Syntax errors

                  • Run-time errors

                  • Logic errors

                  Syntax errors are grammatical errors in the formulation of statements and are picked up by the interpreter while you are typing in the code (providing the syntax checking option - under environment options - is set to yes).

                  Run-time errors these are errors that cannot be detected until the program is running. The syntax of the statements is correct, but once executed they cause a error situation to arise. Examples of run-time errors are attempted division by zero or trying to access a non-existent object.

                  Logic errors these are errors that cause the program to behave incorrectly. They generally arise through failure on the part of the programmer to arrive at a correct algorithm for the task. Typical problems might be incorrect ordering of statements, failure to initialise or re-initialise a variable, assignment to an incorrect variable, use of ‘<’ instead of ‘<=’, use of ‘and’ instead of ‘or’, or omission
                  of a crucial step in the processing. Logic errors may hide in a program even when it appears to work - they may only surface under certain conditions. This is why careful testing is so important.

                  c. Debugging

                  Debugging is a process by which you find and resolve errors in your code. To debug code in Visual Basic, consider the ideas suggested below. These techniques can also be applied in different sequences.

                  • Print the code, if you find it easier to read code on paper instead of softcopy.

                  • Run the application to find trouble spots:

                  From the Run menu, choose ‘Start’ to begin running the application. Run until an error stops execution, or halt execution manually when you suspect an error by choosing ‘Break’ from the Run menu. Resolve all compile errors and run-time errors. From the Run menu, choose ‘Continue’ to continue running the application. Once bugs are found try out bug fixes and then make edits by testing individual lines of new or debugged code in the Debug window. Search and replace code

                  for all occurrences of an error, checking other procedures, forms, or modules with related code. From the Run menu, choose ‘Restart’ to reset application variables and properties and restart the application from the beginning.

                  Debugging tools.

                  These are tools designed to help in stopping the execution of a program at specific points, detecting run-time and logic errors and understanding the behavior of errorfree code.

                  8.4.4 Building an executable file

                  You can make an executable file (.exe) from Visual Basic using the following procedure.
                  To make an executable file in Visual Basic

                  1. From the File menu, choose Make projectname .exe where projectname is the application name for the project.

                  2. Type a file name, or browse through the directories and select an existing file name to overwrite an existing executable with a newer version.

                  3. By clicking the Options button, you can also specify a number of versionspecific details about the executable file in the Project Properties dialog box.

                  4. If you want to modify the version number of the project, set the appropriate Major, Minor, and Revision numbers. Selecting Auto Increment will automatically step the Revision number each time you run the Make projectname .exe command for this project.

                  5. To specify a new name for the application, under Application, type a new
                  name in the Title box. If you want to specify a new icon, choose one from
                  the list.

                  6. You can also enter version-specific commentary on a variety of issues under the Version Information box (comments, company name, trademark and copyright information, and so on) by selecting a topic from the list box and entering information in the text box.

                  7. Choose OK to close the Project Properties dialog box, and then choose OK in the Make appname .exe dialog box to compile and link the executable file. You can run the executable file like any other Windows-based application: doubleclick the icon for the executable file.

                  8.4.5. Deploying a VB Project

                  The Visual Basic Package and Deployment Wizard makes it easy for you to create the necessary cab files and setup programs for your application. Like other wizards, the Package and Deployment Wizard prompts you for information so that it can create any exact configuration.

                  There are three ways of starting the Package and Deployment Wizard:

                  • Run it from within Visual Basic as an add-in. If run the wizard as an add-in, first set the necessary references in the Add-In Manager to load the wizard. When the wizard as an add-in, Visual Basic work with the project currently open. If work with another project, either open that project before starting the add-in, or use the wizard as a stand-alone component.

                  • As a stand-alone component from outside the development environment. Run the wizards as a stand-alone component, prompted choose the project on which working with.

                  • Start it in silent mode by launching it from a command prompt. “Running the Wizard in Silent Mode” in this topic for more information. After you start the wizard, a series of screens prompt you for information about your project and let you choose options for the package. Each screen explains how it is
                  to be used, including which information is optional, and what information must be  entered before move to the next screen. If it display information on screen, press F1 or click the Help button.

                  Note: Save and compile project before running the Package and Deployment Wizard. In most cases, the Package and Deployment Wizard create a package that is ready for deployment. However, if customize packaging process further or provide functionality not supported by the Package and Deployment Wizard, modify the Setup Toolkit Project.

                  To start the Package and Deployment Wizard from within Visual Basic

                  1. Open the project you want to package or deploy using the wizard. Note If you are working in a project group or have multiple projects loaded, make sure that the project you want to package or deploy is the current project before starting the wizard.

                  2. Use the Add-In Manager to load the Package and Deployment Wizard, if necessary: Select Add-In Manager from the Add-Ins menu, select Package and Deployment Wizard from the list, then click OK.


                  4. On the main screen, select one of the following options:

                  • If you want to create a standard package, Internet package, or dependency file for the project, click Package.

                  • If you want to deploy the project, click Deploy.

                  • If you want to view, edit, or delete scripts, click Manage Scripts.

                  For an introduction to these options, see “The Package and Deployment Wizard.”

                  5. Proceed through the wizard screens.

                  To start the Package and Deployment Wizard as a stand-alone component

                  1. If the project you want to package is open, save it and close Visual Basic.

                  2. Click the Start button, and then click Package and Deployment Wizard from the Visual Basic submenu.

                  3. In the Project list on the initial screen, choose the project you want to package.

                  Note You can click Browse if your project is not in the list.

                  4. On the main screen, select one of the following options:

                  • If you want to create a standard package, Internet package, or dependency file for the project, click Package.

                  • If you want to deploy the project, click Deploy.

                  • If you want to view, edit, or delete scripts, click Manage Scripts.

                  5. Proceed through the wizard screens.

                  Running the Wizard in Silent Mode

                  Using scripts, you may package and deploy your project files in silent mode. In silent mode, the wizard runs without your having to attend it to make choices and move through screens. The wizard packages and deploys your project using the settings contained in a script.

                  Silent mode is especially useful if you are packaging and deploying as part of a batch process. For example, early in the development of your project, you may use the Package and Deployment Wizard to package your project and deploy it to a test location. You can later create a batch file to perform the same packaging and deployment steps periodically as you update your project.

                  To package and deploy in silent mode

                  1. Open MS-DOS prompt.

                  2. Type the name of the wizard executable, pdcmdln.exe, followed by the path and file name of Visual Basic project, and the appropriate command line arguments.

                  3. PDCmdLn.exe C:\Project1\Project1.vbp /p “Internet Package”

                  4. /d Deployment1 /l “C:\Project1\Silent Mode.log”

                  Note: Can perform packaging and deployment in a single silent session by specifying both the /p and the /d arguments, as shown in the example above. Otherwise, use either /p or /d.

                  Note Any file or script name that includes spaces should be enclosed in quotation marks, as shown in the example above.

                  Application activities 8.4.2

                  1. Describe three types of errors made in Visual basic.

                  2. Define the term debugging.

                  3. Design a simple calculator which makes addition, division, multiplication and subtraction of two numbers.

                  4. Hirwa Eric is a programmer, when he attempts to run his VB code, it generates an error.

                  a. Explain why this program generate an error?

                  b. Give the strategies Eric must follow in order to solve this problem.

                  8.5 WORKING WITH MENUS AND DIALOG BOXES

                  Learning activities 8.5

                  Observe the following organization structure of a girls’ school and answer the following questions:


                  1. As a student of S5 how many levels you pass through in order to reach to head teacher?

                  2. Why is it necessary to pass at each level?

                  3. Design the above organizational structure into a VB form window use of menus.

                  Windows applications provide groups of related commands in Menus. These commands depends on the application, but some-such as Open and Save are frequently found in applications. Menus are intrinsic controls. Visual Basic provides an easy way to create menus with the modal Menu Editor dialog. The below dialog is displayed when the Menu Editor is selected in the Tool Menu. The Menu Editor command is grayed unless the form is visible. And also you can display the Menu Editor window by right clicking on the Form and selecting Menu Editor.

                  8.5.1 Multiple Document Interface (MDI).

                  The Multiple Document Interface (MDI) is another class of the form that allows you to open Windows within a parent container window to simplify the exchange of information among documents, all under the same roof.

                  Applications such as Microsoft office Word and Microsoft office excel are the best examples of MDI, where many documents can be opened simultaneously within the main document.

                  To use windows applications that can open multiple documents at the same time and allow the user to switch among them with a mouse-click. Each document is displayed in its own window and all document windows have the same behavior.

                  The main Form, or MDI form, isn’t duplicated, but it acts as a container for all the windows, and it is called the parent Window.

                  The windows in which the individual documents are displayed are called Child
                  windows.

                  An MDI application must have at least two Form, the parent form and one or more child forms.

                  Each of those forms has certain properties. These can be many child forms contained within the parent form, but there can be only one parent form. The parent form may not contain any controls, while the parent form is open in design mode, the icons on the toolbox are not displayed, but you can’t place any
                  controls on the form.

                  To create an MDI application, at least two forms are needed in the application: One is the parent or container form and the second is the child form or the form contained within the parent. A single child is required for the simple MDI Projects.

                  Procedures:

                  • Select New project from the file menu

                  • In the case you already have a form ,then in the properties window set the name property to frmchild and its caption to MDI_Child

                  • Right-click on the forms folder in the project window

                  • Click on add from the MDI form to create the MDI Parent form.

                  • Select MDI form from the Add MDI form dialog

                  • In the Properties window set the name property to frmMDI and the caption property to MDI_Parent.

                  • On the project menu, select project1.properties, set the startup object list to

                  frmMDI. In the Case you omit this; the application will start with the child form.

                  Select the frmchild from the project Explorer

                  Set the form’s MDI child property to true in the properties window. This will cause this form, which is the child, to rest inside the MDI Parent container.

                  • Save project as from the file menu and save the form as MDI.frm and project as MDI.vbp

                  8.5.2 Creating Menus

                  Menus, which are located on the menu bar of a form, contain a list of related commands. When you click a menu title in a Windows-based program, a list of menu commands should always appear in a well-organized list.

                  Most menu commands run immediately after they are clicked. For example, when the user clicks the Edit menu Copy command, Windows immediately copies information to the Clipboard. However, if ellipsis points (…) follow the menu command, Visual Basic displays a dialog box that requests more information before the command is carried out.

                  This section includes the following topics:

                  • Using the Menu Editor

                  • Adding Access and Shortcut Keys

                  • Processing Menu Choices

                  8.5.3 Using The Menu Editor

                  The Menu Editor is a Visual Basic dialog box that manages menus in your programs. With the Menu Editor, you can:

                  • Add new menus

                  • Modify and reorder existing menus

                  • Delete old menus

                  • Add special effects to your menus, such as access keys, check marks, and keyboard shortcuts.

                  See the Figure below for Menu editor Window:

                  Creating Menu Command Lists

                  To build lists of menu commands, you first need to create the menus and then add them to the program menu bar.

                  To create a list of menu commands on a form

                  4. Click the form itself (not an object on the form).

                  5. On the Visual Basic toolbar, click the Menu Editor icon, or select Menu Editor from the Tools menu.

                  6. In the Caption text box, type the menu caption (the name that will appear on the menu bar), and then press TAB.

                  7. In the Name text box, type the menu name (the name the menu has in the program code). By convention, programmers use the mnu object name prefix to identify both menus and menu commands.

                  8. To add the menu to your program menu bar, click next. The Menu Editor clears the dialog box for the next menu item. As you build your menus, the structure of the menus and commands appear at the bottom of the dialog box.

                  9. In the Caption text box, type the caption of your first menu command.

                  10. Press tab, and then type the object name of the command in the Name text box.

                  11. With this first command highlighted in the menu list box, click the right arrow button in the Menu Editor. In the Menu list box, the command moves one indent (four spaces) to the right. Click the right arrow button in the Menu Editor Dialog box to move items to the right, and click the left arrow button to move items to the left.

                  12. Click Next, and then continue to add commands to your menu.

                  The position of list box items determines what they are:


                  To add more menus

                  1. When you’re ready to add another menu, click the left arrow button to make the menu flush left in the Menu list box.

                  2. To add another menu and menu commands, repeat Steps 3 through 9 in the preceding procedure.

                  3. When you’re finished entering menus and commands, click OK to close the Menu Editor. (Don’t accidentally click Cancel or all your menu work will be lost.) The Menu Editor closes, and your form appears in the programming environment with the menus you created.

                  Adding Event Procedures After you add menus to your form, you can use event procedures to process the menu commands. Clicking a menu command on the form in the programming environment displays the event procedure that runs when the menu command is chosen. You’ll learn how to create event procedures that process menu selections in Processing Menu Choices.

                  8.5.4 Adding Access and Shortcut Keys.

                  Visual Basic makes it easy to provide access key and shortcut key support for menus
                  and menu commands.

                  Access and Shortcut Keys

                  The access key for a command is the letter the user can press to execute the command when the menu is open. The shortcut key is the key combination the user can press to run the command without opening the menu. Here’s a quick look at how to add access and shortcut keys to existing menu items:

                  • Add an access key to a menu item Start the Menu Editor. Prefix the access key letter in the menu item caption with an ampersand (&).

                  • Add a shortcut key to a menu command and Start the Menu Editor. Highlight the  command in the menu list box. Pick a key combination from the Shortcut drop-down list box.

                  Creating Access and Shortcut Keys

                  You can create access keys and shortcut keys either when you first create your menu commands or at a later time.

                  The following illustration shows the menu commands associated with two menus,
                  File and Clock. Each menu item has an access key ampersand character, and the
                  Time and Date commands are assigned shortcut keys. See figure below.

                  Figure 8.39 Menu Editor Window showing how to create shortcut keys

                  8.5.5 Processing Menu Choices

                  After you place menu items on the menu bar, they become objects in the program. To make the menu objects do meaningful work, you need to write event procedures for them. Typically, menu event procedures:

                  • Contain program statements that display or process information on a form.

                  • Modify one or more object properties.

                  For example, the event procedure for a command named Time might use the Time keyword to display the current system time in a text box. Processing the selected command might require additional information (you might need to open a file on disk, for example). If so, you can display a dialog box to receive user input by using a common dialog box. You’ll learn this technique in the next section.

                  Disabling a Menu Command

                  In a typical Windows application, not all menu commands are available at the same time. In a typical Edit menu, for example, the Paste command is available only when there is data on the Clipboard. When a command is disabled, it appears in dimmed (gray) type on the menu bar. You can disable a menu item by:

                  • Clearing the Enabled check box for that menu item in the Menu Editor.

                  • Using program code to set the item’s Enable property to False. (When you’re ready to use the menu command again, set its Enable property to True.).

                  Application activity 8.5

                  Design a program which have five menus (Home,Insert,Page Layout, review and View) and sub_menu in home ( File, open and Edit) and the open File option display form1.

                  You should be able to open the above form using shortcut(Ctrl+F).




                  • Key Unit Competency

                    To be able to use variables, operators, expressions and control structures in a Visual Basic program.

                    INTRODUCTORY ACTIVITY

                    The Visual Basic program below asks the user to enter the names, year of birth and the sex and displays the following messages: “Good Morning Sir, you are .... years old” if the sex is Male and “Good morning Madam, you are ...years old” Analyze the following VB

                    source code and answer corresponding questions:

                    Private Sub Command1_Click()

                    Dim names, sex As String

                    Dim year As Integer

                    names = Text1.Text

                    sex = Text2.Text

                    year = Val(Text3.Text)m = 2018 - year

                    If sex = “Male” Then

                    Print “Good morning Sir , you are”; m; “ years old “

                    ElseIf sex = “Female” Then

                    Print “Good morning Madam ,you are”; m; “ years old “Else

                    Print sex; “ sex does not exist!”End If

                    End Sub

                    1. List the variables used in the source code above

                    2. What is the type of Visual Basic Data used in this source code?

                    3. Describe operators used in the source code

                    4. What is the control structure used in the source code?

                    5. Draw the corresponding interface and give an output of the above source code

                    9.1. Types of Visual Basic Data

                    ACTIVITY 9.1

                    In every program, a programmer declares variables with their data types.

                    1. Explain why the declaration of variables is important during the writing of programs

                    2. What are the data types used in programs?

                    3. Discuss the storage size and range of values of data types used in programs.There exist many types of variables, but the most used in Visual Basic are:

                    • An elementary data type, such as Boolean, Long, or Decimal

                    • A composite data type, such as an array or structure

                    • An object type, or class, defined either in current application or in another application All the above types are grouped in two major data types: numeric data type and non-numeric data type.

                    9.1.1 Numeric data types

                    Numeric data types are types of data that consist of numbers, which can be computed mathematically with various standard operators such as add, minus, multiply, divide among others.


                    9.1.2 Non-numeric data types

                    Non- numeric data types are types of data that cannot be manipulated mathematically using standard arithmetic operators. The non- numeric data types comprise of text or string data types, the Date data types, the Boolean data types, Object data type and Variant data type.

                    Suffixes for literal

                    Literals are values that you assign to data. In some cases, we need to add a suffix behind a literal so that VB can handle the calculation more accurately. For example, we can use num=1.3089# for a Double.

                    In some cases, a literal can be forced to a particular data type; for example, when assigning a particularly large integral literal value to a variable of type decimal, the following example produces an error:

                    Dim myDecimal as Decimal

                    myDecimal = 100000000000000000000 ‘ This causes a compiler error. The error results from the representation of the literal. The Decimal data type can hold a value this large, but the literal is implicitly represented as a Long, which cannot.To make the previous example work, you can append the D type character to the literal, which causes it to be represented as a Decimal:

                    Dim MyDecimal AsDecimal = 100000000000000000000DSo, a suffix needs to be added behind a literal so that VB can handle the calculation more accurately. If a suffix is not added behind a literal, it generates a syntax error. For example, num = 2.3807# is used for Double data type. The Table 9.3 below shows Visual Basic Data Types and their suffixes or Appended type char-acter

                    Note: String literals are normally enclosed within double quotations while date and time literals are enclosed within two # sign. Strings can contain any characters, including num-bers. The following table summarizes the data types with their enclosing characters and appended type charactersTable 9.4: data types with their enclosing characters and appended type characters

                    APPLICATION ACTIVITY 9.1

                    1. What would happen if a programmer uses one of VB keywords (reserved words) as a variable identifier?

                    2. In a program, if a user declares an integer variable and enters a string like “book”, explain the nature of the results produced by such a program

                    3. Study the following VB source code, draw its corresponding interface and then give an output.

                    Private Sub Form_Load()

                    Form1.Show

                    Name1 = “ UWIHANGANYE”

                    phone = “ +250783297650”

                    Jour = #7/29/1996#

                    BithTime = #7:20:00 PM#

                    Text1.Text = Name1

                    Text2.Text = phone

                    Text3.Text = Jour

                    Text4.Text = BithTime

                    End Sub

                    9.2 Variables

                    ACTIVITY 9.2

                    1. Outline different rules of naming a variable in Visual Basic

                    2. Explain general format of variable declaration

                    3. Explain general format of variable initialization

                    4. Draw interface and write a VB program which asks a user for entering a radius of a circle to display the area of a circle after running the program as shown in figure 9.1. Consider pi as the constant whose numeric value 22/7.


                    A variable is a name assigned to a data storage location. It can also be defined as area allocated by the computer memory to hold data. Variables are used in Visual Basic to store various kinds of data during program execution.

                    9.2.1 Variable name

                    In Visual Basic Program, each variable must be given a name. To name a variable in Visual Basic, there is a set of rules to be followed.The rules used in naming variables in Visual Basic are:

                    • No more than 40 characters

                    • Variables must include letters, numbers and underscores ( ). No punctuation, spaces or other characters are permitted.

                    • A variable name must begin with a letter

                    • The name cannot be a reserved word (words needed by Visual Basic).

                    For example, End is a reserved word in Visual Basic and therefore should not be used as a variable name.Examples of valid and invalid variable names are displayed in the table below:


                    9.2.2 Variable declaration

                    They are three ways for declaration of a variable.

                    1. Default Declaration

                    If the variables are not implicitly or explicitly declared, they are assigned the variant (a var-iable that can hold data of any size or format) type by default. The variant data type is a special type used by visual basic that contains numeric, string or date data.For example: the following VB program finds the sum of two given numbers:

                    Private Sub Command1_Click()

                    Dim n1, n2, sum As Variant

                    n1 = Val(Text1.Text)

                    n2 = Val(Text2.Text)

                    n3 = n1 + n2Text3.Text = n3

                    End Sub

                    2. Implicit Declaration

                    To implicitly declare a variable, use the corresponding suffix. For example:

                    declaration way, Visual Basic will take care of ensuring consistency in upper and lower case letters used in variable names.

                    To explicitly declare a variable, its scope has to be firstly determined. There are four levels of scope are procedural level, static, form and module level, and last global level

                    These levels of scope progress from the narrowest (block) to the widest (namespace), where narrowest scope means the smallest set of code that can refer to the element without qual-ification.

                    a) Procedure level

                    With procedure level, variable are declared using the Dim statement Example:

                    Dim MyName As String

                    Dim MyInt As Integer

                    This is given to variables declared using the Dim reserved word within a block of statemet

                    Here, the variable can only exist and be used within the If ... Then ... Else statement. It is a local variable visible only inside the block where it has been declared.

                    b) Procedure level scope, static

                    In procedure level ,static, variables declared in this manner do not retain their value once a procedure terminate, within a procedure level, static variables are declared using the Dim statement

                    For example:

                    Private Sub End_click()

                    Static age As Integer

                    Static MyName As string

                    end sub

                    Note that

                    Dim can only exist and be used within the procedure or function. It is a local variable in that procedure or function.

                    • Procedure level variables declared in this manner do not retain their value once a pro-cedure terminates.

                    • To make a procedure level variable retain its value upon existing the procedure, replace the Dim keyword with Static

                    c) Form(module) level scope

                    The variable is declared in the General Declarations section at the start of the module. Form (module) level variables retain their values and are available to all procedures within that form.

                    Module level variables are declared in the declarations part of the general object in the form’s (module’s) code window. The Dim keyword is used.

                    Example1: Dim MyDate as Date

                    Example 2: a program which requires three numbers entered from keyboard then calcu-lates their sum and average.


                    Requirements to perform the asked question;Design interface containing five Text box with their corresponding labels and four com-mands representing sum, agerage clear and exit respectively least but not last assign prop-erties to each control and last attach code

                    VB Source code can look as follows :





                    d) Global level scope

                    This is given to variables declared using the public reserved word within a code module. The variable is declared in the General Declarations section at the start of the module. Glob-al level variables retain their value and are available to all procedures within an application.It is advisable to keep all global variables in one module. Use the Global or public keyword.

                    Examples: Global MyInt as Integer or Public MyInt as Integer
                    Notice that several variables can be declared in one statement without having to repeat the data type. In the following statements, the variables i, j, and k are declared as type Integer, l and m as Long, and x and y as Single:

                    Dim i, j, k As Integer
                    ‘All three variables in the preceding statement are declared as Integer.
                    Dim l, m As Long, x, y As Single
                    ‘In the preceding statement, l and m areLong, x and y are Single.

                    Variable initialization

                    Once a variable is declared, it does not have a defined value, hence it cannot be used until it is initialized by assigning it a value.
                    Thus, variable initialization is the process of providing or assigning value to the variable
                    Where Variablename is the descriptive name of the variable, = is the assignment operator and value is the value that a variable will contain.


                    9.2.4 Declaring Constants

                    constants is value in memory that does not change during program execution. For example, in mathematics, pi is a constant whose numeric value is 22/7.The declaration of a constant goes immediately with its initialization.

                    Syntax: Const constant name As data type = value





                    9.3 Scope of a variable

                    Learning Activity 9.1
                    As any other programming language, Visual Basic application acts on data stored in variables. Using internet and library textbooks, discuss different scopes of variables.

                    APPLICATION ACTIVITY 9.2

                    1. Study the given VB source code of a program that requires a positive integer and displays its factorial. To avoid possible memory overflow, replace the “fact” variable data type with an appropriate data type whose size can hold a large value.




                    2. Write a VB program that asks to enter a radius of a sphere and display its volume. Declare Pi as a constant variable and assign to it 22/7 value.
                    3. Write a VB program that requests the user to enter 2 numbers and displays their sum, difference and product.

                    The scope of a declared element is the set of all code that can refer to it without qualifying its name. It is an area of influence and lifetime for a variable. This means a period of existence dependent on where and how the variable is declared. An element can have scope at one of the following levels:


                    In Microsoft Visual Basic for Applications, the three scopes available for variables are private, module, and public.

                    9.3.1 Private (Local) Scope

                    A local variable with private scope is recognized only within the procedure in which it is declared. A local variable can be declared with a Dim or Static statement.
                    • When a local variable is declared with the Dim statement, the variable remains in existence only as long as the procedure in which it is declared is running. Usually, when the procedure is finished running, the values of the procedure’s local variables are not preserved, and the memory allocated to those variables is released.
                    • A local variable declared with the Static statement remains in existant the entire time Visual Basic is running. Local variable retains its value after the module has finished executing.

                    9.3.2 Module (Global) Scope

                    A variable that is recognized among all of the procedures on a module sheet is called a “module-level” variable. A module-level variable is available to all of the procedures in that module, but it is not available to procedures in other modules. A module-level variable re-mains in existence while Visual Basic is running until the module in which it is declared is edited. Module-level variables can be declared with a Dim or Private statement at the top of the module above the first procedure definition.




                    9.3.3 Public scope

                    Public variables have the broadest scope of all variables. A public variable, like a module-lev-el variable, is declared at the top of the module, above the first procedure definition. A pub-lic variable cannot be declared within a procedure. A public variable is always declared with a “Public” statement. A public variable may be declared in any module sheet.


                    APPLICATION ACTIVITY 9.3

                    Write a Visual Basic program which computes the sum and average of the three given integers using keyboard.To achieve this, follow the instructions below:
                    i. The program uses two different procedures addition () and moyenne ()
                    ii. Declare the 3 variables as local variables in addition () procedure
                    iii. Declare sum as global variable to hold the sum calculated by addition() procedure
                    iv. The moyenne () procedure calculates the average of three given integers and display it.

                    9.4 Operators and expressions in Visual Basic

                    ACTIVITY 9.4
                    1. Enumerate the various operators used in C++ programming language
                    2. What is the value of the following expression if x=10 and y=5?
                    3. Evaluate the following expression if A=10, B=5, C=0 and D=22(A AND B)OR(C OR D) AND A

                    In programming context, an operator is a symbol or a keyword that instructs a compiler to evaluate mathematical or logical expressions.A Visual Basic expression is a combination of operators and operands.
                    For example, in the expression: energy = mass * light_speed ^2
                    • Energy, mass ,light_speed and 2 are the operands while
                    • = is the assignment operator, * is multiplication operator and ^ the exponentiation arithmetic operator.

                    9.4.1 Arithmetic operators

                    The most common operators in Visual Basic are the arithmetic operators. Table 9.4 below gives a summary of arithmetic operators supported in Visual Basic.


                    Note that:
                    • Parentheses () can change the precedence
                    • To concatenate two strings, use the & symbol or the + symbol: txtSample.Text=”My country“+“is”+ “Rwanda” myname=”John” & “Mugabo”

                    9.4.2 Relational (Comparison) operators

                    Normally, they are used to compare data values and then the result helps to decide what action to take. The result of comparison operation is a Boolean value (True or False).


                    AND: An expression has a true value if both operands are true, and false value elsewhere
                    OR: An expression has a true value if at least one of the operand is true and false elsewhere.
                    Xor: An expression has a true value if both operand are different and has a false value if both operands are the same.
                    NOT: Negates Boolean operand


                    The following example of VB program illustrates the Not ,And,Or,and Xor operators




                    Note that The AndAlso Operator is very similar to the And operator, in that it also performs logical conjunction on two Boolean expressions. The key difference between the two is that AndAlso exhibits short-circuiting behavior. If the first expression in an AndAlso expression evaluates to False, then the second expression is not evaluated because it cannot alter the final result, thus AndAlso returns False.
                    Similarly, the OrElse Operator performs short-circuiting logical disjunction on two Boolean expressions. If the first expression in an OrElse expression evaluates to, then the second expression is not evaluated because it cannot alter the final result, and OrElse returns True.

                    9.4.3 Bitwise operators

                    Bitwise operations evaluate two integral values in binary (base 2) form. They compare the bits at corresponding positions and then assign values based on the comparison. Bitwise operators are similar to logical operators only that they are specifically used to manipulate binary digits.


                    Example:
                    Consider the expression below:
                    x = 5 Or 6
                    5 in binary form = 1016
                    in binary form = 110101
                    And 110 = 100

                    The bitwise And operator compares the binary representations, one binary position (bit) at a time. If both bits at a given position are 1, then a 1 is placed in that position in the result. If either bit is 0, then a 0 is placed in that position in the result. The result is treated as decimal. The value 100 is the binary representation of 4, so x = 4.
                    The bitwise Or operator takes a 1 and assigns to the result bit if either or both of the compared bits is 1.


                    Example: Consider the expression below:
                    x = 5 Or 6
                    101 (5 in binary form)
                    110 (6 in binary form)
                    111 (The result, in binary form)

                    The result is treated as decimal. The value 111 is the binary representation of 7, so x =7.
                    • Bitwise Not takes a single operand and inverts all the bits, including the sign bit, and assigns that value to the result. This means that for signed positive numbers, Not always returns a negative value, and for negative numbers, Not always returns a positive or zero value.

                    Example: Dim x As Integer
                    x = Not 5101 (5 in binary form) , its negation is 010The result is treated as decimal. The value 010 is the binary representation of 2, so x =2.
                    Bitwise Xor assigns a 1 to the result bit if exactly one of the compared bits (not both) is 1.

                    Example:Dim x As Integer
                    x = 5 Xor 6101 (5 in binary form)
                    110 (6 in binary form)
                    011 (The result, in binary form)The result is treated as decimal. The value 011 is the binary representation of 3, so x =3.

                    • The AndAlso and OrElse operators do not support bitwise operations.The following example of VB program illustrates the use of bitwise operators



                    9.4.4 Precedence of operators

                    When several operations occur in an expression, each part is evaluated and resolved in a predetermined order called operator precedence.
                    Precedence Rules:
                    When expressions contain operators from more than one category, they are evaluated ac-cording to the following rules:
                    • The arithmetic and concatenation operators have greater precedence than the comparison, logical, and bitwise operators.
                    • All comparison operators have equal precedence, and all have greater pre-cedence than the logical and bitwise operators, but lower precedence than the arithmetic and concatenation operators.
                    • The logical and bitwise operators have lower precedence than the arithme-tic, concatenation, and comparison operators.
                    • Operators with equal precedence are evaluated left to right in the order in which they appear in the expression
                    Just like in BODMAS, the order of precedence can be changed by use of parenthesis.




                    Note that:
                    • The string concatenation operator (&) is not an arithmetic operator, but in precedence it is grouped with the arithmetic operators.
                    • When operators of equal precedence appear together in an expression, for example multiplication and division, the compiler evaluates each opera-tion as it encounters it from left to right. The following example illustrates this.


                    APPLICATION ACTIVITY 9.4
                    1. Study the following program and determine the output after its execution


                    2. Perform bitwise And, Or and Xor on the following variables
                    a. S = 25, T = 31
                    b. X = 50, Y = 18

                    9.5. Decision structures in Visual Basic

                    Learning Activity 9.5
                    1. Discuss the use of decision control structures (If...Then, If... Then... Else, Nested If ... Then.... Else ...Statements) in Visual Basic programming
                    2. Using Visual Basic, write a program that prompts a user to enter a student’s score in Mathematics. If the score is above 45%, the program should display “Pass” otherwise it should display “Fail”

                    To implement an application in visual basic, you need several coding structures to control the program flow. The control structures are used to control the flow of execution of a pro-gram they are used in a program to repeat a set of operations (looping control structures), and for making decisions according to the conditions when a program is executing (deci-sion control structures). A decision structure will test a condition and then perform opera-tions depending on whether yes or not the condition is met (True or false).

                    9.5.1 Types of decision control structures

                    Decision control structures also known as selection control statements are conditional logic used when there is one or more options or alternatives to chose from. There are four types of decision control structures namely if...then, if...then else, nested if ....then else, and select case

                    A. If ..... Then statement


                    B. If .....Then ....Else statement
                    The If...Then...Else selection structure allows the programmer to specify that different ac-tions are to be performed when the condition is True than when the condition is False. If the condition is true, the first part of the if ...then is executed. However if the condition is false the block of the else statements is executed

                    The syntax of the If ...Then ...Else conditional statement is as follows:




                    C. Nested If ....Else statement
                    Nested If...Then...Else statement test for multiple cases by placing If...Then...Else selection structures inside If...Then...Else structures
                    The syntax of the Nested If ...Else




                    In using branching statements, be aware that each IF and Else If in a block is tested sequen-tially. The first time an If test is met, the code associated with that condition is executed and the If block is exited. If a later condition is also True, it will never be considered.
                    Example:
                    Write a program to read marks (per cent) of university students and put these students into classes according to their marks. Classes with their corresponding marks:
                    • From 80 to 100: First class honours
                    • From 70 to 79: Upper second class honours
                    • From 50 to 69: Lower second class honours
                    • From 40 to 49: Pass
                    • Below 40: Fail

                    Solution:





                    APPLICATION ACTIVITY 9.5
                    1. Create a simple program which will ask a user to input a value.
                    • If the value is 1 it should display the text “The day is Monday”
                    • If the value is 2 it should display the text “The day is Tuesday”
                    • Do this for all the days of the week.
                    • Use the Nested If...Then ...Else structure to achieve the above.
                    2. Write a VB program that would enable the user to enter student marks in three subjects. The program should calculate mean marks and determine whether the student has passed if the pass mark is 50%
                    3. Observe the following interfaces and write a visual basic program using various mathematical functions like sqrt, sqr, sin, cos, tan.\





                    Hint: Once the user enters any value in the first Textbox and selects any option, the output will be displayed in second TextBox, if the user enters a negative number and selects the sqrt option he/she will be informed that the square root of a negative number does not exist and once he or she does not select any option he/she will be informed to select any of available option.

                    D. Select case statement

                    Learning Activity 9.6

                    1. Discuss the use of Select case statement as decision control in Visual Basic programming
                    2. Create a simple program which will ask a user to input a value.
                    • If the value is 1 it should display the text “The month is January”
                    • If the value is 2 it should display the text “The month is February”
                    • If the value is 3 it should display the text “The month is March”
                    • If the value is 4 it should display the text “The month is April”
                    • Do the same for all months of a year
                    • Use the Select case statement to achieve the above

                    Select...Case structure is an alternative to nested If...Then...Else for selectively executing a single block of statements from among multiple block of statements. If the “case” matches the condition is selected and all instructions within the matching case are executed. Select...case is more convenient to use than the If...Else...End If.The general format is:


                    Each possible value of the item is checked using a Case statement followed by one or more Visual Basic statements that will be carried out if there is a match for that value. The final part of the structure is usually a Case Else statement to be executed if none of the above values match. This is useful for informing the user that he /she is out of cases.

                    Example 1: A Visual Basic program that displays the Grade according to the marks entered by students:











                    Example 2: Application to assign grade (comment) to students depending upon the marks they’ve got.











                    APPLICATION ACTIVITY 9.6

                    1. Write a VB program that displays the comment according to the entered student’s grade 


                    2. Write a VB program that allows a user to enter two floating point number from the keyboard and it requests a user to enter his/her preference in order to perform one operation from (addition, subtraction, multiplication and division) operation’s menu. The program will display the result of an operation.

                    Interface of your program should be similar to the following:


                    9.6 Repetition structures

                    Learing Activity 9.7
                    3. With an example, explain the use of the following loops in Visual Basic programming:
                    • Do While Loop
                    • Do Until.... Loop
                    • While loop
                    • For loop
                    4. Write a program that prints the numbers divisible by 5 and 3 in the range from 1 to 205. Using Do ... Loop While, write an application that prints not divisible by 5 in the range from 1 to 10

                    Repetitions also known as iterations or loops are structures that allow a statement or group of statements to be carried out repeatedly while some conditions remain true (or for a specified number of times)
                    They are two basic iteration structures:
                    a. Pre-test iterations: in these loops, the condition to be met occurs at the beginning of the loop and the code will not run at all if the condition is never met. This can be implemented using: For ... Next, Do While .... Loop, Do Until ... Loop and While ... Wend loop
                    b.Post –test iterations: in these loops, the condition to be met is at the end of the loop so that the code always runs at least once. This can be implemented using the: Do ... Loop While, Do ... Loop Until
                    Visual Basic supports two types of loops which are indeterminate loops and determinate loop

                    9.6.1 Indeterminate loops

                    These are loops which repeat until a predetermined goal is achieved. Repeating until some initial conditions change. The Indeterminate loops supported in VB are the following:

                    i. Do While ... Loop



                    When Visual Basic executes this Do While ... Loop, it first tests condition. If condition is False, it skips past all the statements. If it’s True, Visual Basic executes the statements and then goes back to the Do while statement and tests the condition again. Consequently, the loop can execute any number of times, as long as condition is True. The statements never execute if initially is False.

                    Example: a visual basic program to find the sum of number from 0 to 100


                    ii. Do Until ... Loop

                    Unlike the Do While...Loop and While...end loop structures, the Do Until... Loop structure tests a condition for falsity. Statements in the body of a Do Until...Loop are executed re-peatedly as long as the loop-continuation test evaluates to False. The general format is:



                    ii. While .... Wend

                    A While...Wend statement behaves like Do While...Loop statement. It executes a set of VB statements till the condition evaluates to true.



                    iv. Do ... Loop While

                    The Do...Loop While statement first executes the statements and then test the condition after each  execution.


                    The programs executes the statements between Do and Loop While structure in any case. Then it determines whether the number is less than 20. If so, the program again executes the statements between Do and Loop While, else exits the Loop.

                    v. Do ... Loop Until

                    The general format is:


                    Figure 9.21: Loop results

                    APPLICATION ACTIVITY 9.8

                    1. By using:
                    • Do While.... Loop
                    • While ...Wend loop
                    • Do ... Loop Until

                    Write a VB program that computes the sum of even numbers from 0 to 50.2. Write a VB program that displays the product of even numbers and product of odd numbers between 1 to 15 numbers.

                    9.6.2 Determinate loop

                    ACTIVITY 9.9
                    1. Give and explain the syntax of for... Next loop in VB2. Write a program that reads a number from user and displays the table of that number.
                    2 X 1 = 2
                    2 X 2 = 4
                    2 X 3 = 6

                    . . . . .
                    2 X 9 = 18
                    2 X 10 = 20

                    This loop repeats a set of operations a fixed number of times. The common used terminate loop is For ....next loop.



                    In this syntax statement, For, To, and Next are required keywords, and the assignment oper-ator is required. First, you replace variable with the name of a numeric variable that keeps track of the current loop count. Next, you replace start and end with numeric values that represent the starting and stopping points for the loop.
                    The line or lines between the For and Next statements are the instructions that repeat each time the loop executes.For...Next loop structure handles all the details of counter-controlled repetition
                    Example 1: Suppose you want to print the numbers from 1 to 10.The following lines of codes can be used in procedure.



                    Example 2: VB application to display the multiplication tables of 5

                    User interface:




                    Creating Loops with a Custom Counter

                    You can create a loop with a counter pattern other than 1, 2, 3, 4, and so on. First, you specify a different start value in the loop. Then, you use the Step keyword to increment the counter at different intervals. In this case the syntax for a For...Next loop looks like the following:
                    For counter = initial To End Step [Increment]

                    One or more VB statements

                    Next [counter]

                    The arguments counter, start, end, and increment are all numeric. The increment argu-ment can be either positive or negative. If increment is positive, start must be less than or equal to end or the statements in the loop will not execute. If increment is negative, start must be greater than or equal to end for the body of the loop to execute. If step isn’t set, then increment defaults to 1.


                    The VB source code above prints this sequence of numbers: 1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49
                    Specifying Decimal Values You can also specify decimal values in a loop. For example:
                    For i = 1 To 2.5
                    Step 0.1
                    Print i
                    Next i
                    The program above prints this sequence of numbers as follow:


                    Note that:The exit statement allows you to exit directly from For Loop and Do Loop. Exit For can appear as many times as needed inside a For loop, and Exit Do can appear as many times as needed inside a Do loop (the Exit Do statement works with all versions of the Do Loop syntax).

                    Sometimes the user might want to get out from the loop before the whole repetitive pro-cess is executed; the command to use is Exit For to exit a For.....Next Loop or Exit Do to exit a Do... Loop, and you can place the Exit For or Exit Do statement within the loop.The exit keyword in loop control statement is used as break Jump control statement in other programming languages to terminate prematurely the loop.

                    a) Exit For
                    The format is:
                    For counter= start To end step (increment)
                    Statements
                    Exit for
                    Statement
                    Next counter




                    Nested Loops
                    • The nested loops are the loops that are placed inside each other.
                    • The most inner loop will be executed first, then the outer ones.
                    • Nested loops are very useful when there is a requirement to generate differ-ent kinds of patterns as output.


                    For Each loop
                    The For Each loop is a scope that defines a list of statements that are to be repeated for all items specified within a certain collection/array of items.
                    The For Each loop, as compared to the For loop, can’t be used to iterate from a range of values specified with a starting and ending value.

                    Syntax of a For Each Loop:

                    For each variable in Items
                    Vb codes
                    Next variable
                    Where:Variable is the iterating variable which is used to iterate through the elements of the col-lection or array
                    Items: a collection or array of items
                    Next: closing statement for the loop. Optionally you can specify the Iterator variable



                    APPLICATION ACTIVITY 9.9
                    1. Study the following program in Visual Basic and write its output:


                    2. Write a VB program to display the following sequence of numbers 100,80,60,40,20,0
                    3. Write a VB application that prints the numbers divisible by 5 or 3 but not both in the range from 1 to 20

                    END UNIT ASSESSMENT

                    1. Write a VB program to calculate the values of the following arithmetic operation if the user inputs two numbers M and N into two separate text boxes
                    a. M^Nb.
                    b.M\Nc.
                    b.M Mod N
                    2. Build an application to calculate the volume of the cylinder
                    3. Differentiate nested if to switch case decision control structures
                    4. Write a VB application that prints the numbers divisible by 5 or 3 in the range from 1 to 20
                    5. Write a VB program that displays odd numbers between 1 to 30 numbers
                    6. Design an application to compute the sum of the first “N” natural numbers.
                    7. Draw an interface and write a VB application to check if a given number is prime or not.



                    • Key Unit Competency:
                      to be able to create, build and run a java console program

                      Introductory activity


                      1. Explain the following terms in computer programming:

                      a) Computer Programming           b) Programming language

                      c) High-level language                 d) Low-level language

                      e) Programming paradigms

                      2. Discuss the following OOP concepts:

                      a) Abstraction               c) Encapsulation

                      b) Polymorphism          d) Inheritance

                      3. Explain the following concepts in programming

                      a) Compile and run program

                      b) Programming Environment        c) Basic Syntax      d) Data Types

                      d) Variables                                     e) Keywords           f ) Basic Operators

                      g) Decision Making         h) Loops

                      10.1. Concepts of Java Programming

                      Learning Activity 10.1

                      1. Define a java in Programming language

                      2. Discuss on invention and advantages of java.

                      10.1.1. Definition

                      Java is a computer programming language. It enables programmers to write computer instructions using English-based commands instead of having to write in numeric codes. It is known as a high-level language because it can be read and written easily by humans

                      10.1.2. Invention

                      Java is a general purpose, high-level programming language developed by Sun Microsystems. The Java programming language was developed by a small team of engineers, known as the Green Team, who initiated the language in 1991. The Java language was originally called OAK, and at the time it was designed for handheld devices and set-top boxes. OAK was unsuccessful and in 1995 Sun Microsystems changed the name to Java, which has built-in support to create programs with a Graphical User Interface (GUI), utilizes the Internet, creates client-server solutions, and modified the language to take advantage of the burgeoning (developing quickly) World Wide Web. The latest release of the Java Standard Edition is Java SE 8. With the advancement of Java and its widespread popularity, multiple configurations were built to suit various types of platforms. For example: J2EE for Enterprise Applications, J2ME for Mobile Applications. The new J2 versions were renamed as Java SE, Java EE, and Java ME respectively. Java is
                      guaranteed to be Write Once, Run Anywhere. A variant of Java programs called applets can be embedded inside a web page and execute on the computer that is viewing the page, automatically and in a secure environment.

                      10.1.3. Advantages of Java

                      Application Activity 10.1.

                      Discuss the difference between Java Programming and C/C++ programming languages in
                      terms of advantages.

                      10.2. Platforms of JAVA Program

                      Learning Activity 10.2.

                      Search and discuss about the following in Java Environment:

                      1. Platform and Platform independent

                      2. Java Virtual Machine (JVM)

                      3. Java Runtime Environment (JRE) vs. Java Development Kit (JDK)

                      10.2.1 JRE & JDK & JVM

                      The Java platform is the name given to the computing platform from Oracle that helps users to run and develop Java applications. The platform does not just enable a user to run and develop a Java application, but also features a wide variety of tools that can help developers work efficiently with the Java programming language.

                      The platform consists of two essential pieces of software:

                      Java Runtime Environment (JRE): Thisis the environment within which
                      the java virtual machine runs. JRE contains Java virtual Machine (JVM),
                      class libraries, and other files excluding development tools such as compiler
                      and debugger. Note: The JRE takes care of running the Java code on
                      multiple platforms, however as developers, we are interested in writing
                      pure code in Java which can then be converted into Java byte-code for
                      mass deployment
                      Java Development Kit (JDK), which is needed to develop those Java applications and applets( a small dynamic Java program that can be transferred via the Internet and run by a Java-compatible Web browser). If you have installed the JDK, you should know that it comes equipped with a JRE as well. JDK contains everything that JRE has along with development tools Such as compiler debugger etc.

                      • The Java platform consists of the Java Application Programming Interfaces (APIs) and the Java Virtual Machine (JVM). Java APIs are libraries of compiled code that you can use in your programs.

                      • They let the programmers add ready-made and customizable functionality to save them programming time.

                      • Any program uses Java API to print a line of text to the console.

                      • The console printing capability is provided in the API ready for programmers to use; programmers supply the text to be printed. Java programs are run (or interpreted) by another program called the Java VM, for the native operating system. Any computer system with the Java VM installed
                      can run Java programs regardless of the computer system on which the
                      applications were originally developed. For example, a Java program developed on a Personal Computer (PC) with the Windows NT operating system should run equally well without modification on
                      Macntosh computer running Mac OSx operating system, and vice versa.

                      Application activity 10.2.

                      Discuss the difference between JVM vs JRE vs JDK

                      10.3 Write, Compile and run a java Program

                      Learning Activity 10.3.

                      1. Using internet, Search and install step by step the environment of java.

                      2. Observe and interpret the following picture:

                      10.3.1 Create a java program

                      Before writing and running the simple Java program, there is a needto install and to configure
                      the Java platform. Which is available free of charge from the Java web site.(for example
                      NetBeans IDE 8.0 or NetBeans IDE 8.2 )
                      The first application, HelloWorldApp, will simply display the greeting “Hello World!” To create
                      this program, the following steps must be respected

                      Create an IDE (Integrated Development Environment) project: Creating an IDE project means creating an environment in which to build and run the applications. Using IDE projects eliminates configuration issues normally associated with developing on the command line. Build or running an application can be done by choosing a single menu item within the IDE.

                      a) Launch the NetBeans IDE.

                      • On Microsoft Windows systems, use the NetBeans IDE item in the Start menu.

                      • On Solaris OS and Linux systems, execute the IDE launcher script by
                      navigating to the IDE’s bin directory and typing. /netbeans.

                      • On Mac OS X systems, click the NetBeans IDE application icon.


                      In the New Project wizard, expand the Java category and select Java Application as shown
                      in the following figure:


                      In the Name and Location page of the wizard, do the following (as shown in the figure
                      below):

                      • In the Project Name field, type HelloWorldApp.

                      • In the Create Main Class field, type helloworldapp.HelloWorldApp.

                      • Then click the button Finish in the figure below.


                      The project is created and opened in the IDE. In the next figure, there are the main components
                      of the environment
                      • The Projects window, which contains a tree view of the components of the project, including source files, libraries that the code depends on, and so on.

                      • The Source Editor window with a file called HelloWorldApp.java open.

                      • The Navigator window, used to quickly navigate between elements within the selected class.

                      Add Code to the Generated Source File: A source file contains code, written in the Java
                      programming language, that programmers can understand. As part of creating an IDE project,
                      a skeleton source file is automatically generated and the source file is then modified to add the “Hello World!” message. When this project was created, the Create Main Class checkbox was left selected in the New Project wizard. The IDE has therefore created a skeleton class for the programmer. The «Hello World!» message is added to the skeleton code by replacing the line:
                      // TODO code application logic here
                      With the line:

                      These four lines are a code comment and are not affecting how the program runs. Later
                      sections of this unit explain the use and format of code comments.
                      Notice that Java programming is case sensitive. It means that “a” is different from “A”, helloWorldApp
                      is also different fromHelloWorldApp.

                      After adding the code, the remaining action is to Save the changes by choosing
                      File | Save.

                      The file should look something like the following:



                      10.4. Compile the Source File into a .class File

                      The IDE invokes the Java programming language compiler (javac), which takes the source
                      file and translates its text into instructions that the Java virtual machine can understand. The instructions contained within this file are known as byte codes.To compile the source file, choose Run | Build Project (Hello World App) from the IDE›s main menu. The Output window opens and displays output similar to what is seen in the following figure:

                      program is successfully compiled. If the build output concludes with the statement BUILD
                      FAILED, there is probably a syntax error in the code. Errors are reported in the Output window as hyperlinked text. To navigate to the source of an error, double-click such a hyperlink. After fixing the error, once again choose Run | Build Project.

                      10.5 Running the Program

                      The IDE invokes the Java application launcher tool(java), which uses the Java virtual machine
                      to run your application. From the IDE’s menu bar, choose Run | Run Main Project.
                      The result is displayed in the next figure.


                      10.5.1 Syntax of a java program
                      class class_name
                      {
                      public static void main(String[] args)
                      {
                      // java code goes here
                      }
                      }
                      Explanation of the syntax

                      i. class : class keyword is used to declare classes in Java

                      ii. public : It is an access specifier. Public means this function is visible to all.

                      iii. static : static is again a keyword used to make a function static. To execute a static function you do not have to create an Object of the class. The main() method here is called by JVM, without creating any object for class.

                      iv. void : It is the return type, meaning this function will not return anything.

                      v. main : main() method is the most important method in a Java program. This is the method which is executed, hence all the logic must be inside the main() method. If a java class is not having a main() method, it causes compilation error.

                      vi. String[] args : This represents an array whose type is String and name is args. We will discuss more about array in Java Array section.

                      Application activity 10.3

                      1. Type The program prints “Hello World!”, then compile and run it.

                      2. Add a print statement to display the sentence “How are you?” Compile and run the program again.

                      3. Add a comment to the program (anywhere), recompile, and run it again. The new comment should not affect the result.

                      4. Write a program in Java that after compilation and execution will display the messages: “Unity and Peace are the engines of development in Rwanda” and “Rwanda is a Knowledge Based Society”.

                      10.5.2 Variables and Data types in Java

                      Learning activity 10.4.

                      1. Discuss about data type in term of Definition and Classification

                      2. Using internet search a variable in java and how is declared.

                      3. Given two integer x= 5; y= 4; write a java program which is calculate and display the sum of these two integers.

                      The declaration of variables necessitates always specifying their types. Variables cannot exist without types and vice versa. One of the most powerful features of a programming language is the ability to define, declare and to manipulate variables.
                      For example, String message;
                      This statement is a declaration, because it declares that the variable named message is of type String. Each variable has a type that determines what kind of values it can store

                      A. Data type

                      Data type is a classification of data which tells the compiler or interpreter how
                      the programmer intends to use the data. Most programming languages support
                      various types of data, for example: real, integer or Boolean.

                      Classification of Java Data type

                      i. Primitive Java Data Types

                      There are eight primitive data types supported by Java and are predefined by the language
                      and named by a keyword. They are presented in the following table.

                      ii. Reference Data types or Objects

                      Reference variables are created using defined constructors of the classes. They are used to
                      access objects. These variables are declared to be of a specific type that cannot be changed.
                      For example, employee, puppy, etc.

                      • Class objects and various types of array variables come under reference data type.

                      • Default value of any reference variable is null.

                      • A reference variable can be used to refer any object of the declared type or any compatible type.

                      Example: Animal animal = new Animal(“giraffe”);

                      B. Variable in Java

                      A variable is a storage location (like a house, a pigeon hole, a letter box) that stores a piece
                      of data for processing. It is called variable because you can change the value stored inside.
                      More precisely, a variable is a named storage location, that stores a value of a particular
                      data type.

                      The syntax for declaration of variable is as follow:
                      data_type variable_name;

                      Examples

                      To declare an integer variable named x, simply type:
                      int x
                      String message = “Hello!”;
                      int hour = 11;
                      int minute = 59;
                      Normally, the used names for variables should help to guess what will be the different values
                      to assign to them.
                      Example
                      String firstName, lastName;
                      int hour, minute;
                      Sometimes a variable is initialized by assigned to it for the first time value before it can be used or it a variable can be assigned assign a value later, as in the previous example. It is also possible to declare and initialize on the same line.

                      Printing variables

                      The value of a variable can be displayed by using the functions print or println. The following
                      statements declare a variable named firstLine, assign it the value “Hello, again!”, and


                      The output of this program is: The current time is 11:59.

                      Application activity 10.4

                      Write a program where you declare the variables firstname, lastname, age, level
                      and com bination. This program should display like this: John Ntwali is 18
                      years old and in senior 5 of MPC

                      10.5.3 Types of Variables in Java

                      Learning activity 10.5

                      1. Is a variable declared visible always in all parts of the program? Explain
                      why and give the different types.

                      2. Discuss about Java Expression.

                      In terms of visibility of variables in a program, there are three types of in Java namely local variable, instance variable and class variable.
                      1. Local Variables

                      This type of variable has the following characteristics:
                      • Local variables are declared in methods, constructors, or blocks.

                      Local variables are created when the method, constructor or block is entered and the variable will be destroyed once it exits the method, constructor, or block.

                      • Access modifiers cannot be used for local variables.

                      • Local variables are visible only within the declared method, constructor, or block.

                      • Local variables are implemented at stack level internally.

                      • There is no default value for local variables, so local variables should be declared and an initial value should be assigned before the first use. Example: Here, age is a local variable. This is defined inside pupAge() method and its scope is limited to only this method.


                      2. Instance Variables

                      The variables defined within a class or method is called instance variables because each instance
                      of the class (that is, each object of the class) contains its own copy of these variables. Thus, the data for one object is separate and unique from the data for another. An instance variable can be declared public or private or default (no modifier).To avoid that the variable’s value is changed out-side its class, it should be declared as private. Public variables can be accessed and changed from outside of the class. The syntax is shown below given below:

                      private int doors;

                      Whereby:

                      “private” is an access modifier
                      “int” is data type
                      doors is an identifier
                      These variables belong to the instance of a class, thus an object. And every instance of thatclass (object) has it’s own copy of that variable. Changes made to the variable don’t reflect in other instances of that class.

                      3. Class or static variables

                      These are also known as static member variables and there›s only one copy of that variable that is shared with all instances of that class. If changes are made to that variable, all other instances will see the effect of the changes.
                      Public class Product{
                      Public static int Barcode;
                      }


                      10.5.4 Java keywords

                      Keywords are words that have already been defined for Java compiler. They have special meaning for the compiler. Java Keywords must be in your information because you cannot use them as a variable, class or a method name. Java keywords are categorized as datatypes and access modifiers

                      A. Data types

                      All predefined datatypes in java are keywords eg. int, char, bool, double, float, and String

                      B. Java access modifiers

                      Modifiers are keywords that are added to change meaning of a definition. In Java, modifiers are categorized into two types,

                      • Access control modifier

                      • Non Access Modifier

                      1) Access control modifier

                      Java language has four access modifiers to control access levels for classes, variable methods
                      and constructors.

                      • Default : Default has scope only inside the same package

                      • Public : Public has scope that is visible everywhere

                      • Protected : Protected has scope within the package and all sub classes

                      • Private : Private has scope only within the classes

                      2) Non-access Modifier

                      Non-access modifiers do not change the accessibility of variables and methods, but they do
                      provide them special properties. Non-access modifiers are of 5 types,

                      • Final

                      • Static

                      • Transient

                      • Synchronized

                      • Volatile
                      1) Final: Final modifier is used to declare a field as final i.e. it prevents its content from being modified. Final field must be initialized when it is declared. Final keyword can be used with a variable, a method or a class.

                      2) Static Modifier: Static Modifiers are used to create class variable and class methods which can be accessed without instance of a class.

                      3) Synchronized modifier: When a method is synchronized it can be accessed by only one thread at a time.

                      4) Volatile modifier: Volatile modifier tells the compiler that the volatile variable can be changed unexpectedly by other parts of the program. Volatile variables are used in case of multithreading program. volatile keyword cannot be used with a method or a class. It canbe only used with a variable.

                      5) Transient modifier: When an instance variable is declared as transient, then its value
                      doesn’t persist when an object is serialized

                      10.5.6 Java Expressions

                      Expressions are essential building blocks of any Java program, usually created to produce
                      a new value, although sometimes an expression simply assigns a value to a variable.
                      Expressions are built using values, variables, operators and method calls.

                      Types of Expressions

                      While an expression frequently produces a result, it doesn’t always. There are three types of
                      expressions in Java:

                      • Those that produce a value, i.e. the result of (1 + 1), Expressions that produce a value use a wide range of Java arithmetic, comparison or conditional operators.
                      For example, arithmetic operators include +, *, /, <, >, ++ and %.

                      • Those that assign a variable, for example v = 10

                      • Those that have no result but might have a “side effect” because an expression can include a wide range of elements such as method invocations or increment operators that modify the state (i.e. memory) of a program. Example: This program here contains plenty of expressions


                      Application Activity 10.5

                      Look at the following three groups of statements and predict the outputs

                      10.6. Elements of Java source file

                      Learning Activity 10.6.


                      1. Refer to the numbers in above figure; explain the different parts of this program.

                      2. Following the above figure, write a program with a class that has more than one property.



                      • Unit11: OOP AND JAVA

                        Key Unit Competency: To be able to use objects to manipulate data in Java program

                        Introductory Activity

                         

                        Observe the above picture and answer the following questions.

                                      1. Briefly, discuss the object oriented programming paradigm.

                                       2. Find defined classes.

                                       3. What are the data members for each class?

                                       4. What are the member functions for each class?

                                       5. What do you understand by instance of a class?

                                       6. Create 2 instances of student class

                                       7. Using Java, declare Student class in Java?

                        11.1. Classes vs Objects in Java

                        Learning Activity 11.1

                        Write the above program in your computer and run it. After analyzing the result, answer the following questions:

                                      1. Give the output of the program?

                                      2. What are new keywords in the above program?

                                      3. Describe the structure of the part starting with the word class.

                                      4. List the data members contained in the class “student”

                                      5. What are the functions found in the above program?

                                      6. What is the role played by the keyword new in the above program?

                        11.1.1 Class in Java

                                   a. Definition

                        A class is an entity that determines how an object will behave and what the object will contain. In other words, it is a blueprint or a set of instruction to build a specific type of object or a class is a group of objects which have common properties.

                                    b.  Syntax to declare a class:

                         

                                     c.  General form of a class

                        A class is declared by the use of the class keyword. A simplified general form of a class definition is shown here:

                         

                        11.1.2. Object in Java

                        An object is nothing but a self-contained component which consists of methods and properties to make a particular type of data useful. Object determines the behavior of the class. From a programming point of view, an object can be a data structure, a variable or a function. It has a memory location allocated. The object is designed as class hierarchies.

                                   a.  Syntax of an object

                        ClassName ReferenceVariable = new ClassName();

                                   b.  Reference variable

                        An object can be accessed only through a reference variable. A reference variable is declared to be of a specific type and that type can never be changed.

                        Reference variables can be declared as static variables, instance variables, method parameters, or local variables. A reference variable that is declared as final can’t never be reassigned to refer to a different object. The data within the object can be modified, but the reference variable cannot be changed.

                        • Object initialization through reference Variable:

                        Initializing simply means storing data into object Example 1: Below is the example where class student is created, new keyword and the reference variable are used

                          

                        Example:  We can also create multiple objects and store information in it through reference variable

                         

                        • Object initialization through method in Java Language

                        Two objects of Student class are going to be created and initialized with the value by invoking the insertRecord method. The state (data) of the objects are displayed by invoking the displayInformation() method.

                        Example: The use of method in Java program

                         

                        Example: Example that maintains the records of Rectangle class.

                         

                        Application Activity 11.1

                              1. What do you understand by object instantiation?

                              2. What is the difference between a class and an object?

                              3. What is the role of a method in java program?

                              4. Discuss why main () method is public, static and void in java?

                              5. What is meant by the terms instance variable and instance method?

                        11. 2 Constructor in Java

                         Learning activity 11.2


                        Write the above program in your computer and run it. After analyzing the result, answer the following questions:

                                        1. What is the output of the above program?

                                        2. Discuss the difference between class district and the function district ()?

                                        3. Why the function district () does not have a return type?

                        11.2.1. Understanding constructor in Java

                                            a.  Definition

                        A constructor is a special method of a class that initializes an object of that type. A constructor is an instance method that usually has the same name as the class and can be used to set the values of the members of an object, either to default or to user-defined values

                        A Constructor is a special type of method which is used to initialize the object. It is called constructor because it constructs the values at the time of object creation. It is not necessary to write a constructor for a class. It is because java compiler creates a default constructor if the class doesn’t have any.

                        Every time an object is created using new () keyword, at least one constructor is called. It is called a default constructor.

                         There are two (2) ways of creating a constructor: explicit and implicit: • Explicit means that the constructor is created by the programmer. • Implicit means that the creation of a constructor was done by the Java Virtual Machine or the tool, not the Programmer.
                        Java will provide default constructor implicitly even if the programmer doesn’t write the code for constructor. It is called default constructor. The explicit is opposite to this implicit which means that the programmer has to write a constructor. Example: The program below maintains records of employees.

                        • Key Unit Competency: to be able to use stream, reader and writer in java

                          Introductory activity

                          Teacher Ntwari prepared examination at the District level and he saved the examination in My Documents folder under File name” district Examination”. One of the questions is to calculate the following quadratic equation x2-7x=0

                          1. Explain the path that should be used to access the file contents.

                          2. Solve the above quadratic equations using java programming language.

                          3. How many variables needed to solve the above quadratic equation if you need to run it with java programming language?

                          12.1. Introduction to IO Streams

                          Learning activity 12.1

                          1. Discuss the steps to be followed if you are requested to write a program that will calculate and display the sum of 10 numbers that you need to provide during the execution of the program.

                          The term stream refers to a sequence of values from any input source of data (key-board, file, port, and so on), or to any output destination for data (screen, file, port, and so on).

                          They are,

                          1. Byte Stream : It provides a convenient means for handling input and output of byte.

                          2. Character Stream : It provides a convenient means for handling input and output of characters.

                          12.1.1.Definition of Input Stream

                          The Input Stream is an abstract class that describes stream input. In Java programming language the Input Stream is used to read data from a source.

                          This class defines several methods among which include read() that reads byte of data

                          12.1.2.Definition of Output Stream

                          Output stream is an abstract class that describes stream output. In Java programming language, the Output Stream is used for writing data to a destination.This class defines several methods among which include write() that reads byte of data

                          12.1.3 Role of I/O Stream

                          IO Streams provide convenient ways of handling data input and output in a java program. While writing java programs, three IO objects are provided implicitly for performing data Input and Output.

                          They are;

                          • System.in (input stream)

                          • System.out (output stream for normal results)

                          • System.err (output stream for error messages)Generally System.in is connected to the keyboard and inputs character data*, and System.out and System.err are connected to the monitor and output character data.

                          Application activity 12.1

                          1. What is a stream and what are the types of Streams and classes of the Streams?

                          2. Differentiate the following terms:

                          a. System.in and System. out

                          b. output stream and input stream

                          12.2. Input Stream, Output Stream and File Stream

                          Learning activity 12.2

                          From the previous lessons in this unit, we have learned the standard I0 stream in Java. Write and Discuss in groups the source code program allows user to calculate area of any given triangle if base and height that are entered through the keyboard and print the area

                          The goal of Input Stream and Output Stream is to abstract different ways to input and output: whether the stream is a file, a web page, or the screen shouldn’t matter. All that matters is that information is received from the stream (or send information into that stream.)

                          12.2.1 Output Stream

                          Java application uses an output stream to write data to a destination, it may be a file, an array, peripheral device or socket.

                          Code of Printing “WELCOME WORLD” without advancing to a new line

                          System.out.print(“ WELCOME WORLD”);

                          Code of Printing “WELCOME WORLD “ and advance to a new line.

                          System.out.println(“ WELCOME WORLD”);


                          12.2.2. Input Stream

                          Java application uses an input stream to read data from a source, it may be data, a file, and an array. There are different input stream classes that can be applied to input data from user.

                          • scanner()

                          • BufferedReader()

                          • DataInputSteam()

                          a. Using Scanner class.

                          Java has a number of predefined classes which can be used. Predefined classes are organized in the form of packages. A Package can be defined as a grouping of related types (classes, interfaces, enumerations and annotations) providing access protection and namespace management.

                          In Java, data can be input with the help of the Scanner class. This Scanner class is found in java.util package. So, to use the Scanner class, java.util package needs to be included first in the program. Apackage is included in a program with the help of import keyword. The java.util.Scanner class or the entire java.util package are then imported.

                          The advantage of using Scanner class is that it provides convenient methods for capturing primitives (nextInt(), nextFloat(), ...) from input devices whereas its disadvantage is that reading methods are not synchronized .

                          To import a class or a package, one of the following lines should be added to the very be-ginning of the code.

                          import java.util.Scanner; // This will import just the Scanner class

                          import java.util.*; // This will import the entire java.util package

                          After importing, the following statement will be valid when written in the program.

                          Scanner k = new Scanner (System.in);Scanner k, here K is declared as an object of Scanner class. System.in within the round brackets tells Java that this will be System Input i.e. input will be given to the system.

                          The main purpose of the Scanner class is to parse primitive types and strings using regular expressions, however it can also be used to read input from the user in the command line. Here is an example:

                          Example 1: a program that asks to enter numbers from the keyboard and displays those numbers on the screen

                          n= s1.nextInt(); s1.nextInt() will take integer input from the user and it assigns it to n. . So, this statement will be like n = 14; when user entered 14.

                          Similarly, values of other data types can be also input . Same as nextInt() is used to input an integer value, other methods s in table 12.1 will be used to input those values.

                          b. Using Buffered Reader Class

                          Java Buffered Reader class is used to read the text from a character-based input stream. It can be used to read data line by line by read Line() method. It makes the performance fast. It inherits Reader class.

                          Buffered Reader reader = new Buffered Reader(new Input Stream Reader(System.in));

                          System.out.print(“Enter your name: “);

                          String name = reader.read Line();

                          System.out.println(“Your name is: “ + name);

                          In the above example, the readLine() method reads a line of text from the command line.

                          Advantages: The input is buffered for efficient reading and its disadvantage is that the wrapping code is hard to remember.

                          Example of program using Buffered Reader


                          Notice that a “keyboard object” for reading from the console keyboard can therefore be instantiated as follows:

                          InputStreamReader inStream = new InputStreamReader(System.in);

                          BufferedReader keyboard = new BufferedReader(inStream);

                          The intermediate variable inStreamcould be eliminated and it can be done in one step like this:

                          BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));

                          c. Data Input Stream

                          InputStream uses read Line() method of DataInputStream to read data from the keyboard. Java InputStreams are used for reading byte based data, one byte at a time.

                          The following example describes how to use datainputstream wtih different data types

                          Example 1


                          Example 2


                          Explanations:

                          The readLine() method of DataInputStream reads a line at a time and returns a string, irrespective of what the line contains. Depending on the input value, the string is to be parsed into an int or double etc. This is extra work in the keyboard reading when compared to C/C++. In C/C++, parsing is done implicitly by %d, %f, etc.

                          What is “System.in”?

                          “ in” is an object of “ InputStream” class defined in System class (like “out” is an object of PrintStream class defined in System class). It is declared as static and final object. The in ob-ject is connected implicitly to the “ standard input stream” of the underlying OS.

                          DataInputStream dis = new DataInputStream(System.in);

                          System.in is a byte stream which is automatically connected to the keyboard reading mech-anism of operating system. It is chained to DataInputStream to facilitate the reading of user input with its readLine() method.

                          Like System.in is connected to the keyboard mechanism of OS, the System.out is connected to the standard output mechanism of OS.

                          Application Activity 12.2

                          1. Write a java program that allows the user to enter three integers and that displays their sum

                          2. Write a java program asking the user to enter a number and print its factorial.

                          3. Write a java program that allows the user to enter the age of KARENZI, SINGIZWA and MPORE and print the youngest ( use Scanner , input stream and console)

                          12.3 File Streams


                          a. 1 File Input Stream

                          This File Input Stream is used for reading data from the files. Objects can be created using the keyword new and there are several types of constructors available.

                          The following constructor takes a file name as a string to create an input stream object to read the file:

                          InputStreamf=newFileInputStream(“C:/java/hello”);

                          The following constructor takes a file object to create an inputstream object to read the file.

                          First a file object using File()methods created as follows:

                          Filef=newFile(“C:/java/hello”);

                          InputStreamf=newFileInputStream(f );

                          Once Input Stream object i s in hand, then there is a list of helper methods which can be used to read from the stream or to do other operations on the stream.

                          Methods used for file Input Stream

                          1. public void close() throws IO Exception{}: This method closes the file output-stream. Releases any system resources associated with The file. Throws an IO Exception

                          2. protected void finalize()throws IO Exception{}: This method cleans up the connection to the file. It ensures that the close method of this file output stream is called when there are no more references to this stream. It throws an 10 Exception.

                          3. public intread(intr)throws IO Exception{}: This method reads the specified byte of data from the InputStream and returns the next byte of data and-1will be returned if it is end of file.

                          4. public intread(byte[]r)throws IO Exception{}: This method reads r.length bytes from the inputstream into an array. I t r eturns the total number of bytes read. If end of file -1 will be returned.

                          5. Public int available() throws IO Exception{}: Gives the number of bytes that can be read from this file input stream. It returns an integer.

                          12.3.1 File Output Stream:

                          File Output Stream is used to create a file and write data into it. The stream would create a file, if it doesn’t already exist, before opening it for output.

                          a. File output stream constructors

                          The following constructor takes a file name as a string to create an output stream object to write the file:

                          OutputStream f=new FileOutputStream(“C:/java/hello”)

                          The following constructor takes a file object to create an outputstream object to write the file. First, a file object using File()method is created as follows:

                          Filef=newFile(“C:/java/hello”);

                          OutputStream f=newFileOutputStream(f );

                          Once the OutputStream object is in hand,then there is a list of helper methods,which can be used to write to stream or to do other operations on the stream.

                          b. File output stream methods

                          1. public void close() throws IO Exception{}: This method closes the file output stream. Releases any system resources associated with the file.Throws an IO Exception.

                          2. protected void finalize()throws IO Exception{}: This method cleans up the connection to the file. Ensures that the close method of this file output stream is called


                          • File: 1