Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📘 CS50x — Harvard's Introduction to Computer Science


📚 Course Curriculum — CS50x 2025

Week Topic Skills & Concepts Covered Status
Week 0 🟡 Scratch Computational thinking, binary & ASCII representation, abstraction, algorithms, pseudocode, Scratch (functions, variables, loops, conditionals, events, threads) ✅ Completed
Week 1 🔵 C C syntax, compiling, data types, variables, conditionals, loops, CLI/Linux, operators, integer overflow, floating-point imprecision, debugging ✅ Completed
Week 2 🔵 Arrays Preprocessing, compiling, assembling, linking, debugging, arrays, strings, command-line arguments, cryptography ✅ Completed
Week 3 🔵 Algorithms Linear & binary search, bubble/selection/merge sort, Big O notation (O, Ω, Θ), recursion ✅ Completed
Week 4 🔵 Memory Pointers, dynamic memory allocation (malloc/free), stack & heap, buffer overflow, file I/O, image manipulation ✅ Completed
Week 5 🔵 Data Structures Abstract data types, queues, stacks, linked lists, trees, binary search trees, hash tables, tries ✅ Completed
Week 6 🟢 Python Python syntax, functions, variables, conditionals, loops, modules, packages — transitioning from C ✅ Completed
Week 6.5 🤖 Artificial Intelligence Machine learning, neural networks, large language models, AI ethics, prompt engineering ✅ Completed
Week 7 🗄️ SQL Relational databases, tables, data types, CRUD statements, constraints, indexes, transactions, SQL injection attacks, race conditions ✅ Completed
Week 8 🌐 HTML, CSS, JavaScript Internet (TCP/IP, DNS, HTTP), HTML tags & attributes, CSS selectors & properties, JS variables, loops, DOM events, regular expressions ✅ Completed
Week 9 🌶️ Flask Flask framework, routing, decorators, HTTP requests & responses, sessions, cookies, full-stack web development ✅ Completed
Week 10 🎓 The End Final project, course retrospective, life beyond CS50 ✅ Completed


Welcome to CS50x — Harvard's Introduction to Computer Science (2025 edition)!

This repository contains my complete coursework, exercises, and projects (including the final project) for CS50x taught through edX and Harvard's official curriculum.

⚠️ All CS50x problem sets and projects are organized into branches and tags. To explore my progress, please check the corresponding branches or tags.


🚀 About the Course

CS50x is an entry‑level course that teaches you how to think algorithmically and solve problems efficiently. It covers fundamentals of computer science and programming using languages such as C, Python, SQL, and JavaScript, alongside essential concepts like algorithms, data structures, memory, and web development.

This repository is a complete log of my journey through the course — from problem sets to my final capstone project.


📌 The primary project here is Weird Length Converter — a Flask‑based web application that allows users to compare and convert units in a fun & interactive way.


💡 Project — Weird Length Converter

🎬 Video Demo

Watch the demo here: 👉 https://youtu.be/SeTML0uMCH0


📂 Repository Contents

Below you'll find the major sections included in this repository:

├── flask_session/      # Flask session data
├── static/             # Static files (CSS, images)
├── templates/          # HTML templates for web apps
├── app.py              # Main Flask application
├── helpers.py          # Helper functions
├── requirements.txt    # Python dependencies
├── weirdcalc.db        # SQLite database
└── README.md           # This file

📌 Features & Functionality

🔍 Core Features

Feature Description
Length Conversion Convert one object's length into the equivalent of another.
Custom Objects Users can add, edit, and delete objects with custom lengths.
User Accounts Registration & login system with secure session management.
Instant Feedback JavaScript updates conversion results without reloading.

🧠 Technologies Used

Layer Technologies
Backend Python, Flask
Frontend HTML, CSS, JavaScript
Database SQLite3
Dependencies See requirements.txt

🛠 Application Workflow

User Authentication

  • Registration: Create account with username & password.
  • Login: Access converter dashboard upon successful login.
  • Session Management: Users remain logged in to manage custom objects.

Conversion Logic

  1. Select an object as the source and one as the target.
  2. Input a quantity for the source.
  3. View results instantly as equivalent units of the target object.

Custom Object Management

  • Users can add, edit, or delete custom objects.
  • Objects are stored with names and length values (in meters).

📁 Detailed File Breakdown

🧩 Flask Backend

  • app.py — Main application logic — routes, session checks, and CRUD operations.
  • helpers.py — Utility functions (e.g., apology() for error messages and login_required() decorator).
  • requirements.txt — Lists all Python packages required to run the app locally.

🖼 Frontend

  • templates/ — HTML files for rendering UI pages (login, register, converter, etc.).
  • static/ — Contains CSS styles and image assets for the web interface.

🗃 Database

  • weirdcalc.db — Stores user accounts and custom object data in SQLite format.

📌 Installation & Setup

To get this project running locally:

1. Clone the repo:

git clone https://github.com/AOgit/CS50x.git
cd CS50x

2. Create a virtual environment:

python3 -m venv venv
source venv/bin/activate   # macOS/Linux
venv\Scripts\activate      # Windows

3. Install dependencies:

pip install -r requirements.txt

4. Run the application:

python app.py

5. Open your browser at http://localhost:5000


🧪 Usage Examples

# Add a new object:
POST /add-object
{"name": "Eiffel Tower", "length": 324}

# Convert 3 parrots to Everests:
GET /convert?from=parrot&to=everest&amount=3

📈 Future Enhancements

Potential improvements I plan to work on:

  • Add measurement categories (units, distances, weights)
  • Support mobile‑friendly layout
  • Add internationalization (multilingual UI)
  • Deploy to a cloud hosting provider (e.g., Render / Heroku)

⚖️ License

This repository is open source and licensed under the MIT License. Feel free to use and adapt it under terms of the license.


🧑‍💻 Acknowledgments

  • Harvard University & CS50 Staff for an amazing course.
  • All mentors, peers, and online communities who helped me throughout CS50.

📬 Contact

GitHub: https://github.com/AOgit

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages