Mahdi Rizk

University of Michigan

EECS 201

Computer Science Pragmatics

The command-line toolkit behind every later project: Bash, Git, Make, and regex.

  • Build and test automationAutomated repetitive compilation and testing workflows with Makefiles and Bash scripts.
EECS 203

Discrete Mathematics

Logic, sets, proof writing, and graph theory.

EECS 280

Programming and Introductory Data Structures

C++ fundamentals, classes, pointers, dynamic memory, and object-oriented design.

  • Seam CarvingA dynamic programming algorithm that resizes images by removing low-energy pixel seams.
  • EuchreA playable Euchre card game with AI players and an object-oriented architecture.
  • Post ClassifierA frequency-based classifier that predicts post categories from token analysis.
EECS 376

Foundations of Computer Science

Proofs, automata, reductions, and complexity theory.

  • Decidability and NP-completenessConstructed formal proofs using reductions and automata, and used them to argue the limits of efficient algorithms.
EECS 481

Software Engineering

Testing, refactoring, CI/CD, and documentation for real codebases.

  • Refactoring and TestingRefactored a large legacy Python codebase for maintainability while keeping 100% test coverage, with CI on GitHub Actions.
EECS 484

Database Management Systems

Relational design, SQL, B+ trees, query planning, and index optimization.

  • SQL ParserA recursive descent parser that turns SQL-like syntax into logical plan trees, including nested subqueries.
  • Query OptimizerA cost-based optimizer that uses dynamic programming to pick join orders, with predicate pushdown to cut I/O.
EECS 485

Web Systems

How the web works end to end: Flask, React, REST APIs, authentication, and distributed systems.

  • Client-Side Insta485A React and Flask photo-sharing app with REST APIs, AJAX likes and comments, and infinite scroll.
  • MapReduce FrameworkA Python MapReduce framework with a manager and workers, scheduling tasks over threads and sockets.
  • Distributed Search EngineSegmented inverted indexes built with MapReduce, served by a REST API with TF-IDF and PageRank ranking.
EECS 493

User Interface Development

Front-end engineering and interaction design, from Figma prototypes to Vue apps.

  • DozeOffA gamified sleep tracker prototype, shaped by user interviews, affinity diagramming, and storyboard speed dating, then built as a high-fidelity Figma prototype.
  • Quest App PrototypeA Figma mobile prototype using Auto Layout, components, and variants, evaluated against Nielsen's heuristics.
EECS 497

Human-Centered Software Design and Development

The capstone: a team product built from user research to a working app.