Software Fundamentals
Joaquin Romero Flores
Business Analytics, Data Science | Social & Engineering Systems
Software Engineering is not just a field of study but an essential gateway to the vast world of technology. To navigate effectively in this digital realm, it's crucial to understand seemingly simple yet technically profound processes, such as emailing. This everyday act involves a series of intricate steps:
?
?
Sending an email might seem mundane, but it's a testament to the complexity and wonder of modern engineering. Despite its intrinsic complexity, it's a trivial action in the vast spectrum of what current technology allows us to do.
?
?
The Fundamentals of Computing: Bytes and Bits
?
The Byte: The Fundamental Unit of Digital Information
?
What is a Byte? The byte is a fundamental unit in technology and telecommunications, composed of 8 bits. Although no universal symbol represents it, different conventions are adopted, such as "B" in English-speaking countries and "o" in French-speaking countries. It is often also known as an "octet," emphasizing its composition of eight parts.
?
Importance of the Byte: The byte is crucial for measuring digital device storage capacity and network data transfer speed. Its ability to represent 256 combinations of zeros and ones makes it incredibly versatile. A 1-megabyte file, for example, represents approximately one million bytes of information, underscoring the importance of understanding bytes for effective management of digital storage.
?
Brief History of the Byte: the history of the byte dates back to the 1950s when it was used to store information in the earliest computers. Initially, the number of bits in a byte varied until, in the 1960s, it was standardized to 8 bits.
?
The Bit: The Smallest Unit of Data
?
What is a Bit? The bit is the most basic unit of information in computing, representing a binary state: one or zero, on or off, true or false. Its origin is associated with the operation of transistors, where an electrical impulse indicates one state and its absence, another.
?
The Bit in Practice: Understanding bits is essential for performing calculations and operations in the binary system, the innate language of computers. This binary numbering allows encoding all types of data – numbers, letters, images – into series of ones and zeros, which are then decoded for interpretation in more accessible formats.
?
Grouping of Bits: Although bits can be grouped in different lengths, the standard is to group eight to form a byte. This standard facilitates the encoding and decoding of information in computational systems.
?
Delving into the Byte-Bit Relationship
?
Number of Bits in a Byte: A byte comprises 8 bits and can represent values from zero to 255. Each value has a specific meaning, usually interpreted through the ASCII table, an essential tool in computing that relates alphanumeric characters to numerical values.
?
The Most Significant Bit: within a byte, the bit with the highest value is known as the most significant or MSB. This bit, usually located on the far left, plays a crucial role in determining the total value of the byte.
?
Equivalence Table: From Bytes to Terabytes
?
Fundamentals of Electronic Circuits and Computer Architecture
?
Understanding Electronic Circuits
?
The Heart of Technology – Electricity: electricity is the soul of our modern technology. Produced in power plants and transmitted to our homes, it is a constant flow of electrons characterized by several essential parameters:
?
?
Applications of Electricity
Electricity is remarkably versatile:
?
Desktop Architectures: An Inside Look
?
CPU - The Brain of the Computer: The Central Processing Unit (CPU) is the core of any computer. Its performance is measured in Gigahertz (GHz), indicating the speed at which it processes instructions, and in Cores, determining how many instructions it can handle simultaneously. Modern CPUs are made with silicon, a key element in semiconductor technology.
?
BIOS - The System Starter: The Basic Input/Output System (BIOS) is an essential chip on the motherboard. It acts as a boot operating system, initializing and configuring the system's hardware. If it detects problems, it can prevent system startup to avoid damage.
?
Storage - Hard Drive: The hard drive is the central repository of a computer's information, storing both the operating system and applications.
?
RAM - The Fast Intermediary: Random Access Memory (RAM) is a critical component that mediates between the operating system and the CPU. It is known for its high speed and volatile nature, meaning it only retains data while powered by electricity.
?
GPU - The Data Visualizer: The Graphics Processing Unit (GPU) is responsible for everything displayed on the screen, from system startup to video playback and gaming. Equipped with its RAM (VRAM), GHz, and Cores, the GPU communicates with the CPU through a PCI-Express socket and has direct access to the RAM.
?
Tips
?
?
Exploring the System on a Chip (SoC) and Embedded Systems
?
The Rise of SoC: A Revolution in Miniaturization
?
Introduction to System on a Chip: represents a significant evolution in computing technology. It's a compact integration of multiple computer components into a single chip. This innovation allows smaller devices, like smartphones and tablets, to possess the capacity and speed of traditionally larger systems.
?
Critical Components of an SoC
?
Embedded Systems: Specialized and Ubiquitous
?
Embedded systems are designed to perform specific functions and are often integrated into the device's motherboard. These systems are found in various everyday applications, from taxi meters and access control systems to the electronic components of vending machines.
?
Critical Insights on SoC and Embedded Systems
?
?
Innovations in Technology: Raspberry Pi, Arduino, and Cache Memory
?
Raspberry Pi - A Microcosm of Computing: The Raspberry Pi is a compact board functioning as a motherboard, equipped with all necessary components for various computing projects like cell phones, tablets, or smartwatches. This device stands out for its versatility and accessibility, making it an ideal tool for technology enthusiasts and professionals.
?
The SoC of Raspberry Pi: At the heart of the Raspberry Pi lies a crucial chip, the system on a Chip (SoC). This SoC houses several essential components, such as RAM and the necessary storage space for the BIOS. Other chips on the board handle specific functions, like controlling USB inputs and managing internal electrical connections. It's important to note that the primary storage for user data is not included in the SoC.
?
Arduino - Flexibility in Electronic Projects: Arduino is an open-source hardware platform with a microcontroller within a board and a user-friendly development environment. Its design is aimed at facilitating the integration of electronics in multidisciplinary projects.
?
Applications of Arduino: This platform allows the development of autonomous devices that can interact with other devices and software. Its flexibility and ease of use make it ideal for projects requiring control over hardware, from interactive art to home automation solutions.
?
Drivers: The Link Between Hardware and Software
?
A driver is a specific program that acts as an intermediary between a device's hardware and the operating System's software. It enables the software to "communicate" with the hardware, ensuring that instructions and functions are executed correctly.
?
Cache Memory - Speed and Efficiency: cache memory is located within the CPU and acts as an ultra-fast version of RAM. It temporarily stores the most critical data and instructions for operating the system and applications.
?
Benefits of Cache Memory
?
Tips
?
?
Advances in Technology: Information Management
?
Drivers - Communication between Software and Hardware: drivers are essential programs that allow the operating system software to interact with and control the device's hardware. They act as translators between the software instructions and hardware actions, ensuring that functions are executed correctly.
?
Functions and Types of File Systems
?
Main Functions: Include allocating space to files, managing free space, and structuring the stored information, which is then represented through a file manager.
?
Common Types of File Systems:
?
Management and Recovery of Data on the Hard Drive
?
Accessing and Deleting Data
?
Data Recovery and Permanent Deletion Software
?
Data Recovery
?
Secure Data Deletion
?
The Interconnection between the CPU, RAM, and Hard Drive
?
The Importance of Data Buses in Computing
?
Connection between RAM, Hard Drive, and CPU: The connection between the RAM, hard drive, and Central Processing Unit (CPU) is fundamental to computer architecture. This connection is achieved through a Data Bus, a crucial system for transporting and managing information.
?
What is a Data Bus?: A Data Bus is a set of electrical connections transporting data between various computer components. It may consist of a physical connector or an integrated circuit that facilitates data transfer between the computer's memory, the CPU, and other devices.
?
Specific Connections: RAM and Hard Drive
?
Connection between CPU and RAM
?
Connection between CPU and Hard Drive
Hard drives connect to the CPU via specialized data buses like SATA (Serial Advanced Technology Attachment) and IDE (Integrated Drive Electronics).
?
Tips
?
?
The Function of the GPU and the Importance of Peripherals in Computing
?
The GPU: Key to Screen Visualization
?
The Process of File Visualization: When we open a file on a computer, its display on the screen is primarily handled by the Graphics Processing Unit (GPU), not the Central Processing Unit (CPU).
?
Features and Functions of the GPU
Communication with the CPU: The GPU interacts with the CPU via a PCI-Express socket, a dedicated channel that ensures efficient and rapid data transfer.
Dedicated Processing: The GPU has its processing cores and RAM, allowing it to specialize in graphic tasks.
Divide and Conquer: The GPU divides the screen into a matrix for efficient representation, assigning each core to process a part of this matrix. This division of labor results in a much faster and more efficient image representation than if the CPU had to process each pixel individually.
Peripherals - Expanding the Functions of Computers: Peripheral devices can be connected to and disconnected from a computer to expand its capabilities and functionalities. Common examples include printers, microphones, and external disk drives.
The Role of Peripherals in Computing: Peripherals allow users to interact with the computer and the external world in more diverse and specialized ways. These devices add functionalities not built into the core hardware of the computer, enhancing the user experience and expanding the possibilities of use.
?
Tips
?
?
Levels of Permissions in Operating Systems: The Ring Model
?
The Ring Structure in Operating Systems
?
Introduction to the Ring Model: Modern operating systems use a ring architecture to organize permissions and access levels. This structure segments operations and processes into different layers or rings, each with a specific level of privileges and access to hardware and system resources.
?
The Four Rings of Security and Functionality
First Ring - Kernel: The Kernel is the fundamental layer of the operating system, with total control over system resources.
?
Second Ring - Essential Drivers: The drivers in this ring are critical for the essential operation of the system, controlling key devices like the display, keyboard, and mouse.
?
Third Ring - Secondary Drivers: This layer contains drivers with fewer privileges than those in the second ring.
?
Fourth Ring - Applications: Applications run at this level, loading into RAM to perform various tasks.
?
Tips
?
Internet Connection: Understanding Networks and Protocols
?
How Do We Connect to the Internet?
?
The Complex Process of Internet Connection: Connecting to the Internet goes beyond simply connecting our computers to a cloud server. It involves a series of data transfer protocols and specialized hardware to transmit data packets during our browsing.
?
Devices and Protocols in Network Connection
?
?
Routers and WiFi
WiFi Router: This device can emit a wireless signal to connect devices to the network. To establish a connection, it requires specific information:
MAC Address: A unique identifier for each network interface embedded in the device's hardware, essential for identification on the network.
?
Combined Functionality of Devices
Routers can sometimes function as switches, allowing wired and wireless connections. In some cases, all these devices (Ethernet, switches, routers) are integrated into a single device, like the Internet Service Provider (ISP) modem.
?
Tips
?
?
Understanding the World of Internet Networks and Protocols
?
The Modem: Bridge between the Router and the Internet
?
Functions and Types of Modem Connections: The modem is the device that connects the router (and the devices connected to it) to the Internet. There are various connection forms, such as ADSL (via a telephone cable), 4G/LTE (through radio antennas), and the optimal fiber optics in modern technology.
?
Combined Capabilities of a Modem: Sometimes, the modem can perform the functions of a router and a switch. Some modems emit WiFi, while others only provide wired connections through Ethernet ports.
?
Networks and Protocols
?
Function and Configuration of Routers: routers act as gateways between different networks. They assign unique internal IP addresses using DHCP and use the IP address provided by the Internet provider for external connections. IP assignments are based on the MAC address of each device, ensuring effective network management.
?
Network Ports and Protocols
?
领英推荐
IP Addresses and Network Masks
?
What is an IP Address?: An IP address is a unique number assigned to a device on a network, following the IP protocol. It consists of 4 bytes (32 bits) and can be public (for the Internet) or private (for local networks).
?
Functioning and Structure of IP Addresses: The router assigns IP addresses using DHCP, establishing connection and communication in the network. IP addresses are divided into sections, indicating the network and the specific device within that network.
?
Network Masks and IP Addresses
?
Tips
?
?
Understanding Internet Infrastructure and Navigation
?
Types of IP Addresses and Network Masks
?
Classification of IP Addresses
IP addresses are classified A, B, and C based on their standard network masks:
?
A variable subnet mask is an advanced tool for more efficiently segmenting IP networks. In these masks, segments marked with 255 indicate the network portion, while the 0s correspond to the hosts or clients.
?
Internet Connection: Beyond Satellites
?
Reality of Internet Infrastructure: Contrary to popular belief, most Internet connections depend not on satellites but on a global network of undersea cables. These cables, whether fiber optic or copper, are the backbone of the Internet, connecting different points of the world.
?
Network Vulnerability: Despite their importance, this infrastructure is surprisingly fragile. Undersea cables can be damaged by various causes, such as ship anchors, affecting global connectivity.
?
Fiber Optics: The Information Highway
?
What is Fiber Optics? Fiber optics, composed of dielectric filaments, is the preferred medium for high-speed data transmission. Despite its efficiency, fiber optic cables are delicate and susceptible to damage, which can lead to interruptions in Internet service.
?
Domains and Domain Name System (DNS)
?
What is a Domain?: A domain is a unique name assigned to a website, making it easier to remember and access instead of using a numeric IP address.
?
Functioning of DNS: DNS, or Domain Name System, acts as a directory linking domains to their corresponding IP addresses. It allows users to change their domain's address, such as when changing hosting providers.
?
Tips
?
?
Internet Navigation: QoS, CDN, and Connection Speed
?
Quality of Service (QoS) in Internet Providers
?
Managing Distant Connections by ISPs: Internet service providers use QoS to manage connections to distant servers efficiently. Through QoS, connection speeds are regulated based on the service accessed, prioritizing some traffic over others.
?
Metropolitan Area Networks (MAN) for Nearby Connections: For closer connections, MANs, which are economically more viable and offer better performance, are established.
?
Circumventing QoS with CDN
A CDN (Content Delivery Network) simulates closer connections to the user, improving browsing speed. A CDN stores copies of static content, such as images or videos, reducing loading time and access costs.
?
Speed on the Internet - Key Factors
?
Internet Browsing Experience and Connection Speed: The quality of Internet browsing can be affected by several factors, including connection speed.
?
Bandwidth and Ping: Components of Internet Speed
?
Client/Server Model in the Web
Complexity in Modern Web Development: Developing a website involves different specializations, like Frontend and Backend, each with critical but distinct functions.
?Interdependence of Frontend and Backend: In the Client/Server model, the Frontend represents the part the user (client) interacts with, while the Backend deals with the logic and data processing (server). Both aspects are essential and complementary for the effective functioning of a website.
?
Tips
?
?
Exploring the World of Web Development: Frontend, Backend, and Communication Protocols
?
Difference Between Frontend and Backend
?
Frontend - The User Interface: The front end of a website is what users see and interact with directly. It includes elements like text, buttons, images, and animations. It is developed using technologies like HTML, CSS, and JavaScript.
?
Backend - The Logic Behind the Scene: The backend refers to the operations that occur in the background when a user interacts with a site. It includes data processing, database connections, and code execution that makes the site function. It is based on languages and technologies like Python, Go, Node.js, and Java.
?
The Client-Server Model
?
Client-Server Interaction Process: In this model, the client (browser) and the server (backend) interact to deliver a complete web experience. The client sends requests to the server via a URI, and the server processes these requests, querying databases if necessary. Then, the server returns a response (often in JSON format) that the browser interprets and displays to the user.
?
How a Website Works
?
Internet Browsing Process:
?
Importance of Cookies: Cookies are stored data between the server and the browser. They are helpful but can affect loading speed if used excessively.
?
Internet and Communication Protocols
?
The Vastness and Complexity of the Internet: The Internet is a network of protocols and connection methods, each with unique purposes and characteristics, from security to transmission speed.
?
TCP/IP vs UDP: Data Transmission Protocols
?
Tips
?
?
Deciphering the Vast World of the Internet and its technologies
?
The Depth and Complexity of the Internet
?
Diversity of Protocols and Connections: The Internet is a complex network of protocols and forms of connection. From the evolution in connection speeds to the variety in data transmission and reception, the Internet is much broader than is commonly perceived.
?
Types of WiFi and Encryption Standards
?
Evolution of WiFi Standards: WiFi standards have evolved significantly from the first 802.11 standard in 1997 to the more advanced 802.11AC in 2013, offering higher speeds and efficiency.
?
WiFi Encryption: Encryption methods, including WEP, WPA, WPA2, and WPA3, have enhanced the security of WiFi connections, protecting transmitted data.
?
Other Crucial Concepts in the Internet
?
Diverse Technologies and Tools
TOR: A secure network used by journalists and activists.
Firewalls: Essential protocols for network security.
Sockets: Enable persistent connections used in online chat and gaming.
Tethering: Sharing the Internet from a mobile device.
P2P and Mesh Networks: Direct connection methods and advanced networks to improve connectivity.
Multi-WAN Round Robin: A technique to distribute Internet traffic evenly among multiple ISPs.
Static vs. Dynamic IP: Differences in stability, security, and configuration.
VPN: A network that allows simulating different geographical locations.
TTL: The maximum time a data packet waits before being canceled.
Packets and SYN/ACK in TCP: Fundamental data control and transmission elements.
?
Tips Based on Information
?
?
Operating Systems: Windows, Linux, Mac, iOS, and Android
?
Concept of Operating System
?
Functions of an Operating System: An Operating System (OS) is a set of programs that acts as an intermediary between the user and the computer hardware. It facilitates interaction with peripheral devices and manages system resources through its drivers.
?
Common Operating Systems
?
Windows - The Microsoft Giant
?
Linux - The Server Champion
?
Android - Leader in Mobile
?
FreeBSD - The Base for Embedded Systems
?
MacOS - Apple's Offering
?
Tips
?
?
Permission Management and Mobile Operating Systems
?
Permissions, Process Levels, and Execution Privileges
?
Importance of Permissions in Security: File and process permissions are crucial for the security of a computer or server. They determine who can read, modify, or execute essential files.
?
Permission System in Operating Systems
?
Fundamentals of Mobile Operating Systems
?
Security and Access in Mobile Operating Systems: Mobile operating systems like Android have strict security measures for installing applications and accessing hardware. It's essential to be cautious with the applications installed, especially regarding their required permissions.
?
Functioning of Mobile Operating Systems
?
Tips
?
?
Exploring Key Concepts in Technology and Software Engineering
?
Chips in Cards: SIM Cards are SoCs (Systems on Chip) that include a CPU, RAM, and read-only memory with an integrated operating system (OS). These chips are also found in credit and workplace access cards, functioning as mini-computers.
?
Unix - A Pioneer Among Operating Systems: Unix is a multitasking and multi-user operating system derived from AT&T Unix, developed in the 1970s at Bell Labs by Ken Thompson, Dennis Ritchie, and others. It represents one of the first operating systems, setting a standard for future developments.
?
What is a Sandbox?: A sandbox is an isolated environment within the operating system for the safe and controlled execution of programs. It restricts access to disk, memory, external devices, inspection of the host system, and network connectivity, providing a controlled environment for application execution.
?
GNU General Public License (GPL): GPL is a series of free software licenses created by Richard Stallman for the GNU Project. These copyleft licenses ensure that any derivative work is distributed under the same license terms, promoting the freedom to use, study, modify, and distribute the software.
?
Proprietary Software: Proprietary software has copyright with use, distribution, and modification restrictions imposed by its creators. Unlike free software, proprietary software maintains ownership and control of the developer or company.
?
Kernel: The Core of Operating Systems: The Kernel is a critical program that forms the central core of an operating system, operating in ring 0, the most privileged layer of the system.
?
Embedded Systems: Embedded systems are designed to perform specific functions within a real-time computing system. Unlike PCs, these systems are integrated into the motherboard and used in various applications, from household appliances to complex navigation systems.
?
Tips
?
?
Understanding Metadata, File Extensions, and Data Compression
?
Metadata, Headers, and File Extensions
?
?
How Image and Video Formats Work
?
?
File Compression with Binary Trees
?
?
Tips
?
?
Innovation in Technology: Neural Networks, Raspberry Pi, and Sustainable Software
?
Neural Networks: Fundamentals and Applications
?
Understanding Neural Networks: Neural Networks (NN) are based on multiplying inputs by weights and applying activation functions such as linear regression or sigmoid function. The weights, initiated randomly or through statistical methods, are crucial in the machine learning (ML) model and are adjusted by the algorithm, not manually. Although the activation functions and optimization methods may seem complex, they are accessible concepts with basic knowledge of precalculus, linear algebra, and calculus.
?
Principles of Sustainable Software Engineering
?
Eight Key Principles for Sustainable Software
?
Tips
?