💻

Journey Through CS50: A Coding Adventure

Sep 28, 2024

Introduction to Coding and CS50

Overview

  • Coding is a valuable skill.
  • Initially, did not know anything about coding before university.
  • Found CS50, Harvard's free online course on computer science and programming.
  • Presented by David Malan.
  • Course involves rigorous weekly challenges, labs, and problem sets.

Course Structure

Week 0: Introduction to Scratch

  • Learn basics of computer science and programming.
  • Topics:
    • Functions
    • Loops
    • Conditionals
    • Variables
  • Lab: Create a game in Scratch (e.g., dodging space debris).
  • Focus on syntax and VS Code IDE.
  • Problem set options: easier or harder versions.

Week 1: Arrays and Debugging

  • Introduction to arrays.
  • Learned debugging techniques.
  • Lab and problem set challenging but manageable.

Weeks 2-5: Algorithms and Memory Management

  • Week 2: Sorting algorithms.
  • Weeks 3-5: Very challenging material, especially Tiedemann's problems.
  • Week 4: Memory management in C (painful experience).
    • Important but challenging concept.
  • Week 5: Data structures (queues, stacks, linked lists, trees, etc.).
    • Implemented spellcheck program using hash tables.

Transition to Python

  • Shifted from C to Python.
  • Python simplified many C complexities (e.g., memory allocation).
  • Revisit previous problem sets using Python.

SQL and Databases

  • Week focused on SQL, intuitive and engaging.
  • Problem set involved solving a mystery using a SQL database.

Web Development: HTML, CSS, and JavaScript

  • Basics of creating websites taught.
  • Delivered quickly; felt unprepared for JavaScript.
  • Completed a creative homepage project.

Flask and Dynamic Websites

  • Introduced Flask for hosting web applications using Python.
  • Lab involved creating dynamic web pages based on user input.
  • Encountered bugs that complicated the problem set.

Recap and Final Project

  • Final project based on learned concepts.
  • Created a portfolio website to showcase projects.

Conclusion

  • CS50 is a comprehensive and demanding course.
  • Requires significant time commitment.
  • Despite challenges, provides a solid foundation in coding.
  • Encouragement to take the course for those interested in programming.