Everything about Programming complexity
Attribute of a software system
Programming complexity is a term that includes software properties that affect internal interactions. Several commentators distinguish between the terms "complex" and "complicated". Complicated implies being difficult to understand, but ultimately knowable. Complex, by contrast, describes the interactions between entities. As the number of entities increases, the number of interactions between them increases exponentially, making it impossible to know and understand them all. Similarly, higher levels of complexity in software increase the risk of unintentionally interfering with interactions, thus increasing the risk of introducing defects when changing the software. In more extreme cases, it can make modifying the software virtually impossible. Wikipedia →
🧭 Start here: a 6-step reading path
- Read the overview: Programming complexityA 5-minute orientation
- Skim a recent paper: Rademacher Complexity for Enhancing the Generalization of Genetic Programming for Symbolic RegressionInfluential work since 2022
- Pick up a classic book: Parallel Processing and Applied MathematicsThe most-reprinted book on the subject
- Read the landmark paper: Complexity and expressive power of logic programmingCited 441 times
- Go sideways: Coupling (computer programming)A closely related topic
- Go sideways: Cohesion (computer science)A closely related topic
📖 Definitions
No dictionary entry for this exact phrase.
🗂️ The subject at a glance
🏆 Landmark papers (most cited)
Complexity and expressive power of logic programming
On the complexity of integer programming
Neural networks for computation: number representations and programming complexity
Computational complexity of stochastic programming problems
Computational complexity of parametric linear programming
Linear programming, complexity theory and elementary functional analysis
A comment on “computational complexity of stochastic programming problems”
The complexity of dynamic programming
🆕 Influential since 2022
Rademacher Complexity for Enhancing the Generalization of Genetic Programming for Symbolic Regression
A Unifying Complexity Certification Framework for Active-Set Methods for Convex Quadratic Programming
Task Complexity and the Skills Dilemma in the Programming and Control of Collaborative Robots for Manufacturing
Integer programming in parameterized complexity: Five miniatures
High-efficiency reduced space sequential convex programming using low-complexity matrix inversion
📚 Books worth reading
Parallel Processing and Applied MathematicsRoman Wyrzykowski · 2003
Introduction to automata theory, languages, and computationJohn E. Hopcroft, Jeffrey D. Ullman · 1979
Computational MathematicsRobert E. White · 2003
Algorithms and ProgrammingAlexander Shen · 1996
Languages and machinesThomas A. Sudkamp · 1988
Computers and GamesH. Jaap van den Herik, Yngvi Björnsson · 2003
Think Complexity: Complexity Science and Computational ModelingAllen B. Downey · 2012
Understanding ComputationTom Stuart · 2013
Ranked by number of editions on Open Library, a rough measure of how lasting a book is.
🔗 Related topics
- Coupling (computer programming) In software engineering, coupling is the degree of interdependence between software modules, a measure of how closely connected two routines or modules…
- Cohesion (computer science) In computer programming, cohesion refers to the degree to which the elements inside a module belong together. In one sense, it is a measure of the strength…
- Weighted Micro Function Points Weighted Micro Function Points (WMFP) is a modern software sizing algorithm which is a successor to solid ancestor scientific methods as COCOMO, COSYSMO…
- Efferent coupling Efferent coupling is a coupling metric in software development. It measures the number of data types a class knows about. This includes inheritance, interface…
- Multidimensional scaling Multidimensional scaling (MDS) is a means of visualizing the level of similarity of individual cases of a data set. MDS is used to translate distances…
- Software quality In the context of software engineering, software quality refers to two related but distinct notions: Software's functional quality reflects how well it…
- Software metric In software engineering and development, a software metric is a standard of measure of a degree to which a software system or process possesses some property…
- IDEF4 IDEF4 (Integrated Definition for Object-Oriented Design) is an object-oriented design modeling language for the design of component-based client/server…