Skip to content

AaronSosaRamos/MITComputerScience

Repository files navigation

MIT Computer Science Portfolio

Welcome to my MIT Computer Science Portfolio! This repository contains detailed notes, summaries, and projects based on MIT courses for Computer Science and AI Engineering. Below you will find comprehensive overviews of each course and its topics, providing insights into the foundational and advanced concepts covered in these prestigious courses.

Courses Overview

Intro. to Algorithms

Link to Course

This course provides an introduction to fundamental algorithms, focusing on both the theoretical and practical aspects of algorithm design and analysis.

Topics Covered:

  1. Basic Data Structures
    • Arrays, linked lists, stacks, queues
    • Usage and implementation in algorithms
  2. Sorting
    • Comparison-based sorting: Merge sort, quicksort, heapsort
    • Analysis of time and space complexity
  3. Hashing
    • Hash functions, collision resolution techniques
    • Applications and performance considerations
  4. Linear Sorting
    • Counting sort, radix sort, bucket sort
    • Analysis and use cases
  5. Binary Trees
    • Binary search trees (BST)
    • Tree traversals: In-order, pre-order, post-order
  6. Binary Trees and AVL
    • Self-balancing BSTs: AVL trees
    • Rotations and balancing algorithms
  7. Binary Heaps
    • Min-heaps, max-heaps
    • Priority queues and heap operations
  8. Breadth-First Search (BFS)
    • BFS algorithm and applications
    • Graph traversal and shortest path in unweighted graphs
  9. Depth-First Search (DFS)
    • DFS algorithm and applications
    • Topological sorting, cycle detection
  10. Weighted Shortest Paths
    • Shortest path problems in weighted graphs
    • Bellman-Ford and Dijkstra’s algorithms
  11. Bellman-Ford Algorithm
    • Single-source shortest path in graphs with negative weights
    • Dynamic programming approach
  12. Dijkstra’s Algorithm
    • Greedy algorithm for shortest paths in non-negative weighted graphs
    • Priority queue implementation
  13. Johnson’s Algorithm
    • All-pairs shortest path algorithm
    • Re-weighting technique to handle negative weights
  14. Dynamic Programming (DP)
    • Part 1: Recursive Algorithms
    • Part 2: Subproblems and overlapping subproblems
    • Part 3: All-pairs shortest path (APSP), matrix chain multiplication, piano cost problem
    • Part 4: Pseudopolynomials and approximation algorithms
  15. Complexity
    • Time and space complexity analysis
    • Big O, Big Theta, Big Omega notations

Design and Analysis of Algorithms

Link to Course

This course delves into advanced algorithm design techniques and their analysis, emphasizing efficient and effective problem-solving strategies.

Topics Covered:

  1. Interval Scheduling
    • Greedy algorithms for optimal scheduling
  2. Divide & Conquer
    • Convex hull algorithms, median finding, FFT (Fast Fourier Transform)
    • Van Emde Boas Trees for efficient searching
  3. Amortization
    • Amortized analysis of data structures and algorithms
  4. Randomization
    • Techniques for randomized algorithms
    • Applications in matrix multiplication, quicksort, skip lists
    • Universal and perfect hashing
  5. Augmentation
    • Range trees and data structure augmentation
  6. Dynamic Programming (Advanced DP)
    • Advanced DP techniques and their applications
    • All-pairs shortest paths algorithms
  7. Greedy Algorithms
    • Minimum spanning tree algorithms
  8. Incremental Improvement
    • Max flow and min cut algorithms
    • Matching algorithms and baseball elimination
  9. Linear Programming
    • LP formulations, reductions, simplex algorithm
  10. Complexity
    • P, NP, NP-completeness, and reductions
    • Approximation algorithms and fixed-parameter algorithms
  11. Distributed Algorithms
    • Synchronous and asynchronous distributed algorithms
    • Symmetry-breaking, shortest-paths, spanning trees
  12. Cryptography
    • Hash functions, encryption techniques
  13. Cache-oblivious Algorithms
    • Searching, sorting, medians, and matrices

Mathematics of Machine Learning

Link to Course

This course provides a rigorous mathematical foundation for understanding and developing machine learning algorithms.

Topics Covered:

  1. Introduction
    • Overview of the mathematical principles underlying machine learning
  2. Binary Classification
    • Mathematical formulation and analysis of binary classification problems
  3. Concentration Inequalities
    • Probabilistic inequalities and their applications in ML
  4. Fast Rates and VC Theory
    • Vapnik-Chervonenkis theory and learning rates
  5. The VC Inequality
    • Detailed study of the VC inequality
  6. Covering Numbers
    • Concepts and applications of covering numbers in ML
  7. Chaining
    • Chaining techniques for controlling empirical processes
  8. Convexification
    • Convexification methods for machine learning algorithms
  9. Boosting
    • Boosting algorithms and their mathematical foundations
  10. Support Vector Machines (SVMs)
    • Theory and application of SVMs in classification tasks
  11. Gradient Descent
    • Optimization techniques using gradient descent
  12. Projected Gradient Descent
    • Projected gradient methods for constrained optimization
  13. Mirror Descent
    • Mirror descent algorithms and their applications
  14. Stochastic Gradient Descent (SGD)
    • Stochastic approximation techniques for large-scale ML
  15. Prediction with Expert Advice
    • Algorithms for learning from expert predictions
  16. Follow the Perturbed Leader
    • Online learning algorithms based on perturbation
  17. Online Learning with Structured Experts
    • Advanced online learning techniques
  18. Stochastic Bandits
    • Multi-armed bandit problems and algorithms
  19. Prediction of Individual Sequences
    • Techniques for predicting individual sequences
  20. Adversarial Bandits
    • Algorithms for adversarial bandit problems
  21. Linear Bandits
    • Linear bandit problems and solutions
  22. Blackwell’s Approachability
    • Blackwell’s approachability theorem and its implications
  23. Potential Based Approachability
    • Potential-based methods for approachability

Introduction to Deep Learning

Link to Course

This course introduces the fundamentals of deep learning, covering both theoretical concepts and practical applications.

Topics Covered:

  1. Introduction
    • Overview of deep learning, its applications, and its impact on various fields.
    • Introduction to neural networks, backpropagation, and optimization techniques.
    • Practical exercises and projects to apply deep learning concepts.

About

No description, website, or topics provided.

Resources

License

Stars

3 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors