Destiny IT Report
Destiny IT Report
ON
(SIWES)
AT
PRESENTED BY
IJEDE DESTINY
PSC2003810
i
LETTER OF CERTIFICATION
This is to certify that this report put together by IJEDE DESTINY, with Matriculation
number PSC2003810 of the Department of Computer Science, University of Benin,
Edo, has successfully completed her six (4) months Student Industrial Work Experience
Scheme (S.I.W.E.S) at Hiit pls, 27 obafemi awolowo way, ikeja Lagos.
IJEDE DESTINY
(Student) Signature/Date
Mrs PRINCESS
(Institution based Supervisor) Signature/Date
Mr David Ukelere
(Departmental Coordinator) Signature/Date
ii
ACKNOWLEDGEMENT
I thank God who has seen me through my SIWES program and I also thank my
Industrial based supervisors who guided me through my Industrial training. I also send
out my appreciation to my lecturers, friends, and co-interns for their support. And
special thanks to my wonderful parents Mr. and Mrs. Ijede were there for me in terms
of care, prayers and financial support.
iii
ABSTRACT
This report is a summary of all the work experience I have been able to gather during
my SIWES training program at HIIT Agency. It contains all my experience in Web
Development; the various programming languages such as HTML, CSS, JavaScript,
Node Js, and Express Js for building web applications. In the process of working on
some projects, I employed the use of some tools such as Visual studio code, Git /
Github, Medium and Surge for developing, hosting and collaborating with others. This
report also contains some of the challenges I faced during the course of the six (4)
months SIWES training program.
iv
TABLE OF CONTENTS
DEDICATION..............................................................................................................................................i
LETTER OF CERTIFICATION...............................................................................................................ii
ACKNOWLEDGEMENT.........................................................................................................................iii
ABSTRACT.................................................................................................................................................iv
LIST OF FIGURES....................................................................................................................................vi
CHAPTER ONE..........................................................................................................................................1
1.0 BRIEF INTRODUCTION ABOUT SWIES, AIMS AND OBJECTIVES...........................1
1.1 ORGANISATION HISTORY...................................................................................................2
1.2 SUMMARY OF INTERN’S ROLE/RESPONSIBILITIES AND ACTIVITIES.................3
CHAPTER TWO.........................................................................................................................................4
DETAILED INTERN’S ROLE/RESPONSIBILITIES AND DAILY ACTIVITIES......................4
2.1 ORIENTATION DAY...............................................................................................................4
2.2 HTML LEARNING (1 WEEK)................................................................................................4
2.3 CSS LEARNING (2 WEEKS)...................................................................................................6
2.4 ANDELA PROPERTY- PRO PROJECT (2 WEEKS)........................................................11
2.5 JAVASCRIPT LEARNING (2 WEEKS)...............................................................................11
2.6 ALGORITHMS WITH JAVASCRIPT (1 WEEK)..............................................................15
2.7 ALGORITHM CHALLENGE (1 WEEK)............................................................................16
2.8 ES6 LEARNING (1 WEEK)...................................................................................................16
2.9 GROUP PROJECT (2 WEEKS)............................................................................................17
2.10 NODE JS LEARNING (3 WEEKS).......................................................................................17
2.11 EXPRESS JS (4 WEEKS).......................................................................................................18
2.12 TEST ON NODE JS AND EXPRESS JS..............................................................................20
2.13 BLOGGER PROJECT (3 WEEKS)......................................................................................20
CHAPTER THREE...................................................................................................................................21
DISCUSSION, ANALYSIS AND EVALUATION OF TOOLS.......................................................21
3.1 VISUAL STUDIO CODE........................................................................................................21
3.2 GIT AND GITHUB..................................................................................................................21
3.3 MEDIUM..................................................................................................................................22
3.4 SURGE......................................................................................................................................23
CHAPTER FOUR......................................................................................................................................24
4.1 CONCLUSION.........................................................................................................................24
4.2 LIMITATIONS........................................................................................................................24
4.3 RECOMMENDATIONS.........................................................................................................24
v
LIST OF FIGURES
Figure 1 the four parts of an HTML Document................................................................6
Figure 2 styling with Inline CSS.......................................................................................7
Figure 3 styling with Embedded / Internal CSS................................................................8
Figure 4 styling with Embedded / Internal CSS (HTML document)................................9
Figure 5 styling with Embedded / Internal CSS (CSS file)...............................................9
Figure 6 Inline Scripting..................................................................................................11
Figure 7 Embedded / Internal Scripting (Method A)......................................................12
Figure 8 Embedded / Internal Scripting (Method B).......................................................13
Figure 9 External Scripting (Using defer).......................................................................14
Figure 10 External Scripting (Using async)....................................................................15
Figure 11 External Js File, script.js.................................................................................15
Figure 12 Node Js Internals.............................................................................................17
Figure 13 The Node Js System........................................................................................18
Figure 14 Express Js, Middleware...................................................................................19
Figure 15 some of my Medium articles...........................................................................22
Figure 16 list of websites I hosted using surge................................................................23
vi
CHAPTER ONE
1.0 BRIEF INTRODUCTION ABOUT SWIES, AIMS AND OBJECTIVES
The Student Industrial Work Experience Scheme (SIWES) is a program that forms part
of the academic standards in the degree program for Nigerian Universities. The Federal
Government of Nigeria introduced the policy on Industrial training, called the Student
Industrial Work Experience Scheme (SIWES) in 1974. The Industrial Training Fund
(ITF) is in charge of this program which is under the umbrella of the Ministry of
Education. SIWES was designed to help students acquire the necessary practical
education/experience in their fields of study and other related professions.
This is an effort that was created in order to complement the theory taught in the
classrooms of the Nigerian tertiary institutions. The objective of the program is to
expose students to the use of various machines and equipment, professional work
methods, and ways of safeguarding the work areas in industries as well as other
organizations. SIWES was established to impart practical knowledge to students with
respect to their various disciplines.
This training is funded by the Federal Government of Nigeria and coordinated by the
Industrial Training Fund (ITF) and the National Universities Commission (NUC). The
SIWES program involves the student, the universities, and the industries.
OBJECTIVES OF SIWES
1. The program teaches the student how to interact effectively with other workers
and supervisors under various conditions in the organization
2. It will help students to gain increased maturity and understanding of the
workplace.
3. The students will have a chance to evaluate companies for which they might
wish to work
4. It exposes students to work methods and techniques in handling equipment and
machines that may not be available in the educational institution.
5. The program provides students with an opportunity to apply their knowledge in
real work and actual practice.
6. SIWES increases a student’s sense of responsibility.
7. SIWES provides students the opportunity to test their interest in a
particular career before permanent commitments are made.
8. It helps them to gain interpersonal and entrepreneurial skills.
1
1.1 ORGANISATION HISTORY
Mission of Hiit plc: We are an innovation centre creating the supply of highly skilled
Information and Communication Technology (ICT) talent in Lagos State and improving
greater access to jobs in the ICT sector.
Objectives of HIIT plc: The objectives of Edo Innovation Hub (Edo innovates) are:
1.) Equip Youth with high demand ICT skill trainings and connect them to jobs in
the ICT sector.
2.) Provide trainings and business expansion opportunities for start-ups through
incubation and acceleration programs.
3.) Provide co-working spaces, training halls, fully equipped ICT labs with fast
internet access for trainings, seminars and boot camps.
4.) Provide new and existing business with Admin support, Accommodation,
mentoring and Tech support services.
5.) Growing the Tech Community in Edo State.
As an intern at the HIIT pls, I worked at their office located at Lagos , ikeja where I
was placed under the guidance of their web specialist Mr. Daniel chukwuka to acquire
skills in web development by my IT supervisor Mrs Princess. It wasn’t required of me
to have any background in the field. I was expected to go through all course materials,
receive series of lectures and complete the tasks and projects assigned to me and my co-
interns by Mr. David. The proposed learning track was:
HTML
CSS
2
JAVASCRIPT
Front-End with React / Backend with Node js; the interns were required to select
from either of these; I chose to continue my training with node js.
During the course of the training, I was also assigned to some tasks and projects, some
individual, other’s I was placed in a group were. It was also expected of the interns to
help in organizing programs at the hub which include:
Setting up the venue to be used for the program.
Assisting the receptionist in directing attendees
Extra hands in giving souvenirs at the end of the training
If an intern had substantial skills as concerning the program, they will be
beckoned upon to act as one of the program’s instructor.
I was an instructor for the computer appreciation program, the July edition where I
taught the attendees how to use Microsoft PowerPoint.
3
CHAPTER TWO
DETAILED INTERN’S ROLE/RESPONSIBILITIES AND DAILY ACTIVITIES
As seen in chapter 1, I worked at Hiit plc as an intern; I spent the internship learning
and completing tasks assigned to me by my supervisor, below is a list of some of my
activities during the course of the six-month attachment:
The interns were also asked to introduce ourselves and state the field we were interested
in, I introduced myself and stated that I will was interested in learning Web
Development. We were also given rules and regulations, some of the rules were:
2.2.2 HTML5
We were given a pocket reference textbook on HTML5 to study; I was able to
get accustomed to some HTML semantic tags. HTML stands for Hyper Text
Mark-Up Language, it is the language of the web, it is a mark-up language used
for describing webpages, and it is used by web browsers to create the contents of
a webpage.
HTML 1.0 which is the first edition of HTML was released in 1993, it saw a lot
of updates and releases, and we are currently in HTML5 which was first
published as a working draft by W3C (World Wide Web Consortium) in January
2008, but the stable recommendation was released on 28 October 2014. Being a
mark-up language it uses tags to describe the content of a webpage. HTML
documents are saved with the either the “.html” or “.htm” extension.
HTML documents are made up of HTML elements which the browser uses to
render it. HTML elements are written with:
4
Opening / Start Tag and;
Closing / End Tag.
But these tags are not displayed by the web browser; they rather determine “how
to display the document”. The part that is displayed by the browser is called
the content, and it sits in the middle of the two tags i.e.
¿ tagname> content <¿ tagname >¿
Although, they are some HTML elements that do not have a closing / end tag
they are called self-closing tags, e.g. <br>. There are also HTML elements with
no content, they are called empty elements.
An HTML document can be divided into four (4) parts namely:
a) The Declaration - This is very important as there are different types of
document on the web, it helps the browser to display a web page correctly
and as such the browser must know the type and version of the document.
HTML5 uses the ¿ ! DOCTYPE> ¿ declaration, it is not case sensitive, all
cases are acceptable e.g. ¿ ! DOCTYPE html > ¿, ¿ ! DOCTYPE HTML >,
¿ ! doctype html >¿ ,¿ ! Doctype Html >¿.
b) The <html> tag - This represents the root of an HTML document, it is the
container for all other HTML elements apart from the declaration.
c) The Header - This part of the HTML document contains META DATA;
that is “data about data” i.e. it is data about the HTML document, it
contains the information about a webpage’s properties, it is also used in
linking to external files e.g. CSS style and JavaScript code. It is specified
with the HTML <head> tag.
d) The Document Body – This describes the visible part of the HTML
document, it is the page content, the only area displayed by the browser, and
it is specified with the <body> tag.
5
Figure 1 the four parts of an HTML Document.
HTML5 introduces what is known as “semantic tags”, they are tags that are used
to give more meaning to html pages, and some of them that I learnt about are:
Header tag (<header> <header/>): This defines the header of a web page.
Section tag (<section> <section/>): This defines a section in a web page.
Article tag (<article> <article/>): This defines an independent, self-
contained content in a web page.
Aside tag (<aside> <aside/>): This defines content outside the page
content.
Footer tag (<footer> <footer/>): This defines the footer of a web page.
6
HTML and CSS are not written in the same way, CSS does not use tags. The file
extension for CSS is “.css”, CSS is added to the HTML document in three (3) different
ways namely:
a) Inline CSS - This method is used to apply unique style for a single element, it is
done by adding the style attribute to the relevant element. An illustration is
seen below
This method raises a lot of issues; it leaves the HTML document crowded, and there
is repetition of styles, and most importantly it prevents “separation of concerns”.
Separation of concerns simply involves sectioning different related document and
linking them up, rather than having them all in one place.
7
Figure 3 styling with Embedded / Internal CSS.
From Figure 3, on line 9-18, you can see the styles are specified in the <style> tag
using the selectors of the HTML element specified inside them as seen in line 22
and 23; “using_id” and “using_class” are the selectors.
Although this method does not lead to repetition of styles in each HTML element, it
is not so efficient when you have different HTML documents requiring the same
styles to be applied to them, hence the third type of styling.
c) External CSS - This method is used to define the styles for several HTML
documents, it uses an external style sheet stored with the .css extension and each
HTML document that requires the styling references the external style sheet file
inside the <link> element found inside the <head> section. It is illustrated below
8
Figure 4 styling with Embedded / Internal CSS (HTML document).
From Figure 4, you can see the HTML document (index.html) and in line 9, the
<link> tag references the external style sheet shown in Figure 5; styles.css, which
uses the internal css method to style the HTML elements. This method of styling is
the most efficient, as one style sheet can be applied to numerous HTML documents
I also learnt about CSS fonts, font-family, text-decoration, color, background color,
padding, margin, border, and positions, display (block, inline, inline-block and flex),
and etc. properties and below are the different task we were given during this
period:
9
CSS Shapes task: Using my knowledge of CSS width, height,
background color, and border properties, I was able to create different
shapes (circle, rectangle, oval, parallelogram, diamond, and triangle-up,
down, left and right). I also hosted the web page, it is available at
http://abject-pie.surge.sh/
Cloning Legit.ng: This project was given to us to build our
understanding in positioning items with CSS display property; I used
CSS flex to arrange the elements on the webpage, and also hosted the
clone page, it is available at http://recondite-amount.surge.sh/.
Learning about Node js, Surge and Medium: On this day, we installed
node js which was a dependency for using surge, surge is a hosting
platform, and it is discussed in subsequent chapters. Medium on the other
hand is a social publishing platform, were developers can write articles
about their projects.
Cloning Netflix: Mr David asked that we pick any three web pages of
Netflix, clone them using HTML and CSS, and host them on surge. I
cloned the Netflix home (http://aiknetflixsignin.surge.sh/), sign in
(http://aiknetflixhome.surge.sh/), and forget password pages
(http://aiknetflixforgotpassword.surge.sh/).
Git and Github Class: On this day, we were taught what git and GitHub
is all about, and how important we know how to use them as developers,
this is also discussed in subsequent chapters.
10
2.4 ANDELA PROPERTY- PRO PROJECT (2 WEEKS)
This project was an Andela Developer Challenge to build a product named
PropertyProLite, the web development interns were asked to clone any two pages with
HTML and CSS. I cloned the login page and the agent register page and hosted the
pages on surge, the URL for the pages are. By the end of the week, the head of the web
development team, Mr David put together an assessment to check our knowledge on
HTML; I scored 62% on the test.
JavaScript files are saved with the “.js” file extension, and it can be added to an HTML
document in the same way CSS is added. Below are illustrations for adding JavaScript
to the HTML document:
a. Inline Scripting - This method is actually bad practice as the JavaScript code
is written directly into the html tags as shown below in Figure 6:
11
We can use some script loading strategies to avoid this. With the embedded /
internal Scripting method there are two (2) scripting strategies, and they are:
Moving the <script> tag from the head section to the body section - The
<script> tag is placed right after the last HTML element in the body
section; this is illustrated below.
In Figure 7, the <script> tag is in the body section and starts in line 14, just after the
last HTML element in the body section.
12
Figure 8 Embedded / Internal Scripting (Method B).
In Figure 8, the <script> tag remains in the head section, but as seen above, in line
11, the entire js code is contained in the DOMContentLoaded event handler.
c. External Scripting - With the external scripting method, they are also two (2)
script loading strategies here, and they are:
Using defer – Here, “defer” is placed right after the src for the external js
file as seen in Figure 9. With this, the script and the HTML and CSS files
(DOM content) loads side by side but the DOM content is loaded
completely before the external js file is executed. This is illustrated below:
13
Figure 9 External Scripting (Using defer).
In Figure 9 above, line 9 contains the <script> tag and, “defer” is placed right after
the src for the external js file.
Using async – Here, “async” is placed right after the src for the external js
file as seen in Figure 10. With this, the script and the HTML and CSS files
(DOM content) loads side by side but once the external js file is completely
loaded, it is executed before the remaining DOM content is loaded. This is
illustrated below.
14
Figure 10 External Scripting (Using async).
In Figure 10 above, line 9 contains the <script> tag and, “async” is placed right after
the src for the external js file.
Figure 11 below shows the external js file, it is the same for the defer and async
loading strategies.
15
algorithms). I implemented the binary search, bubble sort and selection sort algorithms
using JavaScript.
16
2.9 GROUP PROJECT (2 WEEKS)
The head of the web department, Mr David, shared us into groups, each group was to
come up with a project idea and then build the project together using HTML, CSS and
JavaScript. The project must make use of JavaScript local storage or sessional storage.
After much deliberation, my group decided to make a website called “AFRICANA”,
it’s a recipe website for popular Nigerian dishes, where users will get to see recipes
from the admins and they can as well add their own recipes.
I designed the home page, login page, and sign up pages for the website. We were
unable to complete the website on time, so we resulted to submitting a to-do list website
developed by one of the group’s member.
Node Js Internals
Node js is basically made up of two technologies, the “Google Chrome V8 engine” and
libuv. The former is the fastest interpreter for JavaScript, it handles running the script,
while the latter is a multi-platform C/C++ library that provides support for asynchronous
I/O.
17
The Node Js System
The Node Js System is just a more complex and detailed version of the Node Js
Internals. It includes the following:
JavaScript Engine - This is the Google Chrome V8 engine that handles
running the script.
Node Js API - This is a tool-kit that acts as an intermediary between
C/C++ code and the JavaScript engine. It permits C/C++ code to access,
create and manipulate JavaScript objects as though it were JavaScript
code.
Node Js Bindings - This enables JavaScript code to call functionalities
implemented in C/C++; it acts as an intermediary between the JavaScript
code and Libuv.
Libuv – this is the actual implementation of the API’s. It deals with the
asynchronous I/O tasks written in C/C++, it also delegates tasks to the
operating system.
All these are illustrated in Fig 1.8 below:
18
Middleware are special functions run in between the request coming into the server and
the response going out of the server, for example, if we wish to know how long it takes
for a request to be completed. To register our middleware with express, we use:
app . use ¿
functionalities goes here
}¿
The “req” is the request parameter while “res” is the response parameter. The app.use
has a third parameter, “next”; that controls the flow of the middleware. The middleware
end point which is the last piece of the middleware that sends the response back to the
top uses the app.METHOD. All of this is illustrated below:
Another thing to note in Fig 2.1 is that the next parameter calls the next() function
which in turn calls the Middleware 2, this process continues like a downstream, that is
one middleware flows into the next until it gets to the endpoint.
19
2.12 TEST ON NODE JS AND EXPRESS JS
The head of the web development team, Mr David organized a quiz on express js using
Google forms, during this week I revised for the test and at the end of the day I scored
75% on the test.
I picked out the colors, fonts, and design layout for the front end of the
application
I created the git hub repository we used for the project
I wrote the content and created the FAQ section for the home page
I built the following pages using HTML, CSS, Vanilla Js, and Chart Js:
Home page, Login page for users, Login page for the admin, Sign Up page,
User dashboard Pages (feeds, user stories, bookmarks, followers, account
summary, sign out, post and schedule post pages, like, comment, and reply
sections)
I helped in creating the layout for the backend application using MVC model
Using a JavaScript library, Chart Js, I was able to use polar charts, doughnut
charts, and line graphs to visualize the data in the account summary for the
user’s consumption.
I created a scheduler that users can schedule a post for a particular day at a
certain time.
I enabled dark mode and increase font mode across all pages.
I created an edit profile page where users can edit their profile picture, their
name and about.
I hosted the entire front-end project on surge.
20
CHAPTER THREE
Although there are a lot of text editors, VS Code is my preferred choice, it is easy to
use, and it provides some great extensions, one of which I always use is “live server”,
which is a local development server with live reload, that is developers don’t have to
refresh their pages any time they make changes to their page while building. VS Code
also has built in support for Git and Github.
21
For example, the: git config−−global user . name “ name” use to set up your
user name in Git. This is required if you want to connect with a remote
repository from your local repository, like making commits that will be pushed
to your remote repository.
git add . - This command adds any new changes made on your project to the
staging area; it tells Git you’d like to include an update to your project in a new
commit.
git commit−m“the commit message goes here ”- This creates a commit with a
passed commit message. It takes all the changes added by the git add . and
commits them to the local repository.
git push “ url” - This is used to upload the content of a local repository to a
remote repository. The url is the https url found on our remote repository, I used
Github as my remote repository.
git pull “ url” - This command is used to fetch and download content from a
remote repository such as Github into your local repository.
3.3 MEDIUM
Medium is a social publishing platform founded by EV Williams (a blogger and a
Twitter co-founder), and first launched in 2012. It is open to all and it’s a home of
diverse array of stories, ideas and perspective. During my industrial attachment, I was
introduced to medium and asked to write articles for certain projects we were giving; it
is a good way to get the word out there to recruiters, tech companies that you are an
active member of the tech community, rather than just concluding as project and
keeping it to yourself. Although medium was only social publishing platform I used
during my industrial attachment, I was also told to make use of some social media
platforms like Twitter and LinkedIn to build our tech profile and also write stories
about my completed projects. I only wrote two articles for two of the personal projects I
did during my attachment, this is illustrated below:
22
3.4 SURGE
Surge is a hosting platform that allows front end developers to publish their static web
pages online, so that they can be viewed by anyone connected to the internet. It is free
and easy to use, all the projects I completed during the course of my industrial training
where deployed using surge. Below are the steps I followed to deploy my projects on
surge:
This command installs surge globally, that is surge can access your entire computer.
4. I ran the command: “ surge”; since it was my first time using surge, it asked that
I register with my email and also create a password for my account before
deploying my project to the url of my choice, the url usually ends with
“.surge.sh”.
5. It was difficult for me to keep track of the domain names of all the project I’ve
launched, to solve this problem, there is a command that gives you a list of all
domain names, which is:
“ surge list ”
Figure 16 shows a list of all the domain names of the pages I hosted with surge.
23
CHAPTER FOUR
4.1 CONCLUSION
The purpose of this report was to show the in-depth exposure that one can get when
he/she undergoes the industrial training process because not everything can be learned
in the classroom. The industrial training scheme gives the student real life industry
experience so that upon graduation, the student is well equipped and ready to contribute
towards national development.
4.2 LIMITATIONS
1.) Sourcing for Establishment for Attachment: This was the first and major
issue, as my internship was done in Edo State and Edo State still has a long way
to go in terms of technological advancement; it was hectic looking for an ICT –
based industry for my attachment.
2.) Transportation: This was another major issue, as the distance from my
residence to my establishment was far; I had to source for transport myself
seeing that the internship was unpaid and without remuneration.
3.) Internet Access: Initially it wasn’t an issue, there was constant internet access,
but it got bad, seeing that maintenance and repairs in government establishments
are very slow, I had to result to using my personal data for the remaining period
of the attachment.
4.) Electricity: The fact that it was a government establishment and there was still
some light issues was very discouraging; initially when the internship started
there was no issue with light, but after few weeks, electricity became a problem,
some days we couldn’t work and had to go back home.
4.3 RECOMMENDATIONS
1. The Government should be more involved in sourcing for establishment for the
SIWES students, for instance, all government establishment should accept
SIWES students.
2. There should be a comprehensive directory of all the establishments that accepts
SIWES students free of charge, it will help facilitate placement for SIWES
students in industry.
3. The Federal Government should also make adequate provision in the annual
budget for proper funding of SIWES in view of the potential of the program to
contribute to enhancing the quality of the skills available to the country.
24
4. The ITF should ensure to pay students their monthly allowance on time; this
would help keep the SIWES student motivated.
5. The IT supervisors should always visit students monthly in their various places
of attachment.
6. I recommend that the Federal Government should be actively involved in the
rehabilitation of the Nigerian Education System, to ensure that what students are
taught in the classrooms correlates with what is been required in the industry.
25