| 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 |
- ✅ Completed CS50x — 2025
- 🏆 My Certificate: [https://cs50.harvard.edu/certificates/ea03d1bb-ca25-43b4-8295-855fb668a4e6]
- 📁 Original submissions (me50): https://github.com/me50/AOgit
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.
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.
Watch the demo here: 👉 https://youtu.be/SeTML0uMCH0
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
| 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. |
| Layer | Technologies |
|---|---|
| Backend | Python, Flask |
| Frontend | HTML, CSS, JavaScript |
| Database | SQLite3 |
| Dependencies | See requirements.txt |
- Registration: Create account with username & password.
- Login: Access converter dashboard upon successful login.
- Session Management: Users remain logged in to manage custom objects.
- Select an object as the source and one as the target.
- Input a quantity for the source.
- View results instantly as equivalent units of the target object.
- Users can add, edit, or delete custom objects.
- Objects are stored with names and length values (in meters).
- app.py — Main application logic — routes, session checks, and CRUD operations.
- helpers.py — Utility functions (e.g.,
apology()for error messages andlogin_required()decorator). - requirements.txt — Lists all Python packages required to run the app locally.
- templates/ — HTML files for rendering UI pages (login, register, converter, etc.).
- static/ — Contains CSS styles and image assets for the web interface.
- weirdcalc.db — Stores user accounts and custom object data in SQLite format.
To get this project running locally:
1. Clone the repo:
git clone https://github.com/AOgit/CS50x.git
cd CS50x2. Create a virtual environment:
python3 -m venv venv
source venv/bin/activate # macOS/Linux
venv\Scripts\activate # Windows3. Install dependencies:
pip install -r requirements.txt4. Run the application:
python app.py5. Open your browser at http://localhost:5000
# Add a new object:
POST /add-object
{"name": "Eiffel Tower", "length": 324}
# Convert 3 parrots to Everests:
GET /convert?from=parrot&to=everest&amount=3Potential 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)
This repository is open source and licensed under the MIT License. Feel free to use and adapt it under terms of the license.
- Harvard University & CS50 Staff for an amazing course.
- All mentors, peers, and online communities who helped me throughout CS50.
GitHub: https://github.com/AOgit