Skip to content

Latest commit

 

History

History
124 lines (96 loc) · 3.94 KB

README.md

File metadata and controls

124 lines (96 loc) · 3.94 KB

CS50

Introduction to the intellectual enterprises of computer science and the art of programming. This course teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web programming. Languages include C, Python, and SQL plus HTML, CSS, and JavaScript. Problem sets inspired by the arts, humanities, social sciences, and sciences. Course culminates in a final project.

Certificate link: https://certificates.cs50.io/e4ac5b9e-16dd-4d07-b903-cabc5c4da12b.pdf?size=letter

Week 0: Introduction

  • Definition of computer science
  • Representations through binary data
  • Bit, byte and transistor processing concepts
  • Definition and structure of algorithms and pseudocode
  • Functions, Booleans, conditions, loops, variables

Week 1: C

  • First program written in C
  • printf function, use of placeholders and line breaks (\n)
  • Compiling programs with clang -o
  • Getting input
  • if, else if and else conditions
  • while, do while and for loops
  • Data types: bool, char, string, int, unsigned int, long, float and double
  • Mathematical operators: *+, -, , /, ^ and %
  • Defining roles
  • Inaccuracies with floating points

Week 2: Debugging and Arrays

  • Syntax, runtime and semantic bugs
  • Debugging with GNU Debugger (GDB)
  • Memory and RAM
  • Concept of array
  • Defining an array in C
  • Iteration with for loop
  • Numeric and string arrays
  • Introduction to cryptography
  • int argc and string argv arguments

Week 3: Algorithms

  • Execution time with Big O: O(n²), O(n log n), O(n), O(log n), O(1)
  • Runtime with Big Ω: Ω(n²), Ω(n log n), Ω(n), Ω(n log n), Ω(1)
  • Linear search (Linear search)
  • Binary search (Binary search)
  • Bubble sort and its properties (Ω(n), O(n²))
  • Selection sort and its properties (Θ(n²))
  • Recursion
  • Insertion sort and its characteristics (Θ(n²))
  • Merge sort and its characteristics (Θ(n log n))
  • Quick sort
  • Definition of structures

Week 4: Memory

  • Hexadecimal

  • Pointers

  • Dynamic memory allocation*

  • Using malloc and realloc functions

  • Copying and inverting string values

  • Heaps and stacks

  • Getting input with scanf and fscanf

  • fopen, fread, fwrite, fgetc and fputc functions

  • Image manipulation

  • File recovery

Week 5: Data Structures

  • Resetting arrays size with realloc

  • Definition, properties and construction of the following data structures:

    • Linked Lists

    • Trees

    • Hash tables (and hash functions)

    • Tries

  • Definition and characteristics of the following abstract data structures:

    • Queues
    • Stacks

Week 6: Python

  • Basic concepts: print function, if declaration, while and for loops
  • Data types: strings, boolean, integers, floats and Nonetype
  • Data structures: list, set, dictionary, range and tuple
  • Defining roles
  • Getting input with input() function
  • Reading command line arguments with sys.argv
  • upper, lower and append methods
  • len and sort functions
  • Regular Expressions
  • Implementation of Artificial Intelligence for facial recognition and speech recognition from open source libraries

Week 7: SQL

  • Problems with a CSV database
  • Manipulation of a Database with SQLite3
  • Creating tables
  • Importing data into a database with Python
  • SELECT, UPDATE, DELETE commands
  • WHERE, ORDER BY and LIMIT commands
  • Selecting data from multiple tables with JOIN

Week 8: Information

  • Review of learned concepts
  • Ethics in programming:
    • Passwords
    • Cookies
    • Improper use of photos and videos
  • Project presentation (Choose your track):
    • Games (with Moon)
    • Mobile
      • Android (with Java)
      • iOS (with Swift)
    • Web (with HTML, CSS and Python)
  • Chosen Project: Games