Goals for: CMP120 - Programming I Course Learning Outcomes 1. Describe the parts of computer architecture and the phases of developing a computer program including flowcharts. Computer architecture is the end-to-end structure of a computer system that determines how its components interact with each other in helping to execute the machine’s purpose (i.e., processing data) 1. It can include the instruction set architecture design, microarchitecture design, logic design, and implementation 2. Some common components of computer architecture are: Central Processing Unit (CPU): The CPU is the brain of the computer that executes instructions and performs calculations. It consists of an arithmetic logic unit (ALU), a control unit, and registers. Memory: Memory is the storage area where data and instructions are kept. It can be divided into primary memory (such as RAM and ROM) and secondary memory (such as hard disk and flash drive). Input/Output Devices: Input devices are used to enter data and instructions into the computer, such as keyboard, mouse, scanner, etc. Output devices are used to display or print the results of the computer’s processing, such as monitor, printer, speaker, etc. Bus: A bus is a set of wires or lines that connect the CPU, memory, and input/output devices. It allows data and signals to be transferred between them. Cache: A cache is a small and fast memory that stores frequently used data or instructions. It reduces the access time and improves the performance of the computer. Developing a computer program is a process that involves several phases, such as planning, analysis, design, implementation, testing, and maintenance 3. A flowchart is a diagram that depicts the steps and logic of a computer program or algorithm 1. It uses different shapes and symbols to represent the type of step, the data, and the flow of control 4. Some common symbols used in flowcharts are: Rectangle: A rectangle represents a process or an action that the program performs, such as a calculation or an assignment. Diamond: A diamond represents a decision or a condition that the program evaluates, such as an if-else or a switch statement. It usually has two or more branches that lead to different outcomes. Oval: An oval represents the start or end of the program or a subprogram. Parallelogram: A parallelogram represents an input or output operation, such as reading from a file or printing to the screen. Arrow: An arrow represents the direction and sequence of the flow of control from one step to another. Here is an example of a flowchart that shows the steps of a simple program that calculates the area of a circle: ![flowchart example] 2.Use an integrated development environment (IDE) to develop and debug software in C++ An integrated development environment (IDE) is a software application that provides a comprehensive set of tools for developing and debugging software in C++ or other programming languages. An IDE typically consists of a code editor, a compiler, a debugger, a code completion feature, a syntax highlighter, and other features that facilitate the software development process 1. There are many IDEs available for C++ developers, each with its own advantages and disadvantages. Some of the most popular and widely used IDEs for C++ are: Visual Studio: Visual Studio is a powerful and versatile IDE developed by Microsoft that supports C++, C#, Visual Basic, and other languages. It offers a rich set of features, such as IntelliSense, code analysis, refactoring, testing, debugging, and deployment tools. Visual Studio also integrates with various frameworks and platforms, such as Windows, .NET, Azure, and Xamarin 2. Eclipse: Eclipse is an open-source and cross-platform IDE that supports C++, Java, Python, and other languages. It is based on a modular architecture that allows users to customize and extend its functionality with plugins. Eclipse also provides tools for code editing, debugging, testing, version control, and collaboration 1. Code::Blocks: Code::Blocks is a free and open-source IDE that focuses on C, C++, and Fortran. It is lightweight and fast, and supports multiple compilers, such as GCC, Clang, and MSVC. Code::Blocks also offers features like code completion, code folding, debugging, project management, and plugins 1. Visual Studio Code: Visual Studio Code is a free and open-source code editor that supports C++, C#, Python, and other languages. It is designed to be simple and lightweight, but also extensible and customizable with extensions. Visual Studio Code also provides features like code editing, debugging, testing, version control, and terminal integration 2. CLion: CLion is a cross-platform IDE developed by JetBrains that supports C, C++, and other languages. It offers a smart and intuitive code editor, a powerful debugger, a code analysis and refactoring tool, a code generation and navigation tool, and a testing and profiling tool. CLion also integrates with various tools and frameworks, such as CMake, Google Test, Boost, and Qt 1. These are just some of the best IDEs for C++ developers in 2024. You can find more information and compare them in the following links: Educative, Visual Studio, TrustRadius, GeeksforGeeks, and G2.