CS50 is an online introductory course on computer science and programming. It teaches the languages C, Python, SQL, HTML, CSS & JavaScript, as well as fundamental computer science concepts such as algorithms & data structures, abstraction, encapsulation, resource management, security, and the Flask web framework.
An important part of the course, it's submitting the labs and problem sets, as well as the final project for feedback. This repository contains the solutions I've come up with for the problem sets and labs. The final project is in a separate repository, the link is below.
Also down below are links and short descriptions for each of the projects. If you'd like to read more about the implementation requirements, there's a link in each folder that will lead to them.
Keep in mind the course's academic honesty. You should try figuring out a solution yourself before looking at other implementations. Also, bear in mind that I am a beginner, I've taken the course to learn, so the solutions might not be the best implementations.
- Notes - contains notes I took from various sources, mostly from each week's notes section.
-
L-1 - Population Growth - determine how long it takes for a population to reach a particular size.
-
PS-1 - Mario Less - create a right-aligned pyramid of blocks.
-
PS-1 - Mario More - create an adjacent pyramid of blocks.
-
PS-1 - Cash - minimize the number of coins given to a customer when making a change using greedy algorithms.
-
L-2 Scrabble - determine which of two scrabble words is worth more.
-
PS-2 Caesar - program that encrypts messages using Caesar's cipher.
-
PS-2 Readability - computes the approximate grade level needed to comprehend some text.
-
L-3 Sort - analyze three sorting programs to determine which algorithms they use.
-
PS-3 Plurality - program that runs a plurality election.
-
PS-3 Runoff - program that runs a runoff election.
-
L-4 Volume - modify the volume of an audio file.
-
PS-4 Filter Less - program that applies filters to BMPs.
-
PS-4 Recover - program that recovers JPEGs from a forensic image.
-
L-5 Inheritance - simulates the inheritance of blood types for each member of a family.
-
PS-5 Speller - program that spell-checks a file using a hash table.
-
L-6 World Cup - program to run simulations of the FIFA World Cup.
-
PS-6 Mario Less - create a right-aligned pyramid of blocks.
-
PS-6 Mario More - create an adjacent pyramid of blocks.
-
PS-6 Cash - minimize the number of coins given to a customer when making a change using greedy algorithms.
-
PS-6 Credit - program that determines whether a provided credit card number is valid according to Luhn's algorithm.
-
PS-6 Readability - computes the approximate grade level needed to comprehend some text.
-
PS-6 DNA - program that identifies a person based on their DNA.
-
L-7 Songs - SQL queries that answer questions about a database of songs.
-
PS-7 Movies - SQL queries that answer questions about a database of movies.
-
PS-8 Fiftyville - write SQL queries to solve a mystery.
-
L-8 Trivia - simple webpage that lets users answer trivia questions.
-
PS-8 Homepage - simple web application with multiple pages.
-
L-9 Birthdays - web application that keeps track of birthdays.
-
PS-9 Finance - website via which users can 'buy' and 'sell' stocks.
- Portfolio Website - full-stack portfolio website.
- Whack-a-Mouse - a simple Scratch game which is a combination of Space Invaders and Whack-a-Mole.
First of all, a huge thank you to Prof. David J. Malan and the rest of the CS50 staff for giving us this free learning opportunity. I thoroughly recommend the CS50 course for anyone who wants to get into or improve their skills in the Computer Science field.
If you'd like to know more about CS50, I'll leave a few link down below.