Richard's Website

23rd of May 2023

Table of Contents

  1. My Details
  2. Guides
    1. Using LLVM on Windows
    2. Using Win32 with LLVM
  3. Archives
    1. Old FreeBSD 2.2 port listings.
  4. Library Catalog

1 My Details

Email: rbamfordz@gmail.com
LinkedIn: https://www.linkedin.com/in/rbamford1/
Github: https://github.com/Bambofy

2 Guides

2.1 Using LLVM on Windows

16th of April 2023

First, install LLVM from the installer package provided by the LLVM github repository which can be found here. Once llvm is installed if "... python36.dll not found..." is reported when running 'lldb' the fix is to download the python 3.6 file and then place all of its contents in the same folder as 'lldb' executable. Now that LLVM is setup it can be used to compile C programs, but before the compile command can be used we need to know what kind of computer and architecture that our program will run on. Running the 'clang -v' command will return the triple for the computer that ran the command.

PS C:\Users\R> clang -v
clang version 16.0.
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Program Files\LLVM\bin
Once the triple is known for the computer we can insert it into the compiler command that will transform the specified files into an object file for linking. Notice that the command uses the flags '-g' and '-c'. '-g' indicates that the compile should produce debug symbols, and '-c' indicates that the compiler should not link at this time.

clang -g -c main.c -o main.o --target=x86_64-pc-windows-msvc -I"my/includes/"

Running the command we can confirm that the .o file has been generated using the dir command.
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         4/15/2023   3:19 PM           1044 main.c
-a----         4/15/2023   3:20 PM          25586 main.o
The .o file is ready to be linked together with other object files to create the final executable. Again notice the '-g' flag is provided again to the linking stage to ensure that the debug symbols are created.

clang -o main.exe main.o -g --target=x86_64-pc-windows-msvc -L"my/additional/libraries" -lmylib

Which should result in the final executable "main.exe", and can be verified using the dir command.
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         4/15/2023   8:19 PM           1044 main.c
-a----         4/15/2023  10:21 PM         598016 main.exe
-a----         4/15/2023  10:21 PM        3426216 main.ilk
-a----         4/15/2023  10:21 PM          25586 main.o
-a----         4/15/2023  10:21 PM        8187904 main.pdb

The main.exe is now compatible on the target platform, but in order to debug the executable some more steps are required which involves LLDB. LLDB is the debugger provided with LLVM, and is what we will use to debug our new executable. There is an issue in some Windows computers that stops .PDB files from being used for debugging information, this is problematic because .PDB is the format clang outputs when linking with debug symbols. To let LLDB use .PDB files all that is required is adding "LLDB_USE_NATIVE_PDB_READER=yes" as an environment variable. Debugging the executable is done by running the lldb main.exe command, and then running the add-dsym main.pdb. The add-dsym command tells LLDB that the information for debugging the program is held in the main.PDB file.
PS C:\Users\Documents\Project> lldb main.exe
(lldb) target create "main.exe"
(lldb) Current executable set to 'main.exe' (x86_64).
(lldb) add-dsym main.pdb
symbol file 'main.pdb' has been added to 'main.exe'
(lldb)

2.2 Using the Win32 API with LLVM

26th of April 2023

The Windows SDK contains library files and header files that are used to create new windows applications. The SDK can be installed (as of 26/4/2023) from the official windows website. After installing the SDK, there should be a windows kit in the program files directory as shown below.

    Directory: C:\Program Files (x86)\Windows Kits


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----         9/24/2022   4:45 PM                10
d-----         9/24/2022   4:34 PM                8.1
d-----         1/18/2021   5:33 PM                NETFXSDK

Now that the Windows Kit is installed, the path to it's headers and libraries can be used. The libraries are located inside the kit directory at "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\um\x64" and "C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/shared". The header files are located inside the kit directory at "C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/um" and "C:/Program Files (x86)/Windows Kits/10/Lib/10.0.19041.0/ucrt/x64". To compile a program using the libraries and headers it is necessary to add the directories which contain the headers too the compiliation command for e.g.

clang -c -g main.c -o main.o -std=c99 --target=x86_64-pc-windows-msvc -I"C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/um" -I"C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/shared" 
Notice that the --target flag for clang, this is described in the previous tutorial called Using LLVM on Windows. Additionally notice the '-c' flag which prevents clang from linking. To link the object file which has been created through the compilation above, specify the additional library directories to a command to clang for e.g.
clang -o main.exe main.o -g -std=c99 --target=x86_64-pc-windows-msvc  -L"C:/Program Files (x86)/Windows Kits/10/Lib/10.0.19041.0/um/x64" -L"C:/Program Files (x86)/Windows Kits/10/Lib/10.0.19041.0/ucrt/x64"  -lkernel32 -luser32 -lgdi32

3 Archives

3.1. Old FreeBSD 2.2 Ports

Link to port listings.

4 Library Catalog (In progress)

4.1 Books

  1. Science
    1. Computer Science
      1. O-J. Dahl, E.W. Dijkstra, C. A.R. Hoare. (1972). "Structured Programming". Academic Press Inc.
      2. A. van Wijngaarden, B.J. Mailloux, J.E.L. Peck, C.H.A. Koster, M. Sintzoff, C.H.Lindsey, L.G.L. T. Meertens, R.G. Fisker. (1976). "Revised Report on the Algorithmic Language Algol 68". Sprinter-Verlag.
      3. B. Stroustrup. (1994). "The Design and Evolution of C++". Addison Wesley.
      4. J.H. Hopcroft, J.D. Ullman, "Introduction to Automata Theory, Languages, and Computation"
      5. "KDF 9 ALGOL programming". English Electric-LEO-Marconi Computers Ltd.
      6. B. C. Pierce. (2002). "Types and Programming Languages". The MIT Press.
      7. B. Meyer. (2016). "Class invariants: concepts, problems and solutions".
      8. C. Kormanyos. (2018). "Real-Time C++: Custom Memory Management - Chapter 10". Springer-Verlag.
      9. T. J. Bergin Jr, R. G. Gibson Jr. (1996), "History of Programming Languages - 2. Addison-Wesley.
      10. O. L. Madsen, B. Møller-Pedersen, K. Nygaard. (1993). "Object-Oriented Programming in the Beta programming language."
      11. J. F. Hughes, A. van Dam, M. McGuire, D. Skalar, J. D. Foley, S. T. Feiner, K. Akeley. (2014). "Computer Graphics Principles and Pratice, Third Edition".
      12. K. Normark. (2010). "Object-oriented Programming in C# for C and Java Programmers.". Aalborg University.
      13. M. L. Scott. (2009). "Programming Language Pragmatics Third Edition". Elsevier.
      14. O-J. Dahl, K. Nygaard. (1967). "Class and Subclass Declarations". Norsk Regnesentral.
      15. O-J. Dahl, K. Nygaard, B. Myhrhaug. (1984). "SIMULA 67 Common Base Language." Norwegian Computing center Norsk Regnesentral."
      16. A. Overvoorde. (2020). "Vulkan Tutorial".
      17. D. J. Wheeler. "The Use of Sub-Routines in Programmes".
      18. N. Wirth. (1976). "MODULA a language for modular multiprograming". ETH Zurich.
      19. D. J. Wheeler, M. V. Wilkes, S. Gill. (1957). "Programs for an Electronic Digital Computer Second Edition". Addison-Wesley.
      20. D. E. Knuth. (1938). "Seminumerical Algorithms - The Art of Computer Programming - Vol. 2 Second Edition". Addison Wesley.
      21. J. Skeet. (2019). "C# In Depth - Fourth Edition". Manning Publications.
      22. R. Norvig. (2016). "Artificial Intelligence a Modern Approach - Third Edition". Pearson.
      23. G. Sellers. (2017). "Vulkan Programming Guide". Addison Wesley.
      24. J. G. P. Barnes. (1983). "Programming in ADA". Addison Wesley.
      25. D. Salomon. (1993). "Assemblers and Loaders". Ellis Horwood Ltd.
    2. Physics
      1. G. Bamford, R. L. Coldwell. (1991). "The Theory and Operation of Spectral Analysis using ROBFIT". American Institute of Physics.
  2. Engineering
    1. Software Engineering
      1. S. A. Gregory. (1966). "The Design Method". Springer.
      2. SWEBOK. "Guide to the Software Engineering Body of Knowledge". IEEE.
      3. E. Youdon, L.L. Constantine, "Structed Design Fundamentals of a Discipline of Computer Program and Systems Design"
      4. E. Yourdon. (1994). "Object-Oriented Systems Design An Integrated Approach". Prentice-Hall Inc.
      5. A. Avram, F. Marinescu. (2006). "Domain-Driven Design Quickly". C4Media
      6. J. P. Rosen. (1997), "HOOD An industrial approach for software design.". HOOD Technical Group.
      7. (2009). "97 Things Every Software Architect Should Know". O'Reilly.
    2. G. Pahl, W. Beitz, J. Feldhusen, K.H. Grote. (2007). "Engineering Design A Systematic Approach Third Edition". Springer.
    3. C. Alexander. (1964). "Notes on the Synthesis of Form". Harvard University Press.
    4. Office of Aerospace Studies. (2017). "Capabilities-Based Assessment Handbook".
    5. Office of Aerospace Studies. (2017). "Analysis of Alternatives (AoA) Handbook".
    6. JETCD. (2009). "Capabilities-Based Assessment User's Guide Version 3".
    7. TRADOC. (2009). "Capability Development Document (CDD) Writer's Guide Version 1.5".
    8. TRADOC. (2009). "Initial Capabilities Document (ICD) Writer's Guide Version 1.3".
    9. Office of the Secretary of Defense. (2014). "Operating and Support Cost-Estimating Guide.".
    10. Department of Defense. (2008). "Systems Engineering Plan Preparation Guide".
    11. Department of Defense. (1985). "DI-MCCR-80030 Software Development Plan".
    12. Department of Defense. (1996). "MIL-STD-498 Application and Reference Guidebook".
    13. Department of Defense. (1996). "MIL-STD-498 Overview and Tailoring Guidebook".
    14. Electronic Systems Division (1977). "An Air Force Guide to Computer Program Configuration Management".
    15. Mission Critical Computer Resources Management Guide (1988). "Mission Critical Computer Resources Management Guide".
    16. Defense Acquisition University Press. (2001). "Systems Engineering Fundamentals.".
    17. T. Cellucci. (2008). "Developing Operational Requirements - A Guide to the Cost-Effective and Efficient Communication of Needs.". Homeland Security
    18. Deputy Assistant Secretary of Defense. (2011). "Program Protection Plan Outline & Guidance".
    19. Space & Missile Systems Center. (2005). "SMC Systems Engineering Primer & Handbook 3rd edition".
    20. Space & Missile Systems Center. (2013). "SMC Systems Engineering Primer & Handbook 4th edition".
    21. J. Buur, M. Myrup. (1990). "A theoretical approach to mechatronics design.". Insitute for Engineering Design.
    22. J. de Ridder. (2007). "Reconstructing Design, Explaining Artifacts Philosophical Reflections on the Design and Explanation of technical Artifacts.".
    23. K. Doets. (1996). "Basic Model Theory". CSLI Publications.
    24. P. Loucopoulos, V. Karakostas. (1995). "System Requirements Engineering".
    25. S. Green. "Goal-Oriented Approaches to Requirements Engineering".
  3. Mathematics
    1. R.M. Smullyan, "A Beginners guide to Mathematical Logic".
  4. Philosophy
    1. H. P. Cook, H. Tredennick. (1934). "Aristotle The Categories on Interpretation - Prior Analytics
    2. K. Algra, J. Barnes, J. Mansfeld, M. Schofield. (1999). "The Cambridge History of Hellenstic Philosophy". Cambridge University Press.
    3. J. Venn. (1894). "Symbolic Logic". Macmillan and Co.
    4. M. Jubien. (1997). "Contemporary Metaphysics". Blackwell Publishers.
    5. A.I.M. Rae. (2013). "Reductionism". Oneworld.
    6. D.L. Kauffman, M. D. Kauffman. (2021). "Systems 1 An Introduction to Systems Thinking 4th ed".
    7. C. G. Hempel. (1965). "Aspects of Scientific Explanation and other Essays in the Philosophy of Science. The Free Press.
    8. D. Hume. (1896). "A treatise of human nature". Clarendon Press. TUDelft.
    9. A. N. Prior. (1957). "Time and Modality". Oxford University Press.
    10. G. Lando. (2017). "Mereology A Philosophical Introduction". Bloomsbury Publishing.
    11. N. Effingham. (2013). "An Introduction to Ontology". Polity Press.
    12. M. Jubien. (2009). "Possibility". Clarendon Press.
    13. W. Ott. (2009). "Causation & Laws of Nature in Early Modern Philosophy". Clarendon Press.
    14. R. L. Acoff. (1978). "The Art of Problem Solving - Accompanied by Ackoff's Fables". John Wiley & Sons.
    15. C. J. Moya. (1990). "The Philosophy of Action - an Introduction". Polity Press.

4.2 Papers

  1. Science
    1. Computer Science
      1. D. T. Ross. (1977). "Structured Analysis (SA): A Language for Communicating Ideas". IEEE.
      2. D. T. Ross, K. E. Schoman Jr. (1977). "Structured Analysis for Requirements Definition". IEEE
      3. M. E. Dickover, C.L. McGowan, D.T. Ross. "Software Design using SADT". SofTech, Inc.
      4. J. W. Backus, F. L. Bauer, J. Green, C. Katz, J. McCarthy, P. Naur, A. J. Perlis, H. Rutishauser, K. Samelson, B. Vauquois, J.H. Wegstein, A. van Wijngaarden, M. Woodger, R. M. De Morgan, I. D. Hill, B. A. Wichmann. "Modified Report on the Algorithmic Language ALGOL 60". The Computer Journal.
      5. J. W. Backus, F.L. Bauer, J. Green, C. Katz, J. McCarthy, P. Naur, A.J. Perlis, H. Rutishauser, K.Samelson, B. Vauquois, J.H. Wegstein, A. Van Winjgaarden, M. Woodger. "Revised Report on the Algorithmic Language ALGOL 60". Technical University Delft.
      6. Y. Gurevich. (1988). "Games People Play". The University of Michigan.
      7. A. J. H. Simons. "Let's Agree on the Meaning of 'Class'". Sheiffield University.
      8. C. W. Bachman. "Data Structure Diagrams".
      9. K. K. Dhara. (1997). "Behavioral Subtyping in Object-Oriented Languages". Iowa State University.
      10. B. Stroustrup. (1999). "Multiple Inheritance for C++". AT&T Bell Laboratories.
      11. B. Stroustrup. (1981). "Classes: An Abstract Data Type Facility for the C Language". Bell Laboratories.
      12. B. Stroustrup. "A History of C++: 1979-1991". AT&T Bell Laboratories.
      13. B. Stroustrup. (1983). "Adding Classes to the C Language: An Exercise in Language Evolution". Bell Laboratories.
      14. C. A. R. Hoare. (1969). "An Axiomatic Basis for Computer Programming". The Queen's University of Belfast.
      15. C. A. R. Hoare. (1972). "Proof of Correctness of Data Representations". Springer-Verlag.
      16. C. A. R. Hoare. (1999). "Theories of Programming: Top-Down and Bottom-Up and Meeting in the Middle". Springer-Verlag.
      17. C. A. R. Hoare. (1966). "Record Handling". ACM.
      18. C. Hewitt, P. Bishop, R. Steiger. "A Universal Modular ACTOR formalism for Artificial Intelligence".
      19. B. H. Liskov. (1973). "Guidelines for the design and implementation of reliable software systems.". The Mitre Coporation.
      20. J. C. Mitchell, G. D. Plotkin. (1988). "Abstract Types have Existential Type". ACM.
      21. W. R. Cook. (1990). "Object-Oriented Programm Versus Abstract Data Types". Hewlett-Packard Laboratories.
      22. W. R. Cook. (2009). "On Understanding Data Abstracting, Revisited." ACM.
      23. D. W. Barron, J. N. Buxton, D. F. Hartley, E. Nixon, C. Strachey. "The main features of CPL".
      24. D. L. Parnas. (1966). "A Language for Describing the Functions of Synchronous Systems". ACM.
      25. P. Guerreiro. (2001). "Simple Support for Design by Contract in C++". IEEE.
      26. J. McCarthy. (1959). "Programs with Common Sense.". Standford University.
      27. B. W. Kernighan, D. M. Richie. (1978). "The C Programming Language". Bell Laboratories
      28. B. W. Kernighan, D. M. Richie. (1988). "The C Programming Language Second Edition". Bell Laboratories
      29. K. Nygaard. "How many basic choices do we really make? How many are difficult?". University of Oslo.
      30. K. Nygaard, P. Handlykken. "The Systems Development Process - Its Setting, Some Problems and Needs for Methods." North-Holland Publishing Company.
      31. P. Handlykken, K Nygaard. "The Delta system description language motivation, main concepts and experience from use". North-Holland Publishing Company
      32. B. B. Kristensen, O. L. Madsen, B Moller-Pederson, K. Nygaard. (1987). "Classification of actions or Inheritance also for methods". Springer-Verlag
      33. K. Nygaard, O-J. Dahl. "Paper: The development of the SIMULA language languages". ACM.
      34. B. H. Liskov. (1994). "A Behavioral Notion of Sybtyping". ACM.
      35. B. Liskov. "Programming with Abstract Data Types.".
      36. A. Amidi, S Amidi. (2019). "Super VIP Cheatsheet: Artificial Intelligence". Stanford University.
      37. A. Amidi, S Amidi. (2018). "Super VIP Cheatsheet: Machine Learning". Stanford University.
      38. A. Amidi, S Amidi. (2018). "Super VIP Cheatsheet: Deep Learning". Stanford University.
      39. O-J. Dahl. (2002). "The roots of Object-Oriented Programming: Simula 67". Sprinter-Verlag.
      40. O-J. Dahl. (2001). "The Birth of Object Orientation: the Simula Language".
      41. D. T. Ross. "Theoretical Foundations for the Computer-Aided Design System". MIT
      42. D. T. Ross. (1962). "An Algorithmic Theory of Language". MIT.
      43. L. Cardelli. (1988). "A Semantics of Multple Inheritance". AT&T Bell Laboratories.
      44. K. Nygaard, O-J. Dahl. (1978). "The Development of the SIMULA Languages". ACM.
      45. S. Krogdahl. "The Birth of SIMULA". University of Oslo.
      46. J. M. Coggins. (1996). "Subject-Oriented Programming". Astronomical Society of the Pacific.
      47. A. J. H. Simons. (2005). "The Theory of Classification Part 17: Multiple Inheritance and the Resolution of Inheritance Conflicts". ETH Zurich.
  2. Engineering
    1. Software Engineering
      1. D. B. Lomet. (1975). "Scheme for Invalidating References to Freed Storage". IEEE.
      2. D. L. Parnas. "A Course on Software Engineering Techniques". Carnegie-Mellon University.
      3. D. L. Parnas. "On the Criteria To Be Used in Decomposing Systems into Modules". Carnegia-Mellon University.
      4. D. L. Parnas. (1979)."Designing Software for Ease of Extension and Contraction". IEEE.
      5. R. R. Everett, C.A. ZRaket, H.D. Benington. (1983). "SAGE - A Data-Processing System for Air Defense". IEEE.
      6. H. D. Benington. (1983). "Production of Large Computer Programs". American Federation of Information Processing Societies, Inc.
      7. B. W. Boehm. "Practical Strategies for Developing Large Software Systems". Addison-Wesley Publishing Company.
      8. L. Lai, N. Suda, V. Chandra. "CMSIS-NN: Efficient Neural Network Kernels for Arm Cortex-M CPUs".
      9. S. Robinson. (1976). "Conceptual Modelling for Simulation Part 1: Definition and Requirements". University of Warwick.
      10. D. L. Parnas. (1967). "SODAS and a methodology for system design."
      11. D. L. Parnas. (1972). "A Technique for Software Module Specification with Examples". Association for Computing Machinery, Inc.
      12. R. J. Montoya, T. L. Turner, D. M. Jewell, J. V. Aanstoos, R. Suresh, M. C. Barker. (1991). "AGSSS: The airborne graphics software support system; an ADA/PHIGS-based display editor for the rapid development of cockpit display software systems". Wright Laboratory.
      13. J. W. Mauchly. (1982). "Preparation of problems for EDVAC-type machines.". Springer-Verlag
      14. J. K. Grau, K. A. Gilroy. (1987). "Compliant Mappings of ADA programs to the DOD-STD-2167 Static structures". Software Productivity Solutions.
      15. M. Jackson. (1992). "The Jackson Development Methods".
      16. B. H. Liskov. (1973). "Guidelines for the Design and Implementation of Reliable Software Systems".
      17. B. H. Liskov. (1972). "A design methodology for reliable software systems."
      18. D. T. Ross, J. B. Goodenough, C. A. Irvine. (1975). "Software Engineering: Process, Principles, and Goals.". SofTech, Inc.
      19. D. T. Ross. (1985). "Applications and Extensions of SADT". IEEE.
      20. M. B. Hommel, C. McGowan. "Creating System Dynamics Models Hierarchically Using SADT".
      21. W. M. Royce. (1970). "Managing the Development of Large Software Systems". IEEE.
      22. D. A. Vallado, P. Crawford, R. Hujsak. (2006). "Revisiting Spacetrack Report #3: Rev2". American Institute of Aeronautics and Astronautics.
      23. SIMCom. (2013). "SIM800 Series IP Application Note V1.00".
      24. J. Bikker. (2017). "Practical SIMD Programming".
      25. F. W. Zurcher, B. Randell. (1968). "Iterative Multi-Level Modeling - A Methodology for Computer System Design".
    2. N. Viola, S. Corpino, M. Fioriti, F. Stensina. (2012), "Systems Engineering - Practice and Theory - Chapter 3 Functional Analysis in Systems Engineering: Methodology and Applications". InTech
    3. T. R. Browning. (2001). "Applying the Design Structure Matrix to System Decomposition and Integration Problems: A Review and New Directions.". IEEE.
    4. Department of Defense. (2020). "DoD Instruction 5000.84 Analysis of Alternatives".
    5. Department of Defense. (2020). "DoD Instruction 5000.01 The Defense Acquisition System".
    6. Department of Defense. (2020). "DoD Instruction 5000.02 Operation of The Adaptive Acquisition Framework".
    7. Department of Defense. (2020). "DoD Instruction 5000.73 Cost Analysis Guidance and Procedures".
    8. Department of Defense. (2020). "DoD Instruction 5000.85 Major Capability Acquisition".
    9. M. Pidd, (1999)"Just Modeling Through: A Rough Guide to Modeling". Institute for Operations Research and the Management Sciences.
    10. S. Robinson, G. Arbez, L. G. Birta, A. Tolk, G. Wagnet. (2015). "Conceptual Modeling: Definition, Purpose and Benefits". IEEE.
    11. N. Crilly. (2012). "Function propogation through nested systems". Elsevier.
    12. P. Winkelman. "The Melding of Form and Function.". University of British University".
    13. T, Ritchey. (2012). "Outline for a Morphology of Modelling Methods". Swedish Morphological Society.
    14. R. J. Volkema. (1983). "Problem Formulation in Planning and Design". The Institute of Management Sciences.
    15. W. Brace, K. Thramboulidis. (2010). "From Requirements to Design Specifications - A formal Approach.".
    16. J. Krupczak. (2010). "Using Functional Analysis as a Framework for Understanding Technology.". American Society for Engineering Education.
  3. Philosophy
    1. R. Cummins. (1975). "Functional Analysis". Journal of Philosophy. Inc.
    2. R. Cummins. (1976). "Programs in the explanation of behavior". Philosophy of Science Association.
    3. G. H. von Wright. (1951). "Deontic Logic". Journal of Philosophy. Inc.
    4. J. C. King. (1996). "What is a philosophical analysis?". Kluwer Academic Publishers.
    5. A.R. Anderson, O.K.Moore. (1954). "The Formal Analysis of Normative Concepts". Yale University.
    6. C. F. Craver. (2001). "Role Functions, Mechanisms, and Hierarchy." Philosophy of Science Association.
    7. J. Haugeland. "The Nature and Plausibility of Cognitivism".
    8. G. Bezhanishvili, W. Fussner. "An Introduction to Symbolic Logic".
    9. A. S. Olmos, A. J. Roffe, S. Ginnobili. (2020). "Systemic Analysis and Functional Explanation: Structure and Limitations". Sprinter Nature.
    10. (2008). "The Syntax of Predicate Logic".

4.3 Standards

  1. Software
    1. Motor Industry Software Reliability Association. (2008). "MISRA C++:2008 Guidelines for the use of the C++ language in critical systems".
    2. Motor Industry Software Reliability Association. (2019). "MISRA C:2012 Guidelines for the use of the C language in critical systems".
    3. ISO/IEC/IEEE. (2017). "12207 Systems and software engineering - Software life cycle processes". IEEE.
    4. ISO/IEC/IEEE. (2018). "24748-1 Systems and software engineering - life cycle management - part 1: guidelands for life cycle management.". IEEE."
    5. Federal Information Processing Standards. (1993). "Integration Definition for Function Modeling (IDEF0). NIST
    6. Department of Defense. (1987). "DOD-STD-1703 - Software Product Standards".
    7. Department of Defense. (1985). "DOD-STD-2167 - Defense System Software Development".
    8. Department of Defense. (1988). "DOD-STD-2167A - Defense System Software Development".
    9. Department of Defense. (1988). "DOD-STD-2168 - Defense System Software Quality Program".
    10. Department of Defense. (1994). "MIL-STD-498 - Software Development and Documentation".
    11. Department of Defense. (1988). "MIL-STD-498B - Configuration Control-Engineering Changes, Deviations and Waivers.".
    12. Department of Defense. (1985). "MIL-STD-483 - Configuration Management Practices for Systems, Equipment, Munitions, and Computer Programs.".
    13. Department of Defense. (1986). "DI-MCCR-80023 Operation Concept Document".
    14. Department of Defense. (1986). "DI-MCCR-80026A Interface Requirements Specification".
    15. Department of Defense. (1989). "DI-CMAN-80008 System/Segment Specification".
    16. Department of Defense. (1989). "DI-CMAN-80858A Contractor's Configuration Management Plan".
    17. Department of Defense. (1985). "DI-MCCR-80012 Software Top Level Design Document".
    18. Department of Defense. (1985). "DI-MCCR-80025 Software Requirements Specification".
    19. Department of Defense. (1985). "DI-MCCR-80030 Software Development Plan".
    20. Department of Defense. (1985). "DI-MCCR-80031 Software Detailed Design Document".
  2. Engineering
    1. Electronic Industries Alliance. (1999). "Processes for Engineering a system".

4.4 Articles

  1. Science
    1. Computer Science
      1. B. Stroustrup. (1988). "What is Object-Oriented Programming?". IEEE.
      2. B. W. Boehm. (1988)."A Spiral Model of Software Development and Enhancement". IEEE.
      3. N. Wirth, C. A. R. Hoare. "A Contribution to the Development of ALGOL". ACM.
      4. (1965). "ALGOL Bulletin No.21". International Federation for Information Processing.
      5. K. Morgan. (2003). "Structured Design Methodology". Elsevier Science.
      6. K. Nygaard. (1986). "Basic Concepts in Object Oriented Programming". SIGPLAN.
      7. J. R. Holmevik. (1994). "Compiling SIMULA: A Historical Study of Technological Genesis.". IEEE.
      8. N. Blundell. (2010). "Writing a Simple Operating System From Scratch". University of Birmingham.
  2. Engineering
    1. S. T. Powell. (1995). "The Teacher's Forum: Six Key Modeling Heuristics".

4.5 Theses

  1. Engineering
    1. B. Archer. (1989). "The structure of design processes.". School of Industrial Design (Engineering): Research Unit, Roay College of Art.

4.6 Presentation Slides

  1. Computer Science
    1. M. Fiore. (2012-2013). "Concepts in Programming Languages". University of Cambridge.
    2. K. Nygaard. (1988). "Basic Concepts in Object-Oriented Programming, An Overview of the Beta Language."
    3. "Shadow Mapping in OpenGL"
  2. Engineering
    1. R. S. Carson, B. J. Sheely. (2012). "Functional Architecture as the Core of Model-Based Systems Engineering".

4.7 Specifications

  1. Electronic Components
    1. Texas Instruments. (2016). "INA260 Precision Digital Current and Power Monitor with Low-Drift, Precision Integrated Shunt.
    2. Mouser Electronics."DHT11 Humidity & Temperature Sensor".
    3. Maxim Integrated. (2019). "MAX6369-MAX6374 Pin-Selectable Watchdog."
    4. Maxim Integrated. (2016). "MAX9814 Microphone Amplifier with AGC and Low-Noise Micropohone Bias."
    5. ublox. (2011). "NEO-6 u-blox 6 GPS Modules Data Sheet".
    6. ublox. "u-blox 6 Receiver Description including Protocol Specification".
    7. SIMCom. (2016). "SIM800 Hardware Design V1.09"
    8. knowles. (2017). "SPH0645LM4H-B I2S Output Digital Microphone."
    9. ST. (2017). "SPV1040 High efficiency solar battery charger with embedded MPPT".
    10. ST. (2019). "STM32l452XX Ultra-low-power Arm Cortex-M4 32-bit MCU+FPU, 100DMIPS, up to 512KB Flash, 160KB SRAM, analog, audio, ext. SMPS."
    11. SEMTECH. (2019). "SX1268 Long Range, Low Power, sub-GHz RF Transceiver.".
    12. Texas Instruments. (2015). "TMP10x Temperature Sensor with I2C and SMBus Interface with Alert Function in SOT-23 Package."

4.8 Manuals

  1. ST. (2017). "UM1725 User Manual Descripton of STM32F4 HAL and LL drivers"
  2. ST. (2017). "UM1884 Description of STM32L4/L4+ HAL and low-layer drivers."
  3. ST. (2018). "RM0394 Reference Manual STM32L41xxx/42xxx/43xxx/44xxx/45xxx/46xxx advanced Arm-based 32-bit MCUs."
  4. ST. (2017). "UM1724 User manual STM32 Nucleo-64 boards (MB1136)."
  5. Intel Corporation. (2020). "Intel Iris Plus Graphics and UHD Graphics Open Source Programmer's Reference Manual".
  6. SIMCom. (2016). "SIM800 Series AT Command Manual V1.09".
  7. SoftTech, Inc. (1981). "Integrated Computer-Aided Manufaturing Architecture part 2 volume 4 - Functional Modeling Manual (IDEF0).". Air Force Systems Command.
  8. M. Richards. (1967). "The BCPL Reference Manual". Massachusetts Institute of Technology.
  9. M. Richards, A. Evans Jr, R.F. Mabee. (1974). "The BCPL Reference Manual". Project MAC; Massachusetts Institute of Technology.
  10. Intel Corporation. (1975). "Intel 8080 Microcomputer Systems User's Manual."

4.9 Books in the process of being catalogged

  1. B. Stroustrup, E. (). "The Annotated C++ Reference Manual". Addison Wesley.
  2. "Programming Pearls - Second Edition". Pearson.
  3. "Programming Language Concepts and Paradigms". Prentice Hall.
  4. "Readings in Database Systems - Fourth Edition".
  5. "97 Things Every Programmer Should Know". O'Reilly.
  6. "Code Complete". Microsoft Press.
  7. "Theory and Design of Digital Machines". MacGraw-Hill.
  8. R. Nystrom. (). "Game Programming Patterns"
  9. Gamma, Helm, Johnson, Vissides. (). "Design Patterns". Addison Wesley.
  10. L. von Bertalanffy. (). "General Systems Theory."
  11. Roozenburg, Ekels. (). "Product Design: Fundamentals".
  12. FitzGerald. (). "Fundamentals of Systems Analysis Using Structured Analysis and Design Techniques". Wiley.
  13. "Discrete Mathematics in Computer Science"
  14. Nissanke. (). "Introductory Logic and Sets for Computer Scientists". Addison Wesley.
  15. Delvin. "Sets, Functions and Logic""
  16. "An Investigation into the Laws of Thought".
  17. Potter, Sinclair, Till. (). "An Introduction to Formal Specification and Z - Second Edition". Prentice Hall
  18. "Access Database Design & Programming - Second Edition". O'Reilly.
  19. "Game Programming in C++"
  20. "SSADM Version 4 A Practical Approach". McGraw-Hill.
  21. Pinter. (). "A Book of Set Theory". Dover.
  22. R. Dule, G. Rose. (). "Formal object-oriented specification using object-z".
  23. Abelson, Sussman. (). "Structure and Intrepretation of Computer Programs". McGraw-Hill.
  24. Myers. (). "Reliable Software Through Composite Design", Van Nostrand Reinhold.
  25. "Composite/Structured Design". Von Nostrand Reinhold.
  26. N. Wirth. (). "Programming in Modula-2". Springer-Verlag.
  27. Krebich. (). "Using SQLite". O'Reilly"
  28. Hintjens. (). "ZeroMQ". O'Reilly
  29. B. Meyer. "Object-Oriented Software Construction". Prentice Hall.
  30. C. A. R. Hoare. (). "Communicating Sequential Processes". Prentice Hall
  31. C. A. R. Hoare. (). "Mathematical Logic and Programming Languages". Prentice Hall
  32. P. Juliff. (). "The art of Structured Programming".
  33. O-J. Dahl. (). "Verifiable Programming". Prentice Hall.
  34. M. Jackson. (). "System Development."
  35. "Systems: Research and Design". Wiley.
  36. Flaglle, Huggins, Roy. (). "Operations Research and Systems Engineering.". Johns Hopkins.
  37. H. Chestnut. (). "Systems Engineering Tools". Wiley.
  38. H. F. Mattson Jr. (). "Discrete Mathematics with Applications".
  39. B. Stroustrup. (). "The C++ Programming Language - Fourth Edition". Addison Wesley.
  40. Press, Teukolsky, Vetterling, Flannery. (). "Numerical Recipes in C - Second Edition". Cambridge.
  41. Hass. (). "Configuration Management Principles and Practice.".
  42. "Introduction to Mathematical Programming - Applications and Algorithms - Second Edition". Duxbury
  43. Kochan, Wood. (). "UNIX shell programming - Revised Edition". Hayden Books.
  44. Brailsford, Walker. (). "Introductory Algol 68 Programming. Ellis Horwood."
  45. "Pattern-Oriented Software Architecture - Volumn 4". Wiley.
  46. Martin. (). "Clean Code". Prentice Hall.
  47. Borger, Stark. (). "Abstract State Machines"
  48. Evans. (). "Domain Driven Design.". Addison Wesley
  49. "Programming Languages Concepts & Constructs". Addison Wesley.
  50. "Euclid's Elements". Green Lion Press.
  51. Booch. (). "Object-Oriented Analysis and Design with Applications".
  52. J. C. Wetherbe. (). "Systems Analysis and Design: Traditional, Structured and Advanced Concepts and Techniques."
  53. "Essays in Software Engineering".
  54. "Software Requirements". Microsoft Press.
  55. Schmidt. (). "Software Engineering Architecture-Design and Softawre Development."
  56. "Learning OpenCV". O'Reilly.
  57. P. Checkland. "Systems Thinking, Systems Practice."
  58. Smyrl. "An Introduction to University Mathematics".
  59. "Software Engineering A Practitioners Approach - Fifth Edition"
  60. Robinson, Berrisford. (). "Object-Oreitned SSADM". Prentice Hall.
  61. Lippman, Lajoie, Moo. (). "C++ Primer - Fifth Edition". Addison Wesley.
  62. Armstrong. (). "Nominalism & Realism". Cambridge.
  63. N. Wirth. (). "Systematic Programming: An Introduction". Prentice-Hall
  64. Hall. (). "A Methodology for Systems Engineering".
  65. Hopcroft, Ullman. (). "Introduction to Automata theory, Language and Compilation.". Addison Wesley.
  66. B. Stroustrup. (). "The Design and Evolution of C++". Addison Wesley.
  67. Youdon. (). "Object-Oriented Systems Design: An Integrated Approach". Prentice Hall.
  68. D. Lewis. (). "Computer Science Illuminated - Fourth Edition". Jones and Bartlett.
  69. Marca, McGowan. (). "SADT - Structured Analysis and Design Technique."
  70. B. Kernighan, R. Pike. (). "The Practice of Programming". Addison Wesley.
  71. G. Sellers, Wright, Haemel. (). "OpenGL SuperBible Seventh Edition". Addison Wesley.
  72. Shreiner, Woo, Neider, Davis. (). "OpenGL Programming Guide Fifth Edition". Addison Wesley.
  73. C. Dickinson. (). "Learning Game Physics with Bullet Physics and OpenGL". PACKT.
  74. G. H. von Weight. (). "Norm and Action - A Logical Enquiry". Routledge & Kegan Paul.
  75. R. Girle. (). "Modal Logics and Philosophy". McGill-Queens.
  76. Kessenich, Sellers, Shreiner. (). "OpenGL Programming Guide - Ninth Edition". Addison Wesley.
  77. "The Cement of the Universe."
  78. H. Chestnut. (). "Systems Engineering Methods". Wiley.
  79. Dym, Little, Orwin. (). "Engineering Design A Project-Based Introduction". Wiley.
  80. Meyers. (). "Effective C++ - Third Edition". Addison Wesley.
  81. Chakrabarti. (). "Engineering Design Synthesis."
  82. Mager. (). "Goal Analysis".
  83. "Understanding Engineering Design".
  84. J. Venn. (). "The Principles of Inductive Logic"
  85. J. S. Mill. (). "A System of Logic, Ratiocinative and Inductive"
  86. E. Krick. (). "An Introduction To Engineering Concepts, Methods and Issues.".
  87. Mumford. (). "Dispositions". Oxford Press.
  88. Copi, Cohen, McMahon. (). "Introduction to Logic.". Routledge.
  89. R. Lerusalimschy. (). "Programming in Lua".
  90. Abelson, Sussman. (). "Structure and Intrepretation of Computer Programs".
  91. Marca, Mcgowan. (). "IDEF0 and SADT A Modeller's Guide".
  92. S. R. Allen. (). "A Critical Introduction to Properties".
  93. F. Bacon. (). "Novum Organum". Anodos Books.
  94. R. Girle. (). "Modal Logics and Philosophy". Acumen.
  95. J. Dewey. (). "Logic The History of Enquiry".
  96. R. M. Martin. (). "Epistemology".
  97. Simmons, Maguire, Phelps. (). "Manual of Engineering Drawings - Fifth Edition."
  98. Meyer. (). "Object-oriented Software Construction". Prentice Hall.
  99. Lejk, Deeks. (). "An Introduction to Systems Analysis Techniques". Addison Wesley.
  100. G. Polya. (). "How to Solve It". Penguin.
  101. Winters, Manshreck, Wright. (). "Software Engineering at Google.". O'Reilly.
  102. Foley, van Dam, Feiner, Hughes. (). "Computer Graphics Principles and Practice - Second Edition". Addison Wesley.
  103. Mark Timmons. (). "Moral Theory An Introduction - Second Edition.".