This is — Harvard University's introduction to the intellectual enterprises of computer science and the art of programming for majors and non‑majors alike, with or without prior programming experience.

CS50's Introduction to Computer Science
Week 0 Scratch 😺
Week 1 C
Week 2 Arrays
Week 3 Algorithms
Week 4 Memory
Week 5 Data Structures
Week 6 Python 🐍
Week 7 SQL
Week 8 Information

This course is also available on edX where anyone can enroll for free, and also submit the 8 problem sets and a final project for review and scoring. You can even (for a fee) get a verified certificate!

Why am I taking this course?

Because I hereby give myself permission to learn for fun. Because I want to practice flexing my curiosity for learning instead of curbing it. Because strengthening the basics will make other learning easier.

I have previously felt trapped in needing to prioritize learning whatever is most hands‑on and applicable straight away. I have felt like I don't have time for anything else, and I don't mean time during the day or in the course of a month, but that I am stuck in a struggle to catch up in my career. I know all developers can be overwhelmed by everything there is to learn, but that is not quite the same as coming to programming late in life and having changed careers. My background means that I can't possibly catch up with people who have been poking at computers since they were 14 and then spent years at a university with the same. I cannot go back in time to tell my younger self to discover programming and to get a CS degree. I have had to learn how to be okay with all this, and go work as a developer anyway. Not perpetually feeling like "aaaaah I must catch up", is in part about coping, about being realistic.

The sabotaging flip side though, has been a tendency for me to think that specific topics or learning deep and broad and thoroughly — has not been for me. That there is so much to learn that I need to stick with learning what I can put to use now or sometime soon. This note to Cultivate a habit of learning is over 3 years old and a lot of things have changed in how I learn. But there is still a lingering ghost of this inner demon that whispers to be practical and focused. Taking CS50 now is a way for me to silence that nonsense and work on nurturing a curiosity for learning and allowing myself to follow it.

Inspiration and role model 👩🏽‍💻

Shout-out to Vaidehi Joshi for being a badass in teaching herself computer science and making resources like base cs. I love the way she talks about why learn core concepts, for example in Intro to Computer Science. There she talks about it being empowering, and I could do with some of that.

Study group 🥳

Another important motivation: the opportunity I got to join an amazing study group where we have enrolled together. Eva has organised and we are 6 people zooming from UK, Belgium, Germany, India and Norway. We are a diverse group of coders with different backgrounds and it's going to be great.

We got this! 👊

The course can be completed at your own pace. The program is 8 weeks of lectures and problems sets, then a final project for 4 weeks. Will our study group finish in the intended 12 weeks?

Hard to predict how long we will take, and we have a plan to find out as we go. We all have more programming experience than the target students. At the same time; we are busy adults with other things going on in life besides taking this course.

It's not a race and I am not in a rush. For me it seems fun to complete together. It’s like going for a hike in a group, the point isn’t to be first or to finish as fast as possible. Everyone reaching the summit and hanging out there to celebrate the accomplishment together is the most rewarding part of the hike.