{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "18c30455",
   "metadata": {},
   "source": [
    "# Getting Started with C#\n",
    "\n",
    "Every program you write runs on a physical machine, is written in a language with rules, and is built by a developer using specific tools. This chapter sets the context: what computing is, how C# fits in, and how to set up a working environment.\n",
    "\n",
    "- **Hardware and software**: Programs run on physical machines through layers of abstraction.\n",
    "- **Compilation**: A compiler translates C# source code into machine-runnable code.\n",
    "- **Development tools**: The .NET SDK, terminal, editor or IDE, debugger, and Git work together to help you build, run, test, and track C# programs.\n",
    "- **Program structure**: Every C# program follows a predictable structural template.\n",
    "\n",
    "Jumping straight into syntax without context leads to confusion later. Understanding the big picture of hardware, software, compilers, and IDEs gives you a mental model that makes every later topic clearer.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": "<h2>Video</h2>\n\n```{eval-rst}\n.. youtube:: ZVGutgqBMUM\n   :width: 560\n   :height: 315\n```\n\n> *[Getting Started with C# & .NET in VS Code (Official Beginner Guide)](https://youtube.com/watch?v=ZVGutgqBMUM)* by Visual Studio Code.\n>\n> This video remains hosted on YouTube and is the property of its original creator or rightsholder; it is embedded here via YouTube's official player for educational reference only.\n",
   "id": "intro-video"
  },
  {
   "cell_type": "markdown",
   "id": "06e01b92",
   "metadata": {},
   "source": [
    "<h2>Learning Objectives</h2>\n",
    "\n",
    "By the end of this chapter, you will be able to:\n",
    "1. Explain how source code becomes a running program through compilation or interpretation\n",
    "2. Identify the parts of a basic C# program, including the namespace, class, and Main entry point\n",
    "3. Install and verify a working .NET SDK and VS Code development environment\n",
    "4. Create and run a C# console application from the command line\n",
    "5. Use basic Git commands to track and commit changes to your code\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a751c299",
   "metadata": {},
   "source": [
    "<h2>Chapter Flow</h2>\n",
    "\n",
    "```{tableofcontents}\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6ec98c80",
   "metadata": {},
   "source": [
    "<h2>Glossary</h2>\n",
    "\n",
    "| # | Term | Explanation |\n",
    "|---:|---|---|\n",
    "| 1 | IPO Model | The Input-Process-Output model describing how a program takes input, transforms it, and produces output. |\n",
    "| 2 | SDLC | Software Development Life Cycle; the stages a program moves through from planning to maintenance. |\n",
    "| 3 | Algorithm | A precise, step-by-step procedure for solving a problem or completing a task. |\n",
    "| 4 | Expression | A piece of code that evaluates to a value. |\n",
    "| 5 | Compilation | Translating source code into machine-runnable code before the program runs. |\n",
    "| 6 | Interpretation | Executing source code directly, line by line, without a separate compile step. |\n",
    "| 7 | Compiler | A tool that translates source code into an executable program. |\n",
    "| 8 | Interpreter | A tool that reads and executes source code directly. |\n",
    "| 9 | Exception | An unexpected condition that disrupts a program's normal flow at run time. |\n",
    "| 10 | .NET SDK | The Software Development Kit that provides the tools needed to build and run .NET/C# programs. |\n",
    "| 11 | .NET Runtime | The environment that executes compiled .NET programs. |\n",
    "| 12 | Terminal / Shell | A text-based interface for running commands on your computer. |\n",
    "| 13 | IDE | Integrated Development Environment; a tool that combines editing, building, and debugging. |\n",
    "| 14 | VS Code | A free, cross-platform code editor commonly used for C# development. |\n",
    "| 15 | REPL | Read-Eval-Print Loop; an interactive environment (like csharprepl) for trying out code one expression at a time. |\n",
    "| 16 | Git | A version control system for tracking changes to code over time. |\n",
    "| 17 | Commit | A saved snapshot of changes in a Git repository. |\n",
    "| 18 | Merge Conflict | A situation where Git can't automatically combine changes from two sources. |\n",
    "| 19 | .NET Template | A starter project structure generated by the `dotnet new` command. |\n",
    "| 20 | Console App | A program that runs in a terminal window rather than a graphical window. |\n",
    "| 21 | Program.cs | The default file name containing a C# program's entry point. |\n",
    "| 22 | Top-Level Statements | A modern C# feature that lets you write a program's entry-point code without an explicit `Main` method wrapper. |\n",
    "| 23 | Solution | A container (`.sln`) that groups one or more related C# projects. |\n",
    "| 24 | Project | A `.csproj`-defined unit of code that compiles into an app or library. |\n",
    "| 25 | Code Block | A group of statements enclosed in curly braces `{ }`. |\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6f50d1f9",
   "metadata": {},
   "source": [
    "<h2><a href=\"overview.html\" target=\"_blank\" style=\"color: var(--pst-color-link, #176de8);\">Chapter Overview Slides</a></h2>\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".NET (C#)",
   "language": "C#",
   "name": ".net-csharp"
  },
  "language_info": {
   "name": "polyglot-notebook"
  },
  "polyglot_notebook": {
   "kernelInfo": {
    "defaultKernelName": "csharp",
    "items": [
     {
      "aliases": [],
      "name": "csharp"
     }
    ]
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
