🧠

Introduction to 6.111: Lecture 1

Jul 22, 2024

Introduction to 6.111: Lecture 1

Course Introduction

  • Recorded for OCW: Future lectures will be recorded. Avoid front rows if you don't want to be filmed.
  • Lecturers: Anna Bell (EECS Department) and later Prof. Eric Grimson.
  • Content Overview:
    • Basic administrivia
    • Course information
    • What is computation?
    • Python basics
    • Mathematical operations in Python
    • Python variables and types

Lecture Tips

  • Preparation: Download slides and code before lecture.
  • Practice: Key to success; programming needs consistent practice like math and reading.
  • Fear: Don’t fear breaking your computer by trying out code.

Course Roadmap

  • Three Goals:
    1. Knowledge of concepts
    2. Programming skills
    3. Problem-solving abilities
  • Practice: Emphasis on practice throughout the course.
  • Course Breakdown:
    1. Learning how to program (objects, data structures, control flow)
    2. Writing good quality code (style, readability, organization, modularity)
    3. Computer Science fundamentals (comparing programs, algorithm efficiency)

Understanding Computation

  • Fundamental Tasks:
    • Perform calculations
    • Store results in memory
  • Types of Calculations: Built-in language operations (addition, subtraction, etc.) and user-defined calculations.

Knowledge Types

  • Declarative Knowledge: Statements of fact (e.g., ā€œsomeone will win a prizeā€)
  • Imperative Knowledge: Sequence of steps or how-to (e.g., steps to determine prize winner)
  • Example: Using Python to choose a random winner for a raffle.

Algorithms

  • Definitions and Examples: Recipe-like instructions for problem-solving.
  • Algorithm Example: Calculating the square root through iterative guesses.
  • Algorithm Parts:
    1. Sequence of steps
    2. Flow of control (decisions, loops)
    3. Stopping criterion

Types of Computers

  • Fixed-Program Computers: Limited to specific tasks (e.g., early calculators)
  • Stored-Program Computers: Can store and execute various sequences of instructions.

Basic Machine Architecture

  • Components:
    • Memory: Stores data and instructions
    • Input/Output
    • ALU (Arithmetic Logic Unit)
    • Control Unit: Manages instruction execution
  • Instruction Execution Process: Fetch, decode, execute, and store results.
  • Primitives: Basic operations like addition, subtraction, logic tests, etc.

Programming Languages

  • Built from basic primitives defined by Turing's principles.
  • Key Fact: Anything computable in one language is computable in any other language.

Python Basics

  • Everything is an Object: All data in Python is treated as objects.
  • Object Types: Scalar (indivisible) and non-scalar (compositional).
    • Scalar Types: Integers, floats, booleans, none type
  • Finding and Converting Types: Use type() and appropriate conversion functions (e.g., float(), int())

Printing and Expressions

  • Output: Use print() to display results explicitly.
  • Operators:
    • Arithmetic: +, -, *, /
    • Special: % (remainder), ** (power)
  • Syntax and Semantics:
    • Expressions must be syntactically and semantically valid.
    • Programs must have clear single meanings—errors arise when there's a mismatch in programmer's intent and code execution.***

Variable Assignment

  • Assignments: Bind names to values using =, enabling reusability and readability.
  • Importance of Naming: Choose descriptive names to make code understandable.
  • Rebounding Values: Variables can be reassigned new values; previous values may persist in memory but lose reference.
  • Distinction from Math: = is assignment, not equality.

Conclusion

  • Next Lecture: Introduction to control flow in Python.