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
- Prepare Freshmen and Sophomores: Particularly those planning to major in Course Six, especially for those with little or no prior programming experience.
- Non-Majors: Enable students not planning to major in course six to gain confidence in reading and writing small pieces of code.
- Understanding Computation: Ensure all students understand the role of computation in solving technical problems.
- Career Preparation: Position students to effectively compete for jobs and internships by having computational problem-solving skills.
Tactical Goals
- Computational Thinking: Ability to use computational tools to write small scale programs.
- Understanding Programs: Ability to read and understand programs written by others.
- Capability and Limitations: Understanding what computations can and cannot do, and their costs.
- 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.