This repo contains resources to answer philosophical questions about "Why it has been done that way?" in Computer science and engineering [The philosophy of science], also the question of "What to do?"
As an undergraduate, I was always wondering "why" in computer science. Why are languages designed this way? Why choose this architecture over that? Why does this algorithm work? Unfortunately, most CS degrees lack courses exploring the philosophy behind the field. I discovered those deeper foundations later, fueling a passion to share that knowledge. This repository collects resources illuminating the "why" of software and systems. I hope it fosters new ways of seeing for future engineers."CSE Philosophy and Why Questions" gathers courses, books, papers and talks from experts. It aims to expand horizons on fundamental questions like:Why this approach? What principles drive design choices? How can new perspectives transform old problems?Question assumptions. Envision new possibilities. Find purpose and grow as thinkers, builders and members of this craft.Discover truth. Build meaning. Thrive in purpose.Together, let's spark contemplation and cultivate growth. Deepen discussions shaping technology and its role in the world.Inspire reflection. Find meaning in challenges faced and truths unveiled.Thrive as engineers. See with fresh eyes. Understand anew.
Before going further, if you are Muslim you have to read this first: PDF if you are not Muslim you need to search for scientism and its problems.
Here is a table contains courses and books on the philosophy behind software engineering, programming languages, and computer science in general.
Field | Type | Title | Author | Link | Description | More Details |
---|---|---|---|---|---|---|
Philosophy of Computer Science | Book | The Computer and the Brain | John von Neumann | A classic work on the relationship between computers and the brain, written by the pioneering mathematician and computer scientist John von Neumann. | - | |
Philosophy of Computer Science | Book | Philosophy and Theory of Artificial Intelligence 2017 | Vincent C. Müller | [Springer] (https://link.springer.com/book/10.1007/978-3-319-96448-5) | Offers a comprehensive snapshot of AI research, at the interface between cognitive science, ethics and computer science Discusses advances concepts such as super intelligence and extended mind Fosters the exploration of interdisciplinary topics in AI that have been neglected by more specialized conferences. | - |
Philosophy of Computer Science | Book | Minds and Computers : An Introduction to the Philosophy of Artificial Intelligence | Matt Carter | Amazon | Minds and Computers" is a book that explores the philosophical issues surrounding Artificial Intelligence (AI) and introduces readers to the interdisciplinary field of Cognitive Science. It provides a foundation for engaging with AI from a philosophically responsible standpoint and includes exercises and a glossary of terms. | - |
Philosophy of Computer Science | Book | Philosophy of Artificial Intelligence | David Cycleback | Bookboon | The book discusses fundamental philosophical questions in artificial intelligence, such as creating intelligent machines, ethical concerns, and consciousness. | it is a free textbook |
Philosophy of Computer Science | Book | The Society of Mind | Marvin Minsky | Amazon | A groundbreaking book on artificial intelligence and the nature of the mind, written by the influential computer scientist Marvin Minsky. | - |
Philosophy of Computer Science | Book | Mind Children: The Future of Robot and Human Intelligence | Hans Moravec | Amazon | A visionary book on the future of artificial intelligence, written by the roboticist and futurist Hans Moravec. | - |
Philosophy of Computer Science | Book | The Nature of Computation | Cristopher Moore and Stephan Mertens | Amazon | An accessible introduction to the theory of computation, written by two leading researchers in the field. | - |
Philosophy of Computer Science | Book | The Computational Beauty of Nature | Gary William Flake | Amazon | A fascinating exploration of the ways in which computing can help us understand the beauty and complexity of the natural world, written by the computer scientist and entrepreneur Gary William Flake. | |
Software Engineering | Book | The Mythical Man-Month | Frederick P. Brooks Jr. | Amazon | Essays on software engineering, exploring the human elements and challenges. | Anniversary Edition |
Programming Languages | Book | Concepts, Techniques, and Models of Computer Programming | Peter Van Roy and Seif Haridi | Amazon | A comprehensive exploration of programming paradigms and their philosophical underpinnings. | 1st Edition |
Computer Science (General) | Book | Gödel, Escher, Bach: An Eternal Golden Braid | Douglas R. Hofstadter | Amazon | A deep dive into the connections between math, art, and computer science. | 20th Anniversary Edition |
Software Engineering | Book | Design Patterns: Elements of Reusable Object-Oriented Software | Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides | Amazon | A classic book on software design patterns and their philosophical roots. | 1st Edition |
Programming Languages | Course | Principles of Programming Languages | Various | Course Website | A course on the principles and design of programming languages. | MIT OpenCourseWare |
Computer Science (General) | Book | The Art of Computer Programming | Donald E. Knuth | Amazon | A comprehensive series on computer programming and its underlying philosophy. | Boxed Set |
Software Engineering | Book | Clean Code: A Handbook of Agile Software Craftsmanship | Robert C. Martin | Amazon | A book on writing clean, maintainable code and the philosophy behind it. | 1st Edition |
Programming Languages | Book | Types and Programming Languages | Benjamin C. Pierce | Amazon | A comprehensive introduction to type systems and their role in programming languages. | 1st Edition |
Computer Science (General) | Course | Introduction to the Theory of Computation | Michael Sipser | Course Website | A course on the theory of computation, exploring the limits and possibilities of computing. | MIT OpenCourseWare |
Software Engineering | Book | Refactoring: Improving the Design of Existing Code | Martin Fowler | Amazon | A book on refactoring code and the philosophy behind improving code quality. | 2nd Edition |
Programming Languages | Course | Programming Language Foundations | Various | Course Website | A summer school course on the foundations of programming languagesand their design. | University of Oregon |
Computer Science (General) | Book | Computational Complexity: A Modern Approach | Sanjeev Arora and Boaz Barak | Amazon | An introduction to computational complexity theory and its philosophical implications. | 1st Edition |
Software Engineering | Course | Software Design and Architecture | Various | Course Website | A Coursera specialization on the principles of software design and architecture. | Coursera |
Programming Languages | Book | Programming Language Pragmatics | Michael L. Scott | Amazon | A comprehensive overview of programming language design, implementation, and usage. | 4th Edition |
Computer Science (General) | Course | Great Ideas in Theoretical Computer Science | Various | Course Website | A course on important ideas and concepts in theoretical computer science. | MIT OpenCourseWare |
Software Engineering | Book | Extreme Programming Explained: Embrace Change | Kent Beck | Amazon | An introduction to the philosophy and practices of Extreme Programming. | 2nd Edition |
Computer Science (General) | Book | The Information: A History, A Theory, A Flood | James Gleick | Amazon | An exploration of the history and theory of information, including aspects of computer science. | 1st Edition |
Programming Languages | Book | The Art of Computer Programming: Fundamental Algorithms | Donald E. Knuth | Amazon | An in-depth exploration of algorithms and their role in programming languages. | 3rd Edition |
Software Engineering | Book | Domain-Driven Design: Tackling Complexity in the Heart of Software | Eric Evans | Amazon | A book on domain-driven design and its philosophical approach to software development. | 1st Edition |
Programming Languages | Course | Functional Programming Principles in Scala | Martin Odersky | Course Website | A course on functional programming principles and their application in Scala. | Coursera |
Computer Science (General) | Book | The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World | Pedro Domingos | Amazon | An exploration of machine learning and its philosophical implications for computer science. | 1st Edition |
Software Engineering | Course | Software Processes and Agile Practices | Various | Course Website | A course on software processes and agile practices in software engineering. | Coursera |
Programming Languages | Book | Purely Functional Data Structures | Chris Okasaki | Amazon | A book on the design and implementation of functional data structures. | 1st Edition |
Computer Science (General) | Course | Algorithms, Part I | Robert Sedgewick and Kevin Wayne | Course Website | A course on the fundamentals of algorithms and their role in computer science. | Coursera |
Software Engineering | Book | Working Effectively with Legacy Code | Michael Feathers | Amazon | Book offers practical strategies for cost-effective handling of legacy code problems with guidance on refactoring and writing tests. Examples in Java, C++, and C#. | 1st Edition |