---
# System prepended metadata

title: COHORT III WEEK 1

---

DAY 1

INTRODUCTION TO SOFTWARE ENGINEERING


Software engineering deals with the design, development, testing, and maintenance of software applications. 

This can be achieved by applying engineering principles and knowledge of programming languages to build software solutions for end users.

PROGRAMMING 
On the other hand is simply solving problems. These problems are solved by writing codes in languages understood by the computer known as Programming Language.

PROGRAMING LANGUAGE
Is a set of instructions (written in code) instructing the computer on how to perform a specific task.

LOW LEVEL LANGUAGE
The low level language is one that operates closest to the computer hardware. It is design to manipulate hardwares and are more machine friendly but can be difficult to understand.
Examples include Machine language and Assembly language. 

HIGH LEVEL LANGUAGE
Is one that operates closest to human language. They are understandable for both humans and machines and can be easier to use.
Examples include Python, C++, Java, JavaScript.

DAY 2

COMPUTER FUNDAMENTALS
A computer is an electronic device that accepts data, stores data,process the data and produces the result as information.

GENERATION OF COMPUTERS

1st GENERATION
-    Uses Vacuum tubes technology.
-    Are big in size thereby consuming large space.
-    They are slow and consume large amount of electricity.
-    Are expensive and uses punch cards to operate.

2nd GENERATION
-    Uses Transistor as key technology.
-    Are smaller in size thereby consuming less space.
-    They are faster and uses magnetic tape for storage.
-    Use Assembly language.

3rd GENERATION 
-    Uses Integrated circuits.
-    Are more reliable and smaller in size.
-    Introduced keyboards.

4th GENERATION
-    Uses Micro processor.
-    Personal computers (PCs).
-    Are faster and cheaper to afford.
-    Introduce Graphic User Interface (GUI).

5th GENERATION 
-    Uses Artificial Intelligence (AI).
-    Smart systems with robotics.
-    Self learning computers.

BINARY NUMBER SYSTEM

A binary number is defined as a number that is expressed in base 2 numeral system. 

Binary Number System uses two digits, '0' and '1', and is the foundation for all modern computing because of its direct implementation in electronic circuits using logic gates. Every digit is referred to as a <strong>bit</strong>. The word binary is derived from the word <em>"bi,"</em> which means two.

KEY TERMINOLOGIES

-    Bit: Every digit is referred to as a bit. example 0,1
-    Nibble: Computation of four (4) bits makes a Nibble. example 0100, 0110, 0011,
-    Bytes: Eight (8) bits makes a Byte. example 00110110, 00011101

CONVERSION OF NUMBERS IN BASE 10 (DECIMAL) TO BINARY NUMBERS (base 2).

example: Convert 65<sub>10</sub> to Base 2

SOLUTION:
65 Devided by 2 = 32 R 1
32 Devided by 2 = 16 R 0
16 Devided by 2 = 8  R 0
8  Devided by 2 = 4  R 0
4  Devided by 2 = 2  R 0
2  Devided by 2 = 1  R 0
1  Devided by 2 = 0 R 1

We read the remainders 'R' as the result starting from the bottom.

Therefore: 65<sub>10</sub> in binary is 1000001<sub>2</sub>.

CONVERSION OF NUMBERS IN BASE 2 (BINARY) TO NUMBERS IN BASE 10 (DECIMAL).

example: Convert 1000001<sub>2</sub> to base 10 

SOLUTION
Multiply each number by 2 and raise to their respective powers in their position starting from the right hand side and sum them all.

1 x 2<sup>6</sup> + 0 x 2<sup>5</sup> + 0 x 2<sup>4</sup> + 0 x 2<sup>3</sup> + 0 x 2<sup>2</sup> + 0 x 2<sup>1</sup> + 1 x 2<sup>0</sup>

1x64 + 0x32 + 0x16 + 0x8 + 0x4 + 0x2 + 1x1

64 + 0 + 0 + 0 + 0 + 0 + 0 + 1

64 + 1

Final result = 65<sub>10</sub>

Therefore: 1000001<sub>2</sub> is 65<sub>10</sub>

CONVERSION OF BINARY NUMBERS (BASE 2) TO HEXADECIMAL NUMBERS (BASE 16)

Example: Convert 01011110<sub>2</sub> to Base 16 (Hexadecimal)

SOLUTION:

First, split the numbers into Nibble (four bits)

Simply put: 0101,1110

here, First Nibble will be 0101
      second nibble will be 1110
      
Lets solve the first Nibble 0101

0 x 2<sup>3</sup> + 1 x 2<sup>2</sup> + 0 x 2<sup>1</sup> + 1 x 2<sup>0</sup>

0x8 + 1x4 + 0x2 + 1x1

0 + 4 + 0 + 1

4 + 1 = 5

first nibble = 5

Lets solve second nibble 1110

1 x 2<sup>3</sup> + 1 x 2<sup>2</sup> + 1 x 2<sup>1</sup> + 0 x 2<sup>0</sup>

1x8 + 1x4 + 1x2 + 0x1

8 + 4 + 2 + 0 = 14

Second nibble = 14

But:
10 = A
11 = B
12 = C
13 = D
14 = E
15 = F
       
Second nibble is 14 which is equivalent to E

Therefore, 
first nibble = 5
second nibble = E
           
Final result will be 01011110<sub>2</sub> is 5E<sub>16</sub>

DAY 3

BASICS OF OPERATING SYSTEM FOR BEGINNERS

INTRODCTION

An operating system is a software that manages all hardwares and other softwares on a computer.
It serves as a bridge between the user and the computer hardware.

Examples of operating system includes;
-    linux
-    windows
-    macOS

KEY FUNCTIONS OF AN OPERATING SYSTEM
-    Handles memory
-    Data processing
-    Software and hardware management
-    File management

USER INTERFACE

Is simply the means by which the user and a computer system interact.

These interactions can be either through;

- Graphical user interface (GUI)
User can interact with the applications using pointing
devices or keyboard.

OR
- Command line interface (CLI)
Uses commands (entered through keyboard) to interact with
the applications and computer programs.


GETTING STARTED WITH LINUX BY LEARNING BASIC COMMANDS
Some of the Linux commands treated are as follows

- ls: to display list of directory 
- pwd: present working directory
- cd 'name of directory': to change directory
- mkdir 'name of directory': to create or make a new directory
- / : means root folder
- cd / : change to root folder
- cd ~ : change to home
- rm -rf 'name of directory': remove directory
- ctrl + L: to clear terminal
- clear: to also clear terminal
- cd .. : will take you one folder backward
- cd ../.. : will take you two folder backward
- touch 'name of file .txt': to create a text format file 
- touch 'name of file .docx': to create a document format file 
- touch 'name of file .xlsx': to create an excel format file 
- touch 'name of file .pdf': to create a pdf format file 
- touch 'name of file .html': to create a html format file 
- echo 'word': to output a text on the terminal

CONCLUSION
Learning software engineering is time demanding and needed more of hands on task. A day without practise can make one forgets what was taught in the class and to that effect, the tutors gives take home package to keep our hands dirty.

I must say, indeed, alot was covered over the week and i'm looking forward to learn and do more hard things at Blockfuse Labs.

This is just the begining. Stay with me in my journey for more exciting offers.
















