AD

computer software, Programing and coding- GST 103 course note

 Welcome to FreshNote, your distinguished campus journey hub for all course materials. Today we're giving an extensive course note on GST 103, titled, Computer Software and programming: The Digital Instructions That Bring Machines to Life. 

Check out our course outline and handout on this topic 


GST course note, meaning of software and programming
Infographic of software with examples 


Meaning of computer software explained 


When you power on your computer, smartphone, or tablet, what you see on the screen isn't just the result of electronic circuits and hardware components. Behind every click, tap, and swipe lies an invisible layer of instructions called software. Without software, even the most powerful computer would be nothing more than an expensive collection of metal, plastic, and silicon—completely useless for any practical purpose.

Understanding software is crucial in today's digital world because it affects virtually every aspect of our lives. From the alarm clock app that wakes you up to the navigation system that guides you to work, software has become the driving force behind modern technology. But what exactly is software, how does it work, and why should you care?

Similar course note:  computer networking 


What Is Computer Software?

Computer software refers to a collection of instructions, programs, and data that tells a computer what to do and how to do it. Think of software as the language that humans use to communicate with machines. While hardware provides the physical foundation—the processor, memory, storage, and input/output devices—software provides the intelligence and functionality.

Imagine buying a brand-new car that has no driver. The car has an engine, wheels, steering wheel, and all the mechanical parts needed to run, but without a driver to operate it, the car remains stationary. Software acts as the driver for computer hardware, controlling and coordinating all the different components to perform useful tasks.

Software exists as code written in programming languages that computers can understand and execute. This code gets translated into binary instructions (combinations of 0s and 1s) that the computer's processor can directly process.

Similar course note: history and generation of computers 


The Main Categories of Software

Software comes in different types, each serving specific purposes and functions. Understanding these categories helps you appreciate how different software works together to create the computing experience you're familiar with.


System Software

System software forms the foundation layer that manages and controls computer hardware. It acts as an intermediary between users, applications, and the physical components of the computer.


Operating Systems (OS) represent the most important type of system software. Popular operating systems include Windows, macOS, Linux, Android, and iOS. The operating system manages memory allocation, handles file storage, coordinates input and output operations, and provides the platform on which other software can run.


Device Drivers are small programs that allow the operating system to communicate with specific hardware components like printers, graphics cards, or wireless adapters. When you plug in a new device and your computer "recognizes" it, that's actually a driver program enabling communication.


Utilities are system tools that perform maintenance, optimization, and security tasks. Examples include antivirus programs, disk cleanup tools, file compression software, and backup utilities.


Application Software

Application software includes programs designed to help users accomplish specific tasks or solve particular problems. This category contains the software most people interact with daily.


Productivity Software helps people create, edit, and manage documents, presentations, spreadsheets, and databases. Microsoft Office, Google Workspace, and LibreOffice are common examples. These tools have revolutionized how we work, study, and organize information.


Media Software handles audio, video, and image files. This includes music players like Spotify, video editors like Adobe Premiere, photo editing programs like Photoshop, and media players like VLC.


Web Browsers like Chrome, Firefox, Safari, and Edge allow you to access websites and online services. While they might seem simple, modern browsers are incredibly complex applications that interpret web code, manage security, and provide platforms for web-based applications.


Games and Entertainment Software range from simple mobile games to complex computer games with stunning graphics and immersive experiences. The gaming industry has pushed software development forward, driving innovations in graphics, artificial intelligence, and user interfaces.


Educational Software includes learning management systems, online course platforms, language learning apps, and specialized programs for subjects like mathematics, science, or programming.


Programming Software

Programming software provides tools for creating other software. This category includes text editors, compilers, debuggers, and integrated development environments (IDEs) that programmers use to write, test, and maintain code.


How Software Development Works

Creating software involves a systematic process that transforms ideas into functional programs. Software development typically follows several stages, though the exact process can vary depending on the project's size and complexity.


The process usually begins with planning and analysis, where developers identify what the software needs to accomplish, who will use it, and what problems it should solve. This stage involves gathering requirements, studying user needs, and defining project scope.


Design comes next, where developers create blueprints for how the software will work. This includes designing the user interface, planning the internal structure, and deciding how different components will interact with each other.


Coding is where programmers actually write the instructions using programming languages like Python, Java, C++, JavaScript, or dozens of others. Different languages are better suited for different types of projects—web development, mobile apps, system programming, or data analysis all tend to use different tools and languages.


Testing involves checking the software for bugs, security vulnerabilities, and performance issues. This stage is crucial because even small errors can cause programs to crash or behave unpredictably.


Deployment means releasing the software to users, while maintenance involves ongoing updates, bug fixes, and feature improvements based on user feedback and changing requirements.


Modern software development often uses collaborative approaches where teams of developers work together, sharing code and coordinating their efforts through version control systems and project management tools.


Programming Languages: The Building Blocks of Software

Programming languages serve as the medium through which humans communicate instructions to computers. Each language has its own syntax, rules, and strengths that make it suitable for different types of projects.


High-level languages like Python, Java, and C++ are designed to be relatively easy for humans to read and write. They use English-like keywords and abstract away many complex technical details, allowing programmers to focus on problem-solving rather than technical implementation.


Low-level languages like Assembly and C provide more direct control over hardware but require more technical expertise and detailed programming. These languages are often used for system programming, embedded systems, and applications where performance is critical.


Scripting languages like JavaScript, PHP, and Python are often used for automating tasks, web development, and rapid prototyping. They're generally interpreted rather than compiled, making them flexible and easy to test and modify.


Specialized languages are designed for specific domains—SQL for database management, HTML/CSS for web page structure and styling, R for statistical analysis, or MATLAB for mathematical computations.


The choice of programming language depends on factors like the project's requirements, performance needs, team expertise, and available libraries and frameworks.


Software Licensing and Distribution

Software can be distributed and licensed in various ways, each with different implications for users and developers.


Commercial Software is sold for profit and typically comes with licenses that restrict how you can use, copy, or modify the program. Examples include Microsoft Office, Adobe Creative Suite, and most video games. Users purchase licenses to use the software but don't own the actual code.


Free and Open Source Software (FOSS) is distributed with source code available for anyone to examine, modify, and redistribute. Examples include Linux, Mozilla Firefox, and LibreOffice. "Free" refers to freedom rather than price—though most open source software is also available at no cost.


Shareware allows users to try software for free before purchasing a full license. Many mobile apps use a "freemium" model where basic features are free but advanced functionality requires payment.


Software as a Service (SaaS) delivers applications through the internet rather than installing them locally. Examples include Google Docs, Netflix, and Salesforce. Users typically pay subscription fees and access the software through web browsers.


Understanding licensing is important because it affects what you can legally do with software—whether you can install it on multiple computers, share it with others, or modify it for your needs.


The Role of Software in Different Industries

Software has transformed virtually every industry, creating new possibilities and changing how work gets done.


Healthcare relies on software for electronic medical records, diagnostic imaging, treatment planning, and medical device operation. Telemedicine platforms have made healthcare more accessible, while AI-powered diagnostic tools are improving accuracy and speed of medical analysis.


Education has been revolutionized by learning management systems, online course platforms, educational games, and simulation software. Students can now access world-class education from anywhere, while teachers have powerful tools for creating engaging learning experiences.


Finance depends heavily on software for transaction processing, fraud detection, algorithmic trading, and mobile banking. Fintech applications have made financial services more accessible and user-friendly for consumers worldwide.


Transportation uses software for navigation systems, traffic management, vehicle diagnostics, and increasingly, autonomous driving systems. Ride-sharing apps have created entirely new business models in urban transportation.


Entertainment has been transformed by streaming platforms, digital content creation tools, and interactive media. Software enables everything from movie special effects to music production to video game development.


Manufacturing employs software for design, automation, quality control, and supply chain management. Computer-aided design (CAD) software has revolutionized product development, while automation software controls robotic systems and production lines.


Emerging Trends in Software Development

Software continues to evolve rapidly, driven by new technologies, changing user expectations, and emerging possibilities.


Artificial Intelligence and Machine Learning are being integrated into more applications, enabling software to learn from data, recognize patterns, and make intelligent decisions. This technology powers recommendation systems, voice assistants, image recognition, and predictive analytics.


Cloud Computing has changed how software is developed, deployed, and used. Instead of installing programs locally, users increasingly access software through internet connections, enabling better collaboration, automatic updates, and access from any device.


Mobile-First Development reflects the reality that many users primarily interact with software through smartphones and tablets. This has influenced user interface design, feature prioritization, and performance optimization across all types of software.


Internet of Things (IoT) software connects everyday objects to networks, enabling smart homes, connected vehicles, and industrial automation. This requires specialized software that can operate on devices with limited processing power and battery life.


Cybersecurity has become a central concern in software development, leading to secure coding practices, encryption technologies, and sophisticated threat detection systems.


Challenges in Modern Software Development

Creating reliable, secure, and user-friendly software presents ongoing challenges that developers and organizations must address.


Complexity Management becomes increasingly difficult as software systems grow larger and more interconnected. Modern applications often rely on hundreds of external libraries and services, making it challenging to ensure everything works together reliably.


Security Threats evolve constantly, requiring developers to stay informed about new vulnerabilities and attack methods. Software must be designed with security in mind from the beginning, not added as an afterthought.


User Experience Design demands understanding how people actually use technology, which often differs from how developers assume it will be used. Creating intuitive interfaces that work well for diverse users requires careful research and testing.


Performance Optimization becomes more important as users expect fast, responsive software regardless of their device capabilities or network conditions.


Maintenance and Updates represent ongoing responsibilities that can consume significant resources, especially for popular software with large user bases.


The Future of Software

Looking ahead, software will likely become even more integrated into daily life, more intelligent, and more specialized for specific needs and contexts.


Artificial intelligence will continue advancing, potentially automating many routine programming tasks while enabling software to adapt to individual users' preferences and behaviors.


Quantum computing, while still in early stages, could eventually enable entirely new types of software applications that are impossible with current technology.


Augmented and virtual reality software will create new forms of interaction and experience, blending digital and physical worlds in innovative ways.


As software becomes more powerful and pervasive, questions about privacy, ethics, and social impact will become increasingly important considerations in development decisions. And as a result of this evolution, our technical team has created an AI coder call KEMEX OS that enable students build applications without coding.


 The big questions? 

How do software come to existence, Is it manufactured by only by computer engineers? The short answer is l, anyone can create a software. Remember, After Charles Babbage manufactured computer, there was no software and that created room for Lady Ada Lovelace who wrote the first computer program. Notice various web apps on our website like: dictionary, GPA calculator CBT app, E-librarygraph plotter, scientific calculator etc, these are good example of the work of a programmer (coder) . Let's go deeply to what programing is about.

So What is Programming?

At its simplest, programming is the act of giving instructions to a computer to make it perform specific tasks, it's done using coding in different languages such as C++ COBOL. We talked about computer software above, programing is what gives birth to software. 


For programming to work effectively, four basic elements must exist:

  1. Programmer – the person who writes the instructions.

  2. Code – the actual instructions being written (commands, functions, algorithms, etc.).

  3. Programming Language – the specific language used to write the code (Python, Java, JavaScript, C++, etc.).

  4. Computer – the machine that receives the instructions and executes them.


Traditionally, computers only understood machine language (0s and 1s). But with advances in programming languages, coding now involves writing instructions in languages that are closer to human language. Today, programmers use various programming languages and development tools like kemex OS to create everything from simple calculators to complex social media platforms.





Programming Languages: Building Digital Solutions

A programming language by itself is powerful, but when combined with other technologies and frameworks, it becomes part of something even greater—a complete software solution. A programming language is simply a set of rules and syntax that allows programmers to communicate with computers and create applications.


Languages come in different types depending on their purpose and complexity:

High-Level Languages: Cover broad applications such as web development, mobile apps, or desktop software. For example, Python is used in a university data science course to analyze student performance across different subjects.


Low-Level Languages: Extend across system programming and hardware control, closer to machine language than high-level languages. For example, Assembly language used to program microcontrollers in electronic devices.


Scripting Languages: Cover automation and quick tasks, sometimes used for web development. JavaScript is the most famous scripting language used globally.


Programming Paradigms: The Styles of Coding

How code is structured and organized in a program is called programming paradigms. Different paradigms are used depending on the problem, performance requirements, and developer preference. The common types include:


  1. Procedural Programming – Code is organized in functions and procedures. It is straightforward but can become complex as programs grow larger.


  1. Object-Oriented Programming – Code is organized around objects that contain both data and methods. It promotes code reusability, though it requires more planning upfront.


  1. Functional Programming – Every computation is treated as a mathematical function. It is reliable and predictable, though the learning curve can be steep for beginners.


  1. Event-Driven Programming – Code responds to events like clicks, keyboard input, or system notifications. It is perfect for user interfaces but can be difficult to debug.

  2. Declarative Programming – Describes what the program should accomplish rather than how to do it. It is powerful for specific tasks but may not be suitable for all types of problems.

These approaches form the foundation of how programmers think about problems before they write code to solve them.


The Development Process: A Global System of Problem-Solving

Programming is the most systematic example of problem-solving methodology. It is a structured approach where programmers break down complex problems into smaller, manageable pieces and create step-by-step solutions. Unlike simple scripts or small programs, professional software development involves multiple stages working together.

At its core, programming functions as a digital problem-solving process, handling everything from business logic to user interfaces to data management.


Development Tools and IDEs

Every programming project needs the right tools to be productive. These are technically called IDEs (Integrated Development Environments) or text editors. For example, Visual Studio Code is a popular editor that helps developers write and debug code efficiently. Just like a carpenter needs good tools to build a house, a programmer needs good development tools to create software.


Software Libraries and Frameworks

To create programs efficiently, programmers rely on Software Libraries and Frameworks. These are pre-written code collections that provide ready-made solutions for common programming tasks, usually available for free or through subscription models. Your development environment gives you access to these resources, helps you integrate them into your projects, and provides the foundation for building more complex applications.


Important Programming Concepts

When working with programming, several terms are frequently used. Here are some important ones:

Variable: A storage location that holds data values during program execution.

Function: A reusable block of code that performs a specific task.

Loop: A programming construct that repeats a block of code multiple times.

Conditional Statement: Code that makes decisions based on certain conditions (if/else statements).

Array: A data structure that stores multiple values in a single variable.

Debugging: The process of finding and fixing errors in code.

API (Application Programming Interface): A set of rules that allows different software components to communicate.

Version Control: A system like Git that tracks changes to code over time.

Compiler: A program that translates high-level code into machine language.

These terms help you navigate the programming environment and understand how software development works in practice.


The Connection Between Programming and Software

It's important to note that without programming, modern software would not exist. Programming is essentially the "foundation of all software." High-level applications like social media platforms, low-level system programs like operating systems, and even simple mobile apps are all created through programming techniques.

Programming technologies make it possible to send a message from Abuja to London in seconds, process real-time data from sensors in Lagos, or participate in an online game hosted in New York—all through the fundamental principles of coding and software development.


Conclusion

Programming, coding languages, and software development are inseparable in the digital age. Programming is the foundation—the need to create digital solutions. Programming languages are the structure—how developers communicate with computers. Software development is the ultimate process that brings it all together, creating applications that serve billions of people in a single digital ecosystem. 

Here's a goodnews. shortly, we will bring a live coding Practicing environment on this website where students can learn and practice coding. James, our founder and other tech gurus are working toward this implementation.


Revised Questions

1. Define computer software and explain how it differs from computer hardware, using a real-life analogy.

2. Identify and describe the three main categories of software (system, application, and programming software), giving at least one example of each.

3. Outline the stages of software development, and explain why testing and maintenance are considered critical stages in the process.

4. Discuss two major challenges in modern software development and suggest strategies developers use to address them.

5. Explain the impact of software on two different industries (e.g., healthcare and finance), highlighting specific applications that have transformed each sector.


Visit our CBT page on GST 103 to practice MCQ questions 

References

Sommerville, I. (2016). Software Engineering (10th ed.). Pearson.

Pressman, R. S., & Maxim, B. R. (2014). Software Engineering: A Practitioner’s Approach (8th ed.). McGraw-Hill Education.

Kernighan, B. W., & Ritchie, D. M. (1988). The C Programming Language (2nd ed.). Prentice Hall.

Downey, A. B. (2015). Think Python: How to Think Like a Computer Scientist (2nd ed.). Green Tea Press.

Tags