Skip to content

BogdanOtava/CS50x

Repository files navigation

🏷️ About CS50

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.



💻 About the Repository

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.



📕 Academic Honesty

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.



📖 Content


▶️ Notes


Markdown

  • Notes - contains notes I took from various sources, mostly from each week's notes section.

▶️ Week 1 - C


C


▶️ Week 2 - Arrays


C

  • 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.


▶️ Week 3 - Algorithms


C

  • 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.


▶️ Week 4 - Memory


C


▶️ Week 5 - Data Structures


C

  • 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.


▶️ Week 6 - Python


Python

  • 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.


▶️ Week 7 - SQL


SQLite

  • 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.


▶️ Week 8 - HTML, CSS, JavaScript


HTML5 CSS3 JavaScript Bootstrap

  • L-8 Trivia - simple webpage that lets users answer trivia questions.

  • PS-8 Homepage - simple web application with multiple pages.


▶️ Week 9 - Flask


Python Flask SQLite HTML5 CSS3 JavaScript Bootstrap

  • L-9 Birthdays - web application that keeps track of birthdays.

  • PS-9 Finance - website via which users can 'buy' and 'sell' stocks.


▶️ Final Project



▶️ Scratch


  • Whack-a-Mouse - a simple Scratch game which is a combination of Space Invaders and Whack-a-Mole.


📚 Credits

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.