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

  1. Expressions 1 (Jan 25): (video)
  2. Expressions 2 (Jan 27): (video)
  3. Expressions 3 (Jan 27): (video)
  4. Expressions 4 (Jan 29): (video)
  5. Expressions 5 (Feb 1): (video)
  6. Variables 1 (Feb 1): (video)
  7. Arithmetic 1 (Feb 2): (video)
  8. Expressions 6 (Feb 3): (video)
  9. Functions 1 (Feb 8): (video)
  10. Functions 2 (Feb 8): (video)
  11. Functions 3 (Feb 10): (video)
  12. Expressions 7 (Feb 10): (video)
  13. Variables 2 (Feb 12): (video)
  14. Variables 3 (Feb 19): (video)
  15. Variables 4 (Feb 19): (video)
  16. Lists 1 (Feb 22): (video)
  17. Statements 1 (Feb 23): (video)
  18. Expressions 8 (Feb 23): (video)
  19. Statements 2 (Feb 23): (video)
  20. Statements 3 (Feb 24): (video)
  21. Expressions 9 (Mar 1): (video)
  22. Expressions 10 (Mar 1): (video)
  23. Expressions 11 (Mar 3): (video)
  24. Mutability 1 (Mar 3): (video)
  25. Linked Structures 1 (Mar 8): (video)
  26. Recursion 1 (Mar 15): (video
  27. Recursion 2 (Mar 17): (video)
  28. Objects 1 (Mar 19): (video)
  29. Objects 2 (Mar 22): (video)
  30. Objects 3 (Mar 24): (video)
  31. Sorting 1 (Mar 29): (video)
  32. Sorting 2 (Mar 31): (video)
  33. Sorting 3 (Mar 31): (video)
  34. Complexity 1 (Apr 2): (video)
  35. Complexity 2 (Apr 2): (video)
  36. Complexity 3 (Apr 5): (video)
  37. Complexity 4 (Apr 5): (video)
  38. Complexity 5 (Apr 6): (video)
  39. Complexity 6 (Apr 6): (video)
  40. Representation 1 (Apr 19): (video)
  41. Representation 2 (Apr 19): (video)
  42. Representation 3 (Apr 21): (video)
  43. Storage 1 (Apr 21): (video)
  44. Events 1 (Apr 23): (video)
  45. Events 2 (Apr 23): (video)
  46. Graphics 1 (Apr 26): (video)
  47. Graphics 2 (Apr 26): (video)

 

TUTORIALS

 

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

QUIZZES

 

SCHEDULE

Jan 25: Introduction

  • Assignment: Try to go through the setup instructions for Python and Spyder.

Jan 26: Lab 1

Jan 27: Expressions

Jan 29: Flattening Expressions

Feb 1: Variables

  • Suggested Reading: Composing Programs, 1.1 and 1.2.
  • Activity (“Swaparoo”): (instructions)

Feb 2: Lab 2

Feb 3: Booleans

Feb 5: Quiz 1

Feb 8: Functions

Feb 9: Lab 3

Feb 10: Higher-Order Functions

Feb 12: Variable Scope

Feb 19: Environment Diagrams

Feb 22: Lists

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

Mar 7: Trees

Mar 8: Lab 7

Mar 12: Quiz 3

Mar 15: Recursion

Mar 16: Lab 8

Mar 17: More Recursion

Mar 19: Objects

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

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

Apr 19: Base-k Representation

Apr 20: Lab 12

Apr 21: Character Encodings/Files

Apr 23: Asynchronous Events

Apr 26: Graphics and Animation

Apr 28: Denouement