We may earn an affiliate commission when you visit our partners.

Structured Programming

Save

An Introduction to Structured Programming

Structured programming represents a fundamental paradigm in computer science, focusing on improving the clarity, quality, and development time of computer programs. It achieves this by making extensive use of subroutines, block structures (like sequences, selections, and repetitions), and loops, while discouraging or eliminating the use of simple jumps like the goto statement, which can lead to tangled, difficult-to-follow code often referred to as "spaghetti code." At its core, structured programming aims to create programs that are easier to read, understand, debug, and maintain.

For those exploring the vast field of software development, understanding structured programming offers several benefits. It provides a solid foundation for writing logical, well-organized code, a skill essential regardless of the specific programming languages or paradigms you might specialize in later. Mastering these principles can make complex problems more manageable by breaking them down into smaller, understandable modules. Furthermore, the discipline learned through structured programming enhances collaboration, as code written following these principles is generally easier for other developers to comprehend and modify.

The Origins and Evolution of Structured Programming

Understanding where structured programming came from helps appreciate its significance. Before its widespread adoption, programming often involved complex, interwoven logic that was hard to manage as programs grew.

Early Programming Practices

In the early days of computing, programmers often relied heavily on goto statements to control the flow of execution in their programs. This allowed for direct jumps from one part of the code to another. While flexible, this approach frequently resulted in programs that were incredibly difficult to follow, debug, and modify. As software projects became larger and more complex, the limitations and dangers of unstructured, goto-heavy code became increasingly apparent, leading to higher development costs and lower reliability.

The lack of clear structure made it challenging to reason about program correctness. Tracking the state of variables and the flow of control through numerous potential jump points was a significant mental burden. This environment spurred researchers and practitioners to seek better ways to organize and write computer programs.

Dijkstra's Landmark Contribution

A pivotal moment arrived in 1968 with Edsger W. Dijkstra's letter titled "Go To Statement Considered Harmful," published in the Communications of the ACM. Dijkstra argued forcefully that the unrestrained use of goto statements was detrimental to program clarity and quality. He contended that the ease with which goto could create tangled execution paths made it nearly impossible to verify program correctness systematically.

Dijkstra proposed that programming should rely primarily on more disciplined control structures: sequence (executing statements one after another), selection (choosing between paths using if-then-else logic), and iteration (repeating code blocks using loops like while or for). This approach, he argued, would make programs easier to understand, test, and prove correct, as the program's flow would be more predictable and localized.

While initially controversial, Dijkstra's arguments gained traction and heavily influenced the direction of programming language design and software development methodologies. His work laid the theoretical groundwork for the structured programming revolution.

Adoption in Influential Languages

The principles of structured programming found fertile ground in the design of new programming languages during the late 1960s and 1970s. Languages like ALGOL 60 already incorporated block structures, but later languages embraced structured concepts more fully.

Pascal, designed by Niklaus Wirth and released in 1970, was explicitly created with structured programming and teaching principles in mind. It enforced structured control flow and modularity, making it a popular choice in academic settings for introducing students to good programming practices.

You may find this book by Niklaus Wirth insightful regarding the design principles behind structured languages like Modula-2, a successor to Pascal.

Similarly, the C programming language, developed by Dennis Ritchie at Bell Labs around 1972, incorporated structured programming constructs like if-else, while, for, and functions, although it still retained the goto statement (albeit its use is generally discouraged by convention). C's efficiency and flexibility, combined with its structured capabilities, led to its widespread adoption and its influence on countless subsequent languages like C++, Java, and C#.

Understanding C is fundamental to grasping concepts used across many areas of software development.

Core Concepts of Structured Programming

Structured programming is built upon a few key ideas that promote logical organization and clarity in code. Mastering these concepts is crucial for writing effective and maintainable software.

Sequence, Selection, and Iteration

The cornerstone of structured programming lies in three fundamental control structures:

  1. Sequence: This is the default control structure. Instructions are executed in the order they appear in the code, one after another.
  2. Selection: This allows the program to choose between different paths of execution based on a condition. Common selection structures include if-then-else statements and switch (or case) statements. For example:
    
    IF temperature < 0 THEN
        PRINT "Freezing"
    ELSE
        PRINT "Not freezing"
    ENDIF
        
  3. Iteration (or Repetition): This allows a block of code to be executed repeatedly as long as a certain condition is true, or for a specific number of times. Common iteration structures include while loops, for loops, and do-while loops. For example:
    
    count = 0
    WHILE count < 5 DO
        PRINT count
        count = count + 1
    ENDWHILE
        

By exclusively using these three structures, programmers can construct any algorithm or program logic without resorting to arbitrary jumps, making the code's flow much easier to follow and predict.

Modular Design

Another vital principle is modularity, which involves breaking down a large program into smaller, self-contained units often called functions, procedures, subroutines, or modules. Each module performs a specific, well-defined task. This decomposition has several advantages:

  • Readability: Smaller modules are easier to understand than one monolithic block of code.
  • Reusability: Modules performing common tasks can be called from multiple places in the program, reducing code duplication.
  • Testability: Individual modules can often be tested independently, simplifying the debugging process.
  • Maintainability: Changes or bug fixes can often be isolated to specific modules, reducing the risk of unintended side effects elsewhere.

Structured programming encourages organizing code into these logical units, improving the overall structure and manageability of the software.

Top-Down Design Approach

Structured programming often employs a top-down design methodology. This approach starts by defining the main function or the overall task the program needs to accomplish. This main task is then broken down into smaller, more manageable sub-tasks. Each sub-task is further decomposed until the steps are simple enough to be implemented directly using basic programming instructions and the core control structures (sequence, selection, iteration).

This contrasts with a bottom-up approach, where developers might start by building small, reusable utility functions and then combine them to form larger components. While both approaches have their place, top-down design aligns naturally with the modular decomposition encouraged by structured programming, helping to ensure that the overall program structure remains logical and hierarchical.

Avoiding the 'goto' Statement

As highlighted by Dijkstra, a central tenet of structured programming is the avoidance, or at least highly restricted use, of the goto statement. While goto provides unconditional branching, its overuse can create complex, tangled control flows ("spaghetti code") that are difficult to understand, debug, and maintain. Relying instead on sequence, selection, and iteration structures forces a more disciplined and block-oriented way of thinking about program logic.

Modern programming languages designed with structured principles often provide structured alternatives for common scenarios where goto might have been used previously, such as exiting nested loops (break, continue) or handling errors (exception handling mechanisms). While goto still exists in languages like C and C++, its use is generally considered poor practice except in very specific, justifiable circumstances (like implementing state machines or optimized cleanup code in C).

These courses offer practical experience in applying these core structured programming concepts using the C language.

Structured Programming in Relation to Other Paradigms

Structured programming isn't the only way to approach software development. Understanding how it compares and relates to other major programming paradigms helps place it in the broader landscape of computer science.

Comparison with Object-Oriented Programming (OOP)

Object-Oriented Programming (OOP) emerged later than structured programming and focuses on organizing code around "objects," which bundle data (attributes) and the functions (methods) that operate on that data. Key OOP concepts include encapsulation, inheritance, and polymorphism. While structured programming focuses on control flow and procedural decomposition, OOP emphasizes data abstraction and modeling real-world entities.

However, OOP does not replace structured programming principles. Inside the methods of an object, the code itself is typically written using structured constructs (sequence, selection, iteration). OOP provides a higher level of organization, grouping related data and behavior, while structured programming provides the tools for implementing that behavior logically. Many modern languages, like Java, C++, and Python, support both OOP and structured techniques.

Contrast with Functional Programming (FP)

Functional Programming (FP) treats computation as the evaluation of mathematical functions and avoids changing state and mutable data. Key FP concepts include pure functions, immutability, recursion (often favored over iteration), and first-class functions. While structured programming manages complexity through modular procedures and controlled flow, FP manages complexity by minimizing side effects and emphasizing declarative descriptions of what to compute rather than how.

FP and structured programming represent different philosophical approaches. Structured programming is fundamentally imperative (describing steps to change state), while FP is more declarative. However, elements of functional programming are increasingly being integrated into traditionally imperative languages, leading to hybrid approaches where developers might use functional techniques within a broader structured or object-oriented framework.

Relationship to Procedural Programming

Structured programming is often considered a subset or a refinement of Procedural Programming. Procedural programming, in general, involves organizing code into procedures (functions or subroutines). Structured programming adds specific constraints, emphasizing the use of only sequence, selection, and iteration control structures and discouraging goto.

Essentially, all structured programming is procedural, but not all procedural programming is strictly structured (as some procedural code might still use goto extensively). Languages like C, Pascal, and early versions of BASIC are classic examples of procedural languages that strongly support structured programming principles.

For a deeper dive into how different programming paradigms shape language design and usage, consider exploring texts on programming language theory.

Modern Hybrid Approaches

In contemporary software development, it's rare to find large projects adhering strictly to a single paradigm. Most modern languages are multi-paradigm, allowing developers to blend structured, object-oriented, and even functional programming techniques as appropriate for different parts of a system.

For instance, a developer might use OOP to model the main components of an application, implement the internal logic of methods using structured programming constructs, and perhaps use functional programming features (like lambda expressions or stream processing) for specific data transformation tasks. The foundational principles of structured programming—clarity, modularity, and disciplined control flow—remain valuable even within these hybrid environments.

Formal Education Pathways

For those seeking a traditional academic route, structured programming concepts are typically introduced early and reinforced throughout a computer science or software engineering education.

Undergraduate Computer Science Curricula

Structured programming principles form the bedrock of introductory programming courses in virtually all undergraduate computer science (CS) programs. Typically taught using languages like Python, Java, or C/C++, these initial courses focus on teaching students how to write logical, well-organized code using sequence, selection (if/else), and iteration (loops). Concepts like functions/methods for modularity are also central.

As students progress, these foundational skills are applied in more advanced courses like Data Structures and Algorithms, where efficient and correct implementation heavily relies on structured logic. Understanding structured programming is essential for designing and implementing algorithms to solve complex problems.

Exploring a Computer Science curriculum often reveals this progressive learning path.

Graduate-Level Theory Courses

At the graduate level, while direct courses solely on "structured programming" might be rare, the underlying principles become crucial in theoretical computer science areas. Courses on programming language theory, semantics, and compiler design delve into the formal underpinnings of control structures and program execution.

Research in areas like formal methods and program verification often involves mathematically proving the correctness of algorithms and software. Structured programming's emphasis on clear control flow and modularity significantly simplifies this formal reasoning process compared to unstructured code.

Research Opportunities in Program Verification

Students interested in the theoretical aspects of software reliability can find research opportunities related to structured programming. This includes developing tools and techniques for static analysis (analyzing code without executing it) to detect potential errors, formal verification (mathematically proving program correctness against a specification), and model checking.

The predictable control flow inherent in structured programs makes them more amenable to these advanced analysis techniques, which are particularly important in developing safety-critical systems where software failures can have severe consequences.

Integration with Software Engineering Degrees

Structured programming is also a core component of Software Engineering programs. Courses on software design, architecture, testing, and maintenance all build upon the assumption that developers can write clear, modular, and well-structured code. Methodologies like top-down design are directly taught and applied.

Software engineering emphasizes practical aspects like code readability, maintainability, and collaboration – all benefits directly facilitated by adhering to structured programming principles. Understanding these principles is non-negotiable for aspiring software engineers aiming to build robust and scalable systems.

Online Learning and Self-Study

Beyond traditional university programs, numerous online resources offer flexible and accessible pathways to learn structured programming principles and apply them effectively.

Fundamental vs. Advanced Course Types

Online platforms host a wide array of courses related to programming. Beginners should look for introductory courses in languages like Python, C, or Java that explicitly cover fundamental control structures (sequence, selection, iteration) and functions/procedures. These courses lay the essential groundwork.

More advanced courses might delve into specific applications, design patterns that leverage structured principles, or explore how structured programming concepts apply within different paradigms like object-oriented programming. Some courses focus specifically on languages like COBOL, where structured programming is paramount for maintaining legacy systems.

OpenCourser makes it easy to browse programming courses and filter by skill level to find the right starting point or advanced topic.

These courses offer a range of introductions, from general concepts to language-specific structured approaches.

Project-Based Learning Strategies

Simply watching videos or reading tutorials is often insufficient for mastering programming concepts. Applying structured programming principles through hands-on projects is crucial. Start with small, well-defined problems and gradually increase complexity.

Ideas for projects include building simple calculators, text-based games, data processing tools, or utilities. Focus on breaking the problem down using top-down design, implementing logic using only structured constructs, and organizing code into reusable functions. Building a portfolio of such projects demonstrates practical skills to potential employers.

Many online courses incorporate projects, providing guidance and structure. Don't hesitate to save courses that interest you to your personal list on OpenCourser using the "Save to List" feature, which you can manage here.

Open-Source Code Analysis Techniques

Another valuable self-study technique is reading and analyzing existing code, particularly from well-regarded open-source projects. Look for projects written in languages like C or Pascal, or examine the internal implementation of functions and methods in larger OOP projects.

Pay attention to how experienced developers structure their code, use control flow constructs, and break down problems into modules. Try to understand the logic and identify patterns. This can provide valuable insights into practical application and coding style beyond what textbooks or introductory courses might cover.

Platforms like GitHub host vast amounts of open-source code across numerous domains, offering endless learning opportunities.

Community-Driven Learning Resources

Engaging with programming communities online can significantly accelerate learning. Websites like Stack Overflow, Reddit forums (e.g., r/learnprogramming), and various Discord servers offer places to ask questions, share code for review, and learn from others' experiences.

Participating in coding challenges or contributing to small open-source projects can provide practical experience and feedback. Explaining concepts to others or helping solve their problems can also solidify your own understanding. The collaborative nature of these communities mirrors real-world software development environments.

Career Applications of Structured Programming

While often learned early in a programmer's journey, the principles of structured programming remain highly relevant and directly applicable in various professional roles and industries.

Embedded Systems Development

Structured programming, particularly using languages like C and C++, is prevalent in embedded systems development. These systems, found in everything from cars and medical devices to industrial controllers and consumer electronics, often operate under tight resource constraints (memory, processing power). The efficiency, predictability, and direct hardware control offered by languages like C, combined with structured programming's clarity, are highly valued.

Developers in this field, often titled Embedded Systems Engineers, need a strong grasp of structured logic to write reliable and efficient code for microcontrollers and specialized hardware. Debugging is often more challenging in embedded environments, making well-structured, understandable code essential.

Safety-Critical Software Engineering

In domains where software failure can have catastrophic consequences—such as aerospace, medical devices, nuclear power control, and automotive systems—structured programming principles are non-negotiable. The emphasis on clear, predictable control flow and modularity aids in verification and validation processes required by stringent safety standards (e.g., DO-178C in aviation).

The ability to rigorously test and formally verify code is paramount. Structured programming makes code more amenable to static analysis tools and formal methods, increasing confidence in its correctness and reliability. Roles in this area often require meticulous attention to detail and adherence to strict coding standards based on structured principles.

Legacy System Maintenance Roles

Many large organizations, particularly in finance, insurance, and government, still rely on core systems built decades ago using languages like COBOL. These systems often house critical business logic and data. Maintaining and modernizing these legacy systems requires developers proficient in the original language and the structured programming techniques used to build them.

While COBOL might seem dated, demand persists for developers who can understand, modify, and integrate these vital systems. Structured programming skills are essential for navigating and safely updating complex, aged codebases.

These courses provide introductions and practical skills in COBOL, a language where structured programming is key for maintainability.

For those working with mainframe COBOL, reference books can be invaluable.

Code Optimization Specialties

In performance-critical applications, such as high-frequency trading, scientific computing, game development, or operating system kernels, optimizing code for speed and efficiency is crucial. While modern compilers are sophisticated, understanding structured programming and low-level execution flow (often in C or C++) allows developers to write code that performs well.

Specialists in performance optimization need a deep understanding of how structured constructs translate to machine instructions and how to organize code for efficient cache usage and minimal overhead. This often involves careful algorithm design and implementation, grounded in structured programming discipline.

Understanding kernel development often requires strong C and structured programming knowledge.

Structured Programming in Modern Software Development

Despite the rise of newer paradigms, the core ideas of structured programming continue to influence and find relevance in contemporary software development practices.

Role in DevOps Pipelines

Modern DevOps practices emphasize automation, continuous integration, and continuous delivery (CI/CD). Well-structured code is inherently easier to automate testing for. Modular code with clear inputs and outputs simplifies the creation of unit tests and integration tests, which are essential components of robust CI/CD pipelines.

Code that follows structured principles is generally more predictable, reducing the likelihood of unexpected failures during automated builds and deployments. The clarity fostered by structured programming aids collaboration among development and operations teams.

Impact on Code Maintainability

Maintainability remains a critical concern in software development, as a significant portion of a software system's lifecycle cost is spent on maintenance (bug fixing, updates, feature additions). Structured programming directly addresses maintainability by promoting code that is easier to read, understand, and modify safely.

Clear control flow, modular design, and avoidance of complex jumps like goto significantly reduce the cognitive load required for a developer to understand a piece of code written by someone else (or by themselves months earlier). This translates to faster bug fixes, easier feature implementation, and lower long-term maintenance costs, regardless of whether the overarching paradigm is OOP, functional, or procedural.

Cloud Computing Implications

In cloud environments, applications are often designed as microservices or serverless functions. While these architectural patterns operate at a higher level than individual control structures, the internal implementation of each microservice or function still benefits immensely from structured programming principles.

Writing clear, modular, and testable functions is crucial for building reliable cloud-native applications. The ability to reason about the behavior of individual components, facilitated by structured code, is essential when composing larger systems in the cloud.

Adaptation with AI-Assisted Coding Tools

The emergence of AI-powered coding assistants (like GitHub Copilot, Amazon CodeWhisperer) is changing how developers write code. These tools can generate code snippets, suggest completions, and even write entire functions. However, their effectiveness often relies on clear context and well-defined prompts.

A developer with a strong understanding of structured programming is better equipped to guide these tools effectively, prompt them for logical and well-organized code, and critically evaluate the suggestions provided. Furthermore, understanding structured principles helps in debugging and refining AI-generated code to ensure it meets quality and maintainability standards.

Ethical Considerations and Program Reliability

The principles of structured programming have implications beyond just code organization; they tie into the reliability and ethical responsibilities associated with software development, especially in critical systems.

Fail-Safe System Design

In systems where failure can cause harm, designing for fail-safety is crucial. Structured programming's emphasis on predictable control flow and modularity aids in designing systems where potential failures can be anticipated, detected, and handled gracefully. Clear, structured code makes it easier to implement error handling, redundancy, and fallback mechanisms.

The ability to analyze and reason about program behavior, which is enhanced by structured code, is fundamental to building confidence that a system will behave safely even in unexpected circumstances or partial failure modes.

Medical and Aerospace Applications

Industries like medicine and aerospace have extremely high standards for software reliability due to the potential impact on human life. Regulatory bodies often mandate rigorous development processes and coding standards that heavily emphasize principles rooted in structured programming.

The need for verifiable correctness, testability, and maintainability over long lifecycles makes structured approaches essential. Unstructured or overly complex code introduces unacceptable risks in these domains. Developers working on software for pacemakers, flight control systems, or infusion pumps must adhere to disciplined, structured practices.

Formal Verification Processes

Formal verification involves using mathematical techniques to prove that software meets its specified requirements. This provides a much higher level of assurance than testing alone. Structured programming significantly facilitates formal verification.

The well-defined semantics of sequence, selection, and iteration structures allow for systematic logical analysis. Proving properties about programs filled with arbitrary goto jumps is vastly more complex, often intractable. Therefore, adherence to structured principles is often a prerequisite for applying formal verification methods effectively, particularly in high-assurance systems.

Technical Debt Management

Technical debt refers to the implied cost of rework caused by choosing an easy (limited) solution now instead of using a better approach that would take longer. Poorly structured, hard-to-understand code is a major source of technical debt. While shortcuts might seem faster initially, the long-term cost of maintaining, debugging, and extending unstructured code can be enormous.

Adhering to structured programming principles from the outset is a key strategy for preventing the accumulation of technical debt. Investing time in writing clear, modular, and well-structured code pays dividends throughout the software lifecycle by reducing future maintenance effort and risk.

Frequently Asked Questions (Career Focus)

For those considering how structured programming fits into their career aspirations, here are answers to some common questions.

Is structured programming still relevant in 2024?

Absolutely. While newer paradigms like OOP and functional programming are widespread, the core principles of structured programming—sequence, selection, iteration, modularity, and clear control flow—remain fundamental to writing good code in almost any language or paradigm. They are the building blocks upon which more complex systems are constructed. Understanding structured programming is essential for writing maintainable, readable, and reliable software, skills that are always in demand.

What entry-level roles value this skill?

Nearly all entry-level software development roles require a solid understanding of structured programming principles. This includes roles like Junior Software Engineer, Web Developer (front-end and back-end), Application Developer, and QA Automation Engineer. Even roles adjacent to coding, like Technical Support or IT, benefit from understanding logical program flow. Specific roles in embedded systems or legacy system maintenance may place an even stronger emphasis on structured techniques, particularly with languages like C or COBOL.

How does it impact software developer salaries?

Proficiency in structured programming is generally considered a baseline requirement for software developers, rather than a skill that commands a specific premium on its own. However, the consequences of applying these principles well—writing clean, maintainable, reliable code—directly contribute to a developer's effectiveness and value. Developers known for producing high-quality, well-structured code are typically more successful, leading to better career progression and potentially higher salaries over time. General salary data for software developers can often be found on government sites like the U.S. Bureau of Labor Statistics, though actual figures vary widely.

Can self-taught programmers master this paradigm?

Yes, definitely. Structured programming concepts are logical and can be learned effectively through self-study using online courses, books, tutorials, and practice. The key is disciplined practice: consciously applying the principles of modularity and structured control flow in projects, seeking feedback (e.g., through online communities), and analyzing well-structured code written by others. Platforms like OpenCourser offer resources tailored for independent learners, including foundational courses and project ideas. Check the Learner's Guide for tips on effective self-study.

This introductory course provides a solid foundation for self-learners aiming for professional programming skills.

What industries prioritize structured programming?

While relevant everywhere, certain industries place a particularly high emphasis on structured programming due to needs for reliability, maintainability, efficiency, or compliance with standards. These include:

  • Safety-Critical Systems: Aerospace, automotive, medical devices, industrial control.
  • Finance and Insurance: Often involves maintaining large, complex legacy systems (e.g., COBOL) and requires high reliability.
  • Embedded Systems: Resource constraints often necessitate efficient, clear code typically written in C/C++ using structured techniques.
  • Operating Systems and Compilers: Foundational software requires deep understanding of control flow and efficiency.

How to demonstrate structured programming skills in interviews?

Interviewers assess structured programming skills through several means:

  • Coding Challenges: They evaluate if your solution uses appropriate control structures (loops, conditionals), is broken down into logical functions/modules, is easy to read, and avoids unnecessary complexity or goto-like patterns.
  • Code Review Exercises: You might be asked to analyze a piece of code and identify areas for improvement regarding structure, clarity, and maintainability.
  • System Design Questions: Explaining how you would break down a larger problem into smaller, manageable modules demonstrates top-down thinking.
  • Discussing Past Projects: Clearly articulating the structure of projects you've worked on and the rationale behind your design choices showcases your understanding. Emphasize readability and maintainability.
Be prepared to write clean, well-organized code and explain your thought process clearly, focusing on logical flow and modularity.

Structured programming is more than just a historical footnote; it's a foundational element of modern software development. Its principles of clarity, modularity, and disciplined control flow are essential for writing effective, maintainable, and reliable code. Whether you are just beginning your programming journey, transitioning careers, or are an experienced developer, a strong grasp of structured programming provides a solid base upon which to build and refine your technical skills. Explore the resources available on OpenCourser to deepen your understanding and find courses that fit your learning goals.

Path to Structured Programming

Take the first step.
We've curated ten courses to help you on your path to Structured Programming. Use these to develop your skills, build background knowledge, and put what you learn to practice.
Sorted from most relevant to least relevant:

Share

Help others find this page about Structured Programming: by sharing it with your friends and followers:

Reading list

We've selected six books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Structured Programming.
Classic text on structured programming. It was written by Niklaus Wirth, who is considered one of the pioneers of structured programming. The book covers the fundamental concepts of structured programming, such as data types, control structures, and functions, as well as more advanced topics such as object-oriented programming and concurrency.
Comprehensive guide to structured programming using the COBOL programming language.
Presents a logical approach to structured programming. It covers the fundamental concepts of logic, such as propositional logic and predicate logic, and shows how these concepts can be used to develop structured programs. The authors have a PhD in Computer Science and have extensive experience in software development.
Provides a comprehensive guide to structured programming using the C programming language. It covers the fundamental concepts of structured programming, such as data types, control structures, and functions, as well as more advanced topics such as object-oriented programming and system programming. The author has a PhD in Computer Science and has extensive experience in software development.
Comprehensive guide to structured programming in Spanish. It covers the fundamental concepts of structured programming, such as data types, control structures, and functions, as well as more advanced topics such as object-oriented programming and database programming. The author has a PhD in Computer Science and has extensive experience in software development.
Presents a modular approach to structured programming. It covers the concepts of modularity, encapsulation, and information hiding, and shows how these concepts can be used to develop large, complex software systems. The author has a PhD in Computer Science and has extensive experience in software development.
Table of Contents
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser