Introduction to Computer Science Course Overview

Aug 26, 2024

Introduction to Computer Science and Programming (6.00)

Course Overview

  • Instructors: Professor Eric Grimson and Professor John Guttag.
  • Course Goals:
    • Prepare students for majoring in Course 6 (Electrical Engineering and Computer Science).
    • Build confidence for students not majoring in Course 6 to read and write small pieces of code.
    • Provide an understanding of computation's role in technical problem-solving.
    • Equip students for competitive job applications in tech.

Target Audience

  • Primarily for students with little or no prior programming experience.
  • Students with extensive programming experience are encouraged to discuss their needs with instructors.

Tactical Skills to Acquire

  1. Computational Thinking: Ability to write small scale programs.
  2. Reading Code: Understand programs written by others.
  3. Understanding Computation: Recognize capabilities and limits of computations.
  4. Mapping Problems: Convert scientific problems into computational frameworks.

Course Structure

  • Lectures: Twice a week, 2 hours each (Tuesdays and Thursdays at 11:00).
  • Recitations: 1 hour/week (Fridays, multiple time slots).
  • Outside Work: Approx. 9 hours/week for problem sets, primarily using Python.

Assessments

  • Grading Breakdown:
    • Problem Sets: 55%
    • Quizzes: 45% (10%, 15%, and 20% across two quizzes and a final exam).
  • Quizzes: Open book/note.
  • First problem set (Problem Set 0) posted; it's an introductory task to familiarize with Python.

Course Materials and Administration

  • No Required Textbook: Suggested materials available on course website.
  • Attendance: Not mandatory, but material covered in lectures is not solely in readings.
  • No Class Notes Provided: Students are encouraged to take their own notes for better retention.
  • Paperless Course: Course materials found on the course website. Sign up for recitation slots here.
  • Help Resources: Students encouraged to seek help from TAs and instructors if struggling.

Key Concepts in Computation

What is Computation?

  • Declarative Knowledge: Statements of fact. E.g., "The square root of x is the y such that y² = x."
  • Imperative Knowledge: Instructions on how to deduce something (e.g., procedures for finding square roots).

Types of Computers

  • Fixed-Program Computers: Do specific computations (e.g., calculators). Examples:
    • Atanasoff's machine for solving linear equations.
    • Turing's Bombe for breaking codes during WWII.
  • Stored-Program Computers: Can change behavior based on the input recipe.

Programming Languages

  • No single best programming language; each has strengths for various applications.
  • Python: Chosen language for this course, high-level, general-purpose, interpreted.
  • Learning Python enables easier transition to other programming languages.

Syntax vs. Semantics

  • Syntax: Legal expressions in a programming language.
  • Static Semantics: Which programs are meaningful and legal.
  • Full Semantics: What the program means; understanding its execution behavior.

Python Basics

  • Data Types: Numbers (integers, floats) and strings (enclosed in quotes).
  • Basic Operations: Arithmetic operations, string concatenation, and variable assignments.
  • Common Errors: Syntax errors, semantic errors, and recognizing types of variables (e.g., using quotes to differentiate strings from numbers).

Next Steps

  • Further Exploration: Next lecture will cover more about Python, including additional data types and operations.
  • Recitation Signup Reminder: Students encouraged to sign up for recitation slots on the course website.