CSCI0050: A Data-Centric Introduction to Programming

Textbook: For the first part of the course, we will be roughly following the early chapters of Programming and Programming Languages (PAPL), by Brown CS Professor Shriram Krishnamurthi. We will not be doing the entire book (the second half is designed for a more advanced course than ours). We will cover some early chapters out of order, as befits the goals and structure of this course.

We will switch to different materials for the last two weeks of the course. Details on those will appear later. You do not need to purchase any textbooks for this course.

Assignments: Students will complete several programming assignments, design exercises, and quizzes (some in-class, some on-line). There will be 1-2 assignments due each calendar week. There will be no exams. In the "Exercises and Assignments" column, graded work is prefixed with "HWK" or "QUIZ". Items labeled "PRACTICE" are not graded (or submitted), and are simply provided to help students practice smaller parts of lecture material outside the context of graded work.

End of the Course: The course does NOT have a final exam during the exam period. However, each student will need to schedule a brief (roughly 20 minute) individual meeting with Professor Fisler to review their work on the final assignment/project. Most of those meetings will occur during the exam period, at a mutally-agreeable time. If you have travel plans that warrant leaving Providence before the exam period, let Professor Fisler know and she will attempt to schedule your review for the day after classes end.



Readings and Handouts

Exercises and Assignments

June 26

  • What are Computer Science and Programming?

  • Expressions

  • Numbers, Strings, and Images

June 28

  • Evaluating Programs

  • Booleans

  • Types

  • Introduction to Tables

    June 29

    • Manipulating Tables

    July 3

    • Basic Errors in Table Data

    • Introduction to Functions

    • The Design Recipe

      July 5

      • Evaluating Functions

      • Functions Practice

      • Pick up a clicker from the IT Service desk (first floor CIT)

      • Register your clicker in Canvas

      July 6

      • Table Extraction and Statistics

      • Introduction to Lists

      July 10

      • Processing Lists

      July 12

      • Accumulators

      • Higher Order Functions

        July 13

        • Structures

        • Mixed Data

          July 17

          • Building Animations

          July 19

          • Planning Programs

            July 20

            • Trees

              July 24

              • Design Recap

              • Intro to Python

              July 26

              • How Python Programs Evaluate

              • Mutating Variables

              July 27

              • Loops

                July 31

                • Mutating Components

                • Classes

                • Memory Layout

                  Aug 2

                  • Lists of Multiple Classes

                  • Hashtables/Dictionaries

                  Aug 3

                  • User interaction

                  • Handling Errors

                  • Recursion Vs Updates

                  • Course Wrap-up and Evals