CSCI 121: Computer Science Fundamentals I
REED COLLEGE, SPRING 2021
An introduction to computer science, covering topics including elementary algorithms and data structures, functional and procedural abstraction, data abstraction, object orientation, logic, and the digital representations of numbers. Emphasis is on mathematical problems and calculations and on recursive algorithms and data structures. The course includes a significant programming laboratory component where students will solve computational problems using a high-level language. The mechanisms for processing and executing programs will be surveyed.
BASIC INFO
Professor: Mark Hopkins, hopkinsm@reed.edu
Lecture Schedule: MWF 1215-105pm (Section 1), MWF 135-225pm (Section 2), MWF 310-4pm (Section 3). All sections are online at https://zoom.us/j/3344875668.
Lab Schedule: Tu 315-435pm (Section 1), Tu 140-3pm (Section 2), Tu 850-1010am (Section 3). All sections are online at https://zoom.us/j/3344875668. For assistance during lab, use the Help Queue.
Office Hours: MWTh 4-6pm (all by appointment, sign up here, the Zoom meeting link is here).
Syllabus: downloadable here
Course Information Sheet: downloadable here
Drop-In Tutoring Schedule: here
UPCOMING DEADLINES
- Tuesday, May 11 (due end of day): HW13 (github)
LECTURE VIDEOS
- Expressions 1 (Jan 25): (video)
- Expressions 2 (Jan 27): (video)
- Expressions 3 (Jan 27): (video)
- Expressions 4 (Jan 29): (video)
- Expressions 5 (Feb 1): (video)
- Variables 1 (Feb 1): (video)
- Arithmetic 1 (Feb 2): (video)
- Expressions 6 (Feb 3): (video)
- Functions 1 (Feb 8): (video)
- Functions 2 (Feb 8): (video)
- Functions 3 (Feb 10): (video)
- Expressions 7 (Feb 10): (video)
- Variables 2 (Feb 12): (video)
- Variables 3 (Feb 19): (video)
- Variables 4 (Feb 19): (video)
- Lists 1 (Feb 22): (video)
- Statements 1 (Feb 23): (video)
- Expressions 8 (Feb 23): (video)
- Statements 2 (Feb 23): (video)
- Statements 3 (Feb 24): (video)
- Expressions 9 (Mar 1): (video)
- Expressions 10 (Mar 1): (video)
- Expressions 11 (Mar 3): (video)
- Mutability 1 (Mar 3): (video)
- Linked Structures 1 (Mar 8): (video)
- Recursion 1 (Mar 15): (video)
- Recursion 2 (Mar 17): (video)
- Objects 1 (Mar 19): (video)
- Objects 2 (Mar 22): (video)
- Objects 3 (Mar 24): (video)
- Sorting 1 (Mar 29): (video)
- Sorting 2 (Mar 31): (video)
- Sorting 3 (Mar 31): (video)
- Complexity 1 (Apr 2): (video)
- Complexity 2 (Apr 2): (video)
- Complexity 3 (Apr 5): (video)
- Complexity 4 (Apr 5): (video)
- Complexity 5 (Apr 6): (video)
- Complexity 6 (Apr 6): (video)
- Representation 1 (Apr 19): (video)
- Representation 2 (Apr 19): (video)
- Representation 3 (Apr 21): (video)
- Storage 1 (Apr 21): (video)
- Events 1 (Apr 23): (video)
- Events 2 (Apr 23): (video)
- Graphics 1 (Apr 26): (video)
- Graphics 2 (Apr 26): (video)
TUTORIALS
- Instructions for setting up your computer:
- Instructions for how to use Github Classroom: (instructions) (demo)
HOMEWORK AND LAB MATERIALS
- Lab 1 materials: (assignment) (data)
- HW1 (due Friday, Jan 29 at noon, through Gradescope): (instructions) (solution)
- HW2 (“Bake Sale”, due Friday, Feb 5 at noon, through Github Classroom): (github)
- HW3 (“Book Tour”, due Friday, Feb 12 at noon, through Github Classroom): (github) (solution)
- HW4 (“Between the Lines”, due Friday, Feb 19 at noon, through Gradescope [Q1-2] and Github Classroom [Q3-4]): (github) (solution)
- HW5 (“The Count’s Account”, due Monday, Mar 1 at noon, through Github Classroom): (github) (solution)
- HW6 (“To the Carpathians!”, due Friday, Mar 5 at noon, through Github Classroom): (github) (solution)
- HW7 (“The Coffins of Cluj”, due Friday, Mar 12 at noon, through Github Classroom): (github) (solution)
- HW8 (“Newcroak”, due Monday, Mar 22 at noon, through Github Classroom): (github) (solution)
- HW9 (“Dispatches”, due Monday, Mar 29 at noon, through Github Classroom): (github) (solution)
- HW10 (“Order Muppets”, due Monday, Apr 5 at noon, through Github Classroom): (github) (solution)
- HW11 (“The Great Escape”, due Monday, Apr 19 at noon, through Github Classroom): (github)
- HW12 (“A Little Bit of Knowledge”, due Monday, Apr 26 at noon, through Github Classroom): (github)
- HW13 (“Breakout”, due Tuesday, May 11 at noon, through Github Classroom): (github)
PROJECTS
- Project 1 (“Greed”, due Monday, Mar 8 at noon, through Github Classroom): (github) (solution)
- Project 2 (“Bookie Monster”, due Saturday, Apr 3, through Github Classroom): (github) (solution)
IN-CLASS ACTIVITIES
- Activity 1 (“Expression Trees”): (activity)
- Activity 2 (“Expression Telephone”): (activity)
- Activity 3 (“Swaparoo”): (activity)
- Activity 4 (“Staffing”): (activity) (solution)
- Activity 5 (“Lambda Lambda Lambda”): (activity) (solution)
- Activity 6 (“Quality Assurance”): (activity) (solution)
- Activity 7 (“Composing”): (activity) (solution)
- Activity 8 (“Beaker”): (activity)
- Activity 9 (“Being Green”): (activity) (solution)
- Activity 10 (“Lineup”): (activity)
- Activity 11 (“Cookie Swap”): (activity) (solution)
- Activity 12 (“Cookie Salon”): (activity) (solution)
- Activity 13 (“Oscarpreneur”): (activity) (solution)
- Activity 14 (“Market Research”): (activity) (solution)
- Activity 15 (“Economies of Scale I”): (activity) (solution)
- Activity 16 (“Economies of Scale II”): (activity) (solution)
- Activity 17 (“Economies of Scale III”): (activity) (solution)
- Activity 18 (“Numerology”): (activity) (solution)
- Activity 19 (“The Fix is In”): (activity) (solution)
- Activity 20 (“Puzzling Edicts”): (activity) (solution)
- Activity 21 (“Rationalism”): (activity) (solution)
- Activity 22 (“Cookipedia”): (activity) (solution)
- Activity 23 (“ICDb”): (activity) (solution)
- Activity 24 (“Dice Assistance”): (activity)
- Activity 25 (“Selection”): (activity) (solution)
- Activity 26 (“Selecting”): (activity)
- Activity 27 (“Success Metrics”): (activity)
- Activity 28 (“The Devil of Alphabet City”): (activity)
- Activity 29 (“Baseless Claims”): (activity)
- Activity 30 (“R&D”): (activity)
- Activity 31 (“Globalization”): (activity)
- Activity 32 (“Memoranda”): (activity) (solution)
- Activity 33 (“Product Demo”): (activity)
- Activity 34 (“Key Demo”): (activity) (solution)
- Activity 35 (“Version 2.0”): (activity) (solution)
- Activity 36 (“Relaunch”): (activity) (solution)
QUIZZES
- Quiz 1 (Feb 5): (quiz) (solution)
- Quiz 2 (Feb 26): (quiz) (solution)
- Quiz 3 (Mar 12): (quiz) (solution)
- Quiz 4 (Mar 26): (quiz) (solution)
- Quiz 5 (Apr 9): (quiz) (solution)
SCHEDULE
Jan 25: Introduction
- Assignment: Try to go through the setup instructions for Python and Spyder.
Jan 26: Lab 1
- Instructions: (assignment)
- Data: (data)
Jan 27: Expressions
- Activity (“Expression Trees”): (instructions)
Jan 29: Flattening Expressions
- Activity (“Expression Telephone”): (instructions)
Feb 1: Variables
- Suggested Reading: Composing Programs, 1.1 and 1.2.
- Activity (“Swaparoo”): (instructions)
Feb 2: Lab 2
- Github Classroom: (instructions) (demo)
- HW2: (github)
Feb 3: Booleans
- Activity (“Staffing”): (instructions) (solution)
Feb 5: Quiz 1
Feb 8: Functions
- Activity (“Lambda Lambda Lambda”): (activity) (solution)
- Activity (“Quality Assurance”): (activity) (solution)
Feb 9: Lab 3
- HW3: (github)
Feb 10: Higher-Order Functions
Feb 12: Variable Scope
- Activity (“Beaker”): (activity)
Feb 19: Environment Diagrams
- Suggested Reading: Composing Programs, 1.3 and 1.4.
- HW4: (github) (solution)
- Activity (Being Green): (activity) (solution)
Feb 22: Lists
- Activity (Lineup): (activity)
Feb 23: Lab 5
Feb 24: While Statements
Feb 26: Quiz 2
Mar 1: Dictionaries and Sets
Mar 2: Lab 6
Mar 3: Mutability
Mar 5: Linked Lists
- Activity (Economies of Scale I): (activity) (solution)
- Activity (Economies of Scale II): (activity) (solution)
- Activity (Economies of Scale III): (activity) (solution)
Mar 7: Trees
Mar 8: Lab 7
- HW7: (github)
Mar 12: Quiz 3
Mar 15: Recursion
Mar 16: Lab 8
Mar 17: More Recursion
Mar 19: Objects
- Activity (Rationalism): (activity) (solution)
- Suggested Reading: Composing Programs 1.7
- Optional Recursion Practice: (link) (solution)
Mar 22: More Objects
Mar 23: Lab 9
Mar 24: Inheritance
Mar 26: Quiz 4
Mar 29: Sorting
Mar 30: Lab 10
Mar 31: Efficiency of Sorting
- Activity (Selecting): (activity)
Apr 2: Complexity
- Activity (Success Metrics): (activity)
Apr 5: Polynomial Complexity
- Activity (The Devil of Alphabet City): (activity)
Apr 6: Logarithmic Complexity
Apr 7: Lab 11
- HW11: (github)
Apr 19: Base-k Representation
- Activity (Globalization): (activity)
Apr 20: Lab 12
- HW12: (github)
Apr 21: Character Encodings/Files
Apr 23: Asynchronous Events
Apr 26: Graphics and Animation
Apr 28: Denouement
- Greed International Invitational: (espn4 footage)