Introduction to Computer Science Course Overview

Aug 20, 2024

Introduction to Computer Science and Programming (600)

Lecture Overview

  • Instructors: Eric Grimson and John Guttag
  • Course Focus: Introduction to programming and computational thinking
  • Goals: Help students learn how to think like computer scientists

Course Goals

Strategic Goals

  1. Entry Preparation: Support freshmen and sophomores interested in Course 6 without prior programming experience.
  2. Confidence Building: Equip non-majors with the ability to read and write small pieces of code.
  3. Understanding Computation: Teach students the role of computation in solving technical problems.
  4. Competitiveness: Prepare all students for opportunities like UROPs and summer jobs.

Tactical Goals (Skills to Acquire)

  1. Basic Tools: Use computational thinking to write small-scale programs.
  2. Vocabulary: Understand programs written by others.
  3. Capabilities and Limitations: Comprehend what can and cannot be computed.
  4. Mapping Problems: Translate scientific problems into a computational framework.

Course Structure

  • Format: Two hours of lecture per week, one hour of recitation, and nine hours of outside work.
  • Programming Language: Python will be used for programming assignments.
  • Assignments: Problem sets will increase in complexity over the term. The initial problem sets will be easier to help students ramp up.
  • Quizzes: Two quizzes scheduled for October 2nd and November 4th, plus a final exam; open book/notes format.
  • Grading: 55% from problem sets, 45% from quizzes and the final exam.

Administrative Notes

  • First Problem Set: Problem set zero is posted to help install Python.
  • Recitation Registration: Sign up for recitations available on Fridays.
  • Textbook: No required textbook; a suggested one is available.
  • Attendance: Not mandatory, but material outside of readings will be covered in lectures.
  • Class Notes: No class notes will be provided; students are encouraged to take their own notes.
  • Support: Instructors and TAs are available for assistance, and it's important to seek help when needed.

Conceptual Framework

What is Computation?

  • Primary Knowledge: Understanding computational problem solving and the tools required.
  • Types of Knowledge:
    • Declarative Knowledge: Statements of fact (e.g., definitions).
    • Imperative Knowledge: Descriptions of how to perform a task or process (e.g., recipes for algorithms).

Historical Context

  • Early Computers: Fixed program computers (specific tasks like calculators).
  • Stored Program Computers: The evolution to machines that can execute any sequence of instructions provided (e.g., interpreters).

Programming Languages

  • Python: High-level general-purpose interpreted language used in this course.
  • Language Characteristics:
    • High-Level vs. Low-Level: How close to machine language.
    • General vs. Targeted: General-purpose languages can handle a broad range of tasks.
    • Interpreted vs. Compiled: Interpreted languages run directly from source code, while compiled languages are converted to object code first.

Python Basics

Data Types and Operations

  • Primitive Data Types: Numbers and strings.
  • Creating Expressions: Using operators (addition, multiplication, etc.) to create expressions.
  • Variable Assignment: Storing values in variables for later use.

Examples in Python

  • Basic Operations: Arithmetic operations using numbers and string concatenation.
  • Common Errors: Understanding static semantic errors and syntax errors.

Conclusion

  • Next Steps: Further exploration of Python's syntax and capabilities in future lectures.
  • Action Items: Sign up for recitation and familiarize with the Python shell.