💻

Programming Fundamentals Overview

Jul 26, 2025

Overview

This lecture provides a beginner-friendly overview of computer programming fundamentals, applicable to any language. Topics include programming basics, variables, control structures, data storage, errors, functions, pseudocode, language selection, and next steps.

What is Programming?

  • Programming means giving computers detailed instructions to perform tasks without mistakes.
  • Computers only understand machine code (binary), so humans use programming languages to communicate instructions.
  • Programming languages act as interpreters between human commands and machine code.

Programming Languages & Syntax

  • Programming languages (e.g., Python, Java, C++) range from low-level (close to binary) to high-level (easier for humans).
  • Syntax: Each language has strict grammar rules; errors in syntax prevent programs from running.
  • IDEs (Integrated Development Environments) help write, run, and debug code efficiently.

Basic Operations & Data Types

  • Computers can perform arithmetic: addition (+), subtraction (-), multiplication (*), division (/), modulus (%).
  • Strings are sequences of text within quotation marks.
  • Concatenation joins strings and variables; data types matter (e.g., number vs. string "4").*

Variables

  • Variables store information, each with a type, name, and value.
  • Primitive types: integer (int), boolean (true/false), float/double (decimals), string (text), char (one character).
  • Variables can be updated or referenced in code; naming conventions (like camelCase) improve readability.

Conditional Statements & Control Flow

  • If statements execute code based on conditions; else/elif handle alternative cases.
  • Switch statements handle multiple specific cases for a variable.
  • Control structures enable programs to respond differently under different conditions.

Arrays, Lists, and Dictionaries

  • Arrays store fixed-size collections of the same data type; each element is accessed by index (starting at 0).
  • ArrayLists (lists) are dynamic arrays that can grow; dictionaries (key-value pairs) allow fast non-linear access to data.
  • Multi-dimensional arrays (e.g., 2D arrays) store arrays within arrays.

Loops

  • For loops repeat code a set number of times; for-each loops iterate through collections.
  • While loops repeat code as long as a condition is true; do-while loops always execute at least once.
  • Loops reduce code repetition and enable processing of collections.

Errors and Debugging

  • Syntax errors violate language rules; runtime errors occur during execution (e.g., infinite loops); logic errors give wrong results.
  • Debugging strategies: use IDE error messages, print statements, breakpoints, and commenting out code to isolate issues.
  • Frequent testing and code backups help prevent and resolve bugs.

Functions

  • Functions are reusable code blocks that can take arguments (inputs) and return values (outputs).
  • There are functions with/without arguments and with/without return values (void).
  • Functions increase code modularity and reusability; importing libraries gives access to pre-written functions.

Importing & Writing Functions

  • Libraries and packages provide additional functions you can import as needed.
  • Writing functions: clearly define arguments and return types; ensure every possible code path returns a value if needed.

Searching Algorithms

  • Linear search scans each element one by one; works on unsorted data.
  • Binary search repeatedly splits a sorted list; much more efficient for large sorted data sets.

Recursion & Call Stacks

  • Recursion is when a function calls itself, often to break down complex problems.
  • Base cases prevent infinite recursion; recursion relies on the call stack (last-in, first-out execution).

Pseudocode & Planning

  • Pseudocode is planning your program logic in plain language or diagrams before coding.
  • Popular methods include flowcharts, step-by-step write-ups, and feature/function breakdowns.

Choosing a Programming Language

  • High-level languages (Python, Java) are easier for beginners; low-level languages (C, Assembly) are closer to hardware.
  • Choose a language based on your project needs and personal preference.

Key Terms & Definitions

  • Syntax — The set of rules for writing code in a language.
  • IDE (Integrated Development Environment) — Software for writing, running, and debugging code.
  • Variable — A named storage location for data.
  • Array — A fixed-size collection of elements of the same type.
  • Dictionary — A collection of key-value pairs for flexible data access.
  • Function — A reusable block of code with a name, optional inputs (arguments), and optional outputs (returns).
  • Recursion — A function calling itself to solve smaller instances of a problem.
  • Debugging — The process of finding and fixing errors in code.

Action Items / Next Steps

  • Research programming languages (e.g., Python, Java, C++) and select one to learn.
  • Watch language-specific tutorial videos and complete beginner exercises.
  • Practice coding with challenges on sites like CodingBat, Coderbyte, or HackerRank.
  • Consider taking formal programming classes, especially if in high school.
  • Use pseudocode to plan your programs before coding.