Introduction to Computer Science and Programming

Jun 22, 2024

Introduction to Computer Science and Programming

Instructors

  • Professor: Eric Grimson
  • Co-Instructor: Professor John Guttag
  • Both have extensive experience in lecturing and department administration.

Course Goals

Strategic Goals

  1. Prepare Freshmen and Sophomores: Particularly those planning to major in Course Six, especially for those with little or no prior programming experience.
  2. Non-Majors: Enable students not planning to major in course six to gain confidence in reading and writing small pieces of code.
  3. Understanding Computation: Ensure all students understand the role of computation in solving technical problems.
  4. Career Preparation: Position students to effectively compete for jobs and internships by having computational problem-solving skills.

Tactical Goals

  1. Computational Thinking: Ability to use computational tools to write small scale programs.
  2. Understanding Programs: Ability to read and understand programs written by others.
  3. Capability and Limitations: Understanding what computations can and cannot do, and their costs.
  4. Mapping Problems to Computation: Convert scientific problems into computational terms.

Course Structure

  • Lectures: 2 hours/week (Tuesdays and Thursdays at 11:00 AM)
  • Recitations: 1 hour/week (Fridays)
  • Homework: 9 hours/week
    • Work primarily on problem sets using Python.
    • Problem sets will increase in complexity over time.
  • Assessments: Two quizzes, final exam.

Grading

  • Problem Sets: 55%
  • Quizzes: 10% and 15%
  • Final Exam: 20%

Administration Details

  • Website: Main source of course materials and announcements.
  • First Problem Set: Problem Set 0 to familiarize with Python.
  • Quizzes: Dates on the course website; open book and notes.
  • Attendance: Optional but recommended; some material only covered in class and recitation.
  • Text: No required textbook.
  • Notes: Encourage note-taking for better learning; no distributed class notes.

Learning Objectives

  • Class Notes: Encourages taking personal notes for learning enhancement.
  • Support: Professors and TAs available for help; students encouraged to ask for help when needed.

Computational Thinking

What is Computation?

  • Declarative Knowledge: Statements of fact or truths (e.g., definitions).
  • Imperative Knowledge: How-to knowledge (e.g., procedures and algorithms).
  • Goal: Separate mechanism (computer) from computational thinking.

Key Concepts

  • Fixed-Program Computers: Early computers designed for specific tasks only.
    • Examples: Calculators, early computational devices like Atanasoff, Turing's bombe.
  • Stored-Program Computer: Modern computers using an interpreter to execute a sequence of instructions (program).
    • Components: Memory, Control Unit, ALU, Program Counter.

Introduction to Python

Basic Elements

  • Data Types: Numbers (integers, floats), Strings.
  • Operations: Arithmetic operations and string operations.
  • Variables: Used to store values (binding names to values).
  • Expressions vs. Statements: Expressions produce values, statements perform actions.

Example Operations in Python

  • Simple arithmetic: 3 + 5, 3 ** 2
  • String manipulation: 'hello' + ' world'
  • Variable assignment: mystring = 'Eric'
  • Checking types and handling errors.

Assignments and Recitations

  • Recitations: Sign up for times on the course website.
  • Problem Sets: Start with introductory exercises in Python.

Important Reminders

  • Quizzes and Assignments: Check course website for details.
  • Ask for Help: Utilize professors, TAs, and resources when needed.
  • Note-taking: Important for enhancing learning and understanding.

Remember, this course is about learning how to think computationally and developing problem-solving skills through Python programming.