2020 Harvard University's CS50x: Introduction to the intellectual enterprises of computer science and the art of programming

“CS50x is a course that teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, and software engineering. Languages include C, Python, and SQL plus students’ choice of: HTML, CSS, and JavaScript (for web development); Java or Swift (for mobile app development); or Lua (for game development). Problem sets inspired by the arts, humanities, social sciences, and sciences. Course culminates in a final project. Designed for concentrators and non-concentrators alike, with or without prior programming experience.” Watch this introduction video.

Please don’t copy the solutions from this repository. Keep in mind Academic Honesty. There are many great communities for support and help, such as CS50 Stack Exchange, the CS50 Subreddit and the CS50 Slack to name a few. Investing your time and energy into solving each and every problem set independently is the best way to experience the course.

Problem Sets

The course is taught through a seven-week combo of online classes (available at YouTube) and problem sets. You can access all the course’s materials at CS50x’s website.

pset1 - Introduction to C (C)

pset2 - Arrays (C)

pset3 - Algorithms (C)

Implement programs that runs Plurality and Runoff elections.

pset4 - Memory (C)

Implement a program that filters images with popular filters such as sepia, blur and grayscale.

pset5 - Data Structures (C)

Implement a program that spell-checks a file.

pset6 - Introduction to Python (Python)

Implement the previous programs in Python

pset7 - Introduction to SQL (SQL)

Solve this nice set of SQL challenges and exercises.

pset8 - Web Track (HTML, CSS, JavaScript, Flask, SQL)

Implement a personal homepage.

Final Project

Build something of interest to you, that you solve an actual problem, that you impact your community, or that you change the world. Strive to create something that outlives this course.

For this Final Project, I teamed up with a friend to build a platform (called Cookit!) where you can search for recipes based on the ingredients you have in your home, instead of searching only for the name of the recipe. The video presentation of the project is available at Youtube and the repo with code is available at Github.