Computer memory

memory is just like a human brain. It is used to store data and instructions. Computer memory is the storage space in the computer, where data is to be processed and instructions required for processing are stored. The memory is divided into large number of small parts called cells. Each location or cell has a unique address, which varies from zero to memory size minus one. For example, if the computer has 64k words, then this memory unit has 64 * 1024 = 65536 memory locations. The address of these locations varies from 0 to 65535.

Memory is primarily of three types −

  • Cache Memory
  • Primary Memory/Main Memory
  • Secondary Memory

Cache Memory

Cache memory is a very high speed semiconductor memory which can speed up the CPU. It acts as a buffer between the CPU and the main memory. It is used to hold those parts of data and program which are most frequently used by the CPU. The parts of data and programs are transferred from the disk to cache memory by the operating system, from where the CPU can access them.

Advantages

The advantages of cache memory are as follows −

  • Cache memory is faster than main memory.
  • It consumes less access time as compared to main memory.
  • It stores the program that can be executed within a short period of time.
  • It stores data for temporary use.
Disadvantages

The disadvantages of cache memory are as follows −

  • Cache memory has limited capacity.
  • It is very expensive.

Primary Memory (Main Memory)

Primary memory holds only those data and instructions on which the computer is currently working. It has a limited capacity and data is lost when power is switched off. It is generally made up of semiconductor device. These memories are not as fast as registers. The data and instruction required to be processed resides in the main memory. It is divided into two subcategories RAM and ROM.

Characteristics of Main Memory
  • These are semiconductor memories.
  • It is known as the main memory.
  • Usually volatile memory.
  • Data is lost in case power is switched off.
  • It is the working memory of the computer.
  • Faster than secondary memories.
  • A computer cannot run without the primary memory.

Secondary Memory

This type of memory is also known as external memory or non-volatile. It is slower than the main memory. These are used for storing data/information permanently. CPU directly does not access these memories, instead they are accessed via input-output routines. The contents of secondary memories are first transferred to the main memory, and then the CPU can access it. For example, disk, CD-ROM, DVD, etc.

Characteristics of Secondary Memory
  • These are magnetic and optical memories.
  • It is known as the backup memory.
  • It is a non-volatile memory.
  • Data is permanently stored even if power is switched off.
  • It is used for storage of data in a computer.
  • Computer may run without the secondary memory.
  • Slower than primary memories.

Random Access Memory

RAM (Random Access Memory) is the internal memory of the CPU for storing data, program, and program result. It is a read/write memory which stores data until the machine is working. As soon as the machine is switched off, data is erased.

Access time in RAM is independent of the address, that is, each storage location inside the memory is as easy to reach as other locations and takes the same amount of time. Data in the RAM can be accessed randomly but it is very expensive.

RAM is volatile, i.e. data stored in it is lost when we switch off the computer or if there is a power failure. Hence, a backup Uninterruptible Power System (UPS) is often used with computers. RAM is small, both in terms of its physical size and in the amount of data it can hold.

RAM is of two types −

  • Static RAM (SRAM)
  • Dynamic RAM (DRAM)

Static RAM (SRAM)

The word static indicates that the memory retains its contents as long as power is being supplied. However, data is lost when the power gets down due to volatile nature. SRAM chips use a matrix of 6-transistors and no capacitors. Transistors do not require power to prevent leakage, so SRAM need not be refreshed on a regular basis.

There is extra space in the matrix, hence SRAM uses more chips than DRAM for the same amount of storage space, making the manufacturing costs higher. SRAM is thus used as cache memory and has very fast access.

Characteristic of Static RAM
  • Long life
  • No need to refresh
  • Faster
  • Used as cache memory
  • Large size
  • Expensive
  • High power consumption

Dynamic RAM (DRAM)

DRAM, unlike SRAM, must be continually refreshed in order to maintain the data. This is done by placing the memory on a refresh circuit that rewrites the data several hundred times per second. DRAM is used for most system memory as it is cheap and small. All DRAMs are made up of memory cells, which are composed of one capacitor and one transistor.

Characteristics of Dynamic RAM
  • Short data lifetime
  • Needs to be refreshed continuously
  • Slower as compared to SRAM
  • Used as RAM
  • Smaller in size
  • Less expensive
  • Less power consumption

Computer - Read Only Memory

ROM stands for Read Only Memory. The memory from which we can only read but cannot write on it. This type of memory is non-volatile. The information is stored permanently in such memories during manufacture. A ROM stores such instructions that are required to start a computer. This operation is referred to as bootstrap. ROM chips are not only used in the computer but also in other electronic items like washing machine and microwave oven.

Let us now discuss the various types of ROMs and their characteristics.

MROM (Masked ROM)

The very first ROMs were hard-wired devices that contained a pre-programmed set of data or instructions. These kind of ROMs are known as masked ROMs, which are inexpensive.

PROM (Programmable Read Only Memory)

PROM is read-only memory that can be modified only once by a user. The user buys a blank PROM and enters the desired contents using a PROM program. Inside the PROM chip, there are small fuses which are burnt open during programming. It can be programmed only once and is not erasable.

EPROM (Erasable and Programmable Read Only Memory)

EPROM can be erased by exposing it to ultra-violet light for a duration of up to 40 minutes. Usually, an EPROM eraser achieves this function. During programming, an electrical charge is trapped in an insulated gate region. The charge is retained for more than 10 years because the charge has no leakage path. For erasing this charge, ultra-violet light is passed through a quartz crystal window (lid). This exposure to ultra-violet light dissipates the charge. During normal use, the quartz lid is sealed with a sticker.

EEPROM (Electrically Erasable and Programmable Read Only Memory)

EEPROM is programmed and erased electrically. It can be erased and reprogrammed about ten thousand times. Both erasing and programming take about 4 to 10 ms (millisecond). In EEPROM, any location can be selectively erased and programmed. EEPROMs can be erased one byte at a time, rather than erasing the entire chip. Hence, the process of reprogramming is flexible but slow.

Advantages of ROM

The advantages of ROM are as follows −

  • Non-volatile in nature
  • Cannot be accidentally changed
  • Cheaper than RAMs
  • Easy to test
  • More reliable than RAMs
  • Static and do not require refreshing
  • Contents are always known and can be verified

Introduction to software


Software is a set of programs, which is designed to perform a well-defined function. A program is a sequence of instructions written to solve a particular problem.

There are two types of software

  • System Software
  • Application Software

System Software

The system software is a collection of programs designed to operate, control, and extend the processing capabilities of the computer itself. System software is generally prepared by the computer manufacturers. These software products comprise of programs written in low-level languages, which interact with the hardware at a very basic level. System software serves as the interface between the hardware and the end users.

Some examples of system software are Operating System, Compilers, Interpreter, Assemblers, etc.

Here is a list of some of the most prominent features of a system software

  • Close to the system
  • Fast in speed
  • Difficult to design
  • Difficult to understand
  • Less interactive
  • Smaller in size
  • Difficult to manipulate
  • Generally written in low-level language

Application Software

Application software products are designed to satisfy a particular need of a particular environment. All software applications prepared in the computer lab can come under the category of Application software.

Application software may consist of a single program, such as Microsoft's notepad for writing and editing a simple text. It may also consist of a collection of programs, often called a software package, which work together to accomplish a task, such as a spreadsheet package.

Examples of Application software are the following

  • Payroll Software
  • Student Record Software
  • Inventory Management Software
  • Income Tax Software
  • Railways Reservation Software
  • Microsoft Office Suite Software
  • Microsoft Word
  • Microsoft Excel
  • Microsoft PowerPoint

Features of application software are as follows

  • Close to the user
  • Easy to design
  • More interactive
  • Slow in speed
  • Generally written in high-level language
  • Easy to understand
  • Easy to manipulate and use
  • Bigger in size and requires large storage space
             Comparison between hardware and software

Hardware vs. software

let's talk about two things all computers have in common: hardware and software.
  • Hardware is any part of your computer that has a physical structure, such as the keyboard or mouse. It also includes all of the computer's internal parts, which you can see in the image below.

 
  • Software is any set of instructions that tells the hardware what to do. It is what guides the hardware and tells it how to accomplish each task. Some examples of software include web browsers, games, and word processors. Below, you can see an image of Microsoft PowerPoint, which is used to create presentations.                                                                                               


  • Everything you do on your computer will rely on both hardware and software. For example, right now you may be viewing this lesson in a web browser (software) and using your mouse (hardware) to click from page to page. As you learn about different types of computers, ask yourself about the differences in their hardware. As you progress through this tutorial, you'll see that different types of computers also often use different types of software.

How to write codes on HTML

 Writing codes involves using a code editor and understanding the basic structure and syntax of HTML.

1. Choose a text editor

Simple text editor: Notepad or textedit can be used for basic html coding.

Specialized code editors: Visual Studio Code(VS Code), sublime text, or atom offer features like syntax highlighting, auto completion, and extensions that enhance the coding experience. VS Code is a popular choice and is freely available.

2. Create an HTML file

Open your chosen text editor 

create a new file

save the file name with a .html extension (e.g index.html). This tells your computer and web browsers that it is a html document.

3. Basic HTML structure

All HTML document follow a fundamental structures











4. Understanding html tags and elements

Html uses tags to define elements. Tags are keywords enclosed in angle brackets (e.g. <h1>, <p>, <a>)

Most tags come in pairs: an opening tag and a closing tag. The closing tag includes a forward slash before the tag name (e.g. <h1> and </h1>)

The content between the opening and closing tags forms an html element.

Some tags are self closing or void elements and do not require a closing tag (e.g. <br> for a line break, <img> for an image.>


                                                                              Obunezi destiny
                                                                                     Programmer

Programming Fundamentals

 Introduction: Programming fundamentals are the essential concepts and approaches that underpin the effective use of programming languages. This article provides an overview of those fundamental concepts and approaches, aimed at helping readers understand what they need to learn in order to become proficient in programming. By exploring the core components of programming, readers can gain a better understanding of how different languages work and how to approach learning them. In addition, this article will equip readers with the skills necessary for troubleshooting errors in their code and developing their own programs.


What Is Programming: Programming is the process of creating instructions that tell a computer or device how to do something. It involves learning the basics, writing code using libraries and making sure your. code is readable, optimized and follows good software architecture principles.

When programming you are essentially constructing a set of instructions for a computer or other device to follow. These instructions can be simple or complex depending on the task at hand.

To this end, programming requires an understanding of both the language being used as well as the underlying principles of problem solving and logical thinking. 

By mastering these fundamentals, one can create powerful applications that meet the needs of users.

Programming is about utilizing available resources in an efficient and effective manner, it entails critical thinking to ensure that code is written in such a way that it can be maintained overtime and is optimized for performance.

With practice and patience, anyone can become proficient in programming and gain satisfaction from creating programs that solve problems and fulfill user needs.


Variables And Data Types

In this section we will discuss the important topic of variables and data types. Variables are essential component in programming, as they provide a means of storing and accessing data. Data types are the building blocks used to define the type of information stored in a variable.

When working with variables, it is important to understand how to compare different data types and follow the correct naming conventions for each type. It is also necessary to have an understanding of data type coercion and casting, which allows for one type of data to be converted into another type. Finally, it is important that programmers consider type safety when dealing with different kinds of data.


Below is a list of topic discussed in this session

1. Data types comparison.

2. Variable naming conventions 

3. Data type coercion 

4. Data type casting

5. Type safety 

By gaining an understanding of these topics, you will be able to confidently work with various data types and apply them effectively in your development project.


Operators and Expression 

In programming, operators are symbols that perform operation on one or more operands.

Expressions are combination of variables and operators which result in a value, they can be used to modify values assign values to variables or create conditions for performing certain tasks.

Precedence rules dictate the order in which operators should be evaluated when multiple operators are used in an expression.

Type coercion is when an operator forces two operands to the same type before performing a computation, it is biased on operator precedence and associativity rules.

Comparison operators compare two values and return either true or false, they include equal to (==), greater than(>), less than(<), not equal(!=), greater than or equal to(>=), and less than or equal to (<=).

This is useful for creating logic statements such as if/else statements and while loops.

With these fundamentals in place, programmers have a powerful toolset for manipulating data and controlling program flow.


Control flow statements

Control flow statements are a crucial part of programming fundamentals. They allow developers to structure interactive loops and branching logic to control the flow of a program.

If/Else logic is one of the most commonly used control flow statements, as it enables developers to make decisions based on conditions that are being evaluated by the program.

Looping constructs, such as for and wild loops, provide a way for developers to efficiently iterate through instructions in a program.

All these control flow elements are essential for managing program flow effectively. Understanding how to write effective control flow statements within an application is an integral part of becoming a successful programmer.


Functions And Subroutines

Functions and Subroutines are fundamental building blocks of programming that provide a way to logically structure code. They allow for data abstraction, code reuse, memory management, error handling, and Subroutines calls.

Functions are self contained pieces of code that perform a specific task and return a value. Subroutines are similar to functions but do not return a value. Instead they perform an action such as printing or displaying data.

When writing functions and Subroutines, it is important to keep in mind their purpose. Functions should be used to calculate values while Subroutines can be used for tasks like formatting output or displaying messages. Furthermore, it is important to use meaningful names for functions and Subroutines in order to make the code more readable and maintainable.

Additionally, parameters should be carefully chose. based on the purpose of the function or subroutine in order to ensure the desired result is achieved.

Finally, it is essential for developers to understand how functions and Subroutines work and how they interact with other components of the programming language in order to write effective code. By utilizing functions and Subroutines effectively, developers can create powerful programs that are efficient, maintainable, and extensible.


Object Oriented Programming

Object Oriented Programming is a programming approach which focuses on the construction of objects, rather than traditional procedural programming. Classes are a core concept of Object Oriented Programming, as they are used to define the attributes and behaviours form a parent class, and polymorphism is the ability to use a common interface to interact with objects of different types within a program.

Classes

Classes are a fundamental part of Object Oriented Programming, and serve as the primary tool for encapsulating principles, memory management and code reusability.

Classes enable developers to define object that contain both data and methods that can be used to manipulate that data. By allowing developers to create custom classes with specific properties and methods, they can gain increased control over the behaviour of their program.

Additionally, classes enable efficient memory management by allowing objects to be stored in memory once and then used multiple times. Finally, classes provide code reusability by enabling developers to create objects based on existing templates or code snippets.

As such, classes are an essential concepts for any programmer looking out maximize their efficiency and productivity when working on an object Oriented project.


                                                                                  

                                                                                    Obunezi Destiny                                                                                                                                  Programmer

How to Grow as a Programmer

 To grow as a programmer, you have to code daily, build diverse projects, join and participate in developer communities, learn new skills and languages, contribute to open source projects, and seek out mentorship. Consistently practicing problem solving through coding challenges, reading other people code, refactoring your own code, and improving soft skills are also crucial for continous development.

1. Practice and Skill Development

Code consistently: Aim to write code every day, even if its just for a short period, to build momentum and reinforce your knowledge.

Build real world projects: Apply what you learn by creating diverse projects, from simple apps to more complex applications to gain practical experience.

Solve coding challenges: Use platforms like LeetCode, HackerRank, or Codewars to proactice and improve your problem solving abilities and understanding of data structures and algorithms.

Read other people's code: Analyze code from experienced developers to learn different patterns, identify potential issues, and improve your own coding style.

Learn new languages and frameworks: Broaden your skill set by exploring different programming languages, frameworks, and emerging technologies.

2. Community and collaboration

Join online and local communities: Engage with developer communities on platforms like GitHub or Reddit to share ideas and learn from others.

Contribute to open source projects: Participating in open source can help you collaborate with experienced developers, improve your code quality and build your portfolio.

Find a mentor or collaborate with peers: Learn from experienced programmers by seeking a mentor or team up with a friend to teach each other and work through problems together.

Attend tech meetups and conferences: These events offer opportunities to learn from talks and network with other developers in your field.

3. Continuous learning  and mindset

Never stop learning: The field of programming constantly evolves, so stay curious and continue to learn new things.

Develop strong soft skills: Communication, teamwork, and debugging are crucial skills that complement technical abilities.

Understand the fundamentals: Build a strong foundation in basic concepts, as this will make it easier to understand advanced topics and appreciate different technologies.

Take on challenging projects: Step outside your comfort zone by tackling projects that are slightly beyond your current skill set to accelerate your learning.

How To Design a Simple Website

To design a website, first define it's purpose and audience, then choose a website platform like a website builder (e.g, Wix GoDaddy).Next, plan your site's architecture with a sitemap and wireframes, create essential pages, and gather your context (text, images, graphics.) Finally, customize your site using a template, optimize it for user experience(UX) and search engines (SEO), thoroughly test it, and then launch and monitor it.


1. Plan your website

Define your goal: Determine the primary purpose of your website (e.g sell products, share information, build a community).

Know your audience: Understand who your target users are and what they need or expect from your site to inform design decisions.

Create a site map: Map out the structure of your website and how pages will link together to form a logical navigation system.

Develop Wireframes: Create simple, blueprints like designs for each page to lay out content and functionality without focusing on visual details yet..


2. Choose Your Tools

Website Builder: Select a user friendly platform like Wix, or GoDaddy that provides hosting design tools, and templates, especially if you're not a coder.

Domain Name: Pick and register a domain name (your website's address) that is memorable, relevant, and easy to type.


3. Design and Content

Select a Template: Choose a pre-designed template that aligns with your brand and site goals.

Customize Your design: Tailor the template to your brand and site goals.

Create Content: Develop engaging and valuable content, including text, images, and graphics, ensuring it is easy for your audience to understand.


4. Optimize and Launch

User Experience (UX): Ensure your website is easy to navigate and looks good on all devices, especially mobile phones.

Search Engine Optimization (SEO): Optimize your site with relevant keywords and content to help search engines understand it and rank it higher in search results.

Test your website: Test every button, link and form to ensure everything functions correctly before live.

Launch: Publish your website to make it live online.


5. Monitor and Improve

Monitor Performance: Use analytics tools to track how your website is performing and what visitors are doing on your site.

Iterate: Continuously make adjustments and improvements based on performance data to keep your website effective and relevant.


                                                                         

                                                                       Obunezi Destiny                                                                                                                                              Programmer

How to make money through blogging


To make money through blogging, you first need a profitable specialized topic and build a quality blog, then implement monetization strategies like affiliate marketing, selling digital products or physical products and merchandise running advertisements, creating paid membership communities or offering services and consulting. Building an email list, promoting your content through social media and SEO, and focusing on providing consistent valuable content are key to growing your audience and increasing your earning potential.

1 Build a strong blog foundation
Choose a niche: Select a profitable and interesting topic for your blog.
Create quality content: Consistently publish valuable, long form content that target relevant keywords and is optimized for search engines.
Build an email list: Use this list to promote new content and offers to your audience directly.
Promote your blog: Utilize social media, SEO and collaborations to drive traffic to your site.

2 Monetization strategies
Affiliate marketing: Partner with brands and earn a commission by recommending their products or services to your audience.
Display ads: Join ads network like Google AdSense or Mediavine to place ads on your blogs and earn money based on clicks and views.
Sell digital products: Offer merchandise or other physical goods related to your blogs niche.
Offer Services: Provide freelance  services such as content creation, editing, or consulting related to you expertise.
Sponsored content: Write sponsored posts or products reviews for brands.
Memberships Communities or Paid Subscriptions: Offer exclusive content to a paid community for subscribers.

3 Grow your income
Diversify revenue streams: Don't rely on just one method, combine several strategies to maximize your earnings.
Scale your content and audience: The more traffic and audience your blog generates, the more opportunities you will have to monetize it.
Partner with brands and agencies: As your blog influence grows, you can secure more lucrative partnerships.
Monetize other platforms: Expand your reach and income by monetizing related YouTube videos.
With this  few key words, I can assure you that you can make money through blogging.

                                                                         
                                                           
Obunezi Destiny
                                                                 Programmer