You are currently viewing Harvard Extension School Intro to Computer Science with Python (CSCI S-7) Course Review
Tom G Herman Intro to Computer Science with Python

Harvard Extension School Intro to Computer Science with Python (CSCI S-7) Course Review

I took Introduction to Computer Science with Python as my on-ramp to serious programming and as the final step toward my Data Analytics Graduate Certificate. This course is designed for people without prior coding experience, but it ramps up quickly and goes deep.

I took this course during the summer semester 2025, and had a very similar experience to taking STAT S-100 in the summer of 2024… This course is basically an entire semester crammed into only six weeks, so buckle up! Seriously, if you have things going on during the summer, a full time job, kids, etc., maybe think twice about taking this during the summer. It’s already a very difficult class, but the pace pushes things to another level. You’ll be expected to attend class twice a week (three hours at a time), plus two hour-long sections every week. But the real killer is the weekly problem sets, which get more and more complicated as the weeks go by. You can easily spend 20 hours per week or more attending office hours and trying to solve some of these problems. Don’t say I didn’t warn you! Now on to the course content…

What the course actually teaches

The course starts with Scratch to introduce computational ideas (sequencing, conditionals, loops, events), then moves quickly into Python. Even though we only used Scratch for a week, I appreciated how it taught important programing concepts in an intuitive, relatable and visual way. And it’s surprisingly sophisticated! Here are the fundamental concepts we covered throughout the course:

  • Programming foundations: variables, expressions, basic data types, and core collections (lists, dictionaries, sets, tuples)
  • Control flow & recursion: if/elif/else, loops, recursive definitions and how to reason about base cases and call stacks
  • Abstraction & design: functions, classes & objects for encapsulation and modularity
  • Algorithmic thinking: problem decomposition, algorithm analysis (intro to time/space complexity), and measuring performance
  • Data work & visualization: basic text processing, simple graphics, and using Python’s standard libraries to explore data (ties into Harvard’s QRD requirement: think critically about data, inference, limits)
  • Great ideas in CS: a taste of supervised machine learning, why efficiency matters, and the concept of intractable/unsolvable problems (some problems remain out of reach even with faster computers)

In general, the goal isn’t to just “get the right answer,” but to write code that’s readable, testable, and maintainable—skills that transfer to any language.

I previously took some intro courses to C++ and Javascript (which definitely helped me succeed in this course), and Python is closer to natural language and generally more intuitive. For example, you don’t have to worry about semicolons at the end of each line. But it still had all the same key concepts that I learned in other languages, so the concepts you learn with Python are definitely transferable.

    Keys for success

    1. Consider getting some programming experience first. While there is no prerequisite for this course, my previous experience (particularly with Javascript) definitely helped. Everything I learned with Javascript directly translated to this Python class.
    2. Keep up. The first week starts with Scratch programming, which is cutesy and pretty easy to follow, but the course ramps up FAST, and the concepts just continue to build on each other. If you fall behind, catching up will be very difficult (if not impossible).
    3. Take a breath and just think through the problem. At first glance, many of the problems will be very intimidating. I got anxious just reading through many of them. But if you take a step back and think logically how to solve it (step by step), you’d be surprised how far you can go.
    4. Start with pseudocode. This is related to #2… Start by outlining your approach, thought process and steps. The actual code will come to you more easily. If all else fails, take it to office hours and it’ll be easier to get help if you’ve at least thought through the problem and come up with some potential solution approaches.
    5. Start the problem sets early. All the problems take some serious thinking and troubleshooting, especially toward the end of the course. Chip away at them every day to keep yourself on track and avoid running out of time and energy.
    6. Go to office hours. You might have no choice with the difficulty of some of the problems.
    7. Take advantage of extra credit. In my class, there were always a few additional problems you could complete for extra credit. If you’re not a great test-taker under pressure, the extra credit can help offset that.
    8. Brace yourself. Make sure you have the bandwidth for this course in light of any other life commitments, especially if you’re taking this course during the summer.

    Final thoughts

    This class did exactly what it promised: it turned me from a non-coder into someone who can think like a computer scientist and express solutions clearly in Python. It’s beginner-friendly without being watered down—plenty of rigor, lots of practice, and a foundation that transfers cleanly to data science. Python is super versatile and getting more and more popular, so this course was definitely worth the cost, time and effort I invested.

    Cheers,

    Tom