/CS50X

Introduction to Computer Science (edX, Harvard)

Primary LanguageHTML

CS50X

Introduction to Computer Science (edX, Harvard)

Overview

CS50X , 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. An entry-level course taught by David J. Malan, CS50X teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development. Languages include C, Python, SQL, and JavaScript plus CSS and HTML. Problem sets inspired by real-world domains of biology, cryptography, finance, forensics, and gaming. The on-campus version of CS50X , CS50, is Harvard's largest course.

Objectives

Students who take CS50X learn:

  • a broad and robust understanding of computer science and programming
  • how to think algorithmically and solve programming problems efficiently
  • concepts like abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development
  • familiarity in a number of languages, including C, Python, SQL, and JavaScript plus CSS and HTML
  • how to engage with a vibrant community of like-minded learners from all levels of experience
  • how to develop and present a final programming project to your peers

Projects

CS50X includes ten lectures, each of which includes a problem set. The problem sets require students to apply the topics covered during the lectures in one or more projects. The course finishes with one final project. The project's instructions (I) and repository files (R) can be accessed by clicking on the associated links.

  • Week 0: Scratch
    • Scratch: a game made using Scratch (I, R)
  • Week 1: C
    • Hello: print a simple greeting using C (I, R)
    • Mario: print a double half pyramid using C (I, R)
    • Credit: determine whether a credit card number is valid according to Luhn's algorithm using C (I, R)
  • Week 2: Arrays
    • Scrabble: determine which of two Scrabble words is worth more using C (I, R)
    • Readability: compute the approximate grade level needed to comprehend sample text using C (I, R)
    • Substitution: implement a substitution cypher using C (I, R)
  • Week 3: Algorithms
    • Sort: analyze three sorting programs to determine which algorithms they use using C (I, R)
    • Plurality: simulate a plurality election using C (I, R)
    • Tideman: simulate a Tideman election using C (I, R)
  • Week 4: Memory
    • Volume: modify the volume of audio files using C (I, R)
    • Filter: apply filters to BMP files using C (I, R)
    • Recover: recover JPEGs from a forensic image using C (I, R)
  • Week 5: Data Structures
    • Inheritance: simulate the inheritance of blood types for each member of a family using C (I, R)
    • Speller: spell-check a file using a hash table using C (I, R)
  • Week 6: Python
    • World-Cup: run simulations of the FIFA World Cup (I, R)
    • Hello: print a simple greeting using Python (I, R)
    • Mario: print a double half-pyramid using Python (I, R)
    • Credit: determine whether a credit card number is valid according to Luhn's algorithm using Python (I, R)
    • Readability: compute the approximate grade level needed to comprehend sample text using Python (I, R)
    • DNA: identify a person based on their DNA using Python (I, R)
  • Week 7: SQL
    • Songs: write SQL queries to answer questions about a database of songs (I, R)
    • Movies: write SQL queries to answer questions about a database of movies (I, R)
    • Fiftyville: write SQL queries to solve a mystery (I, R)
  • Week 8: HTML, CSS, JavaScript
    • Trivia: write a webpage that lets users answer trivia questions using HTML, CSS, and JavaScript (I, R)
    • Homepage: build a simple homepage using HTML, CSS, and JavaScript (I, R)
  • Week 9: Flask
    • Birthdays: create a web application to keep track of friends' birthdays using Flask (I, R)
    • Finance: implement a website via which users can "buy" and "sell" stocks using Flask (I, R)
  • Week 10: Final Project
    • Final Project: an online game that uses regular expressions to decrypt cyphertext (I, R)
      Recryptex