Yared Fikremariam

Education

20202023

B.S. in Computer Engineering - University of Maryland

  • Algorithms & Data Structures
  • Operating Systems
  • Computer Architecture
  • Compilers
  • Artificial Intelligence & Machine Learning
  • Computer Vision
  • Data Science
  • Reverse Engineering

Projects

20222023

miniTorch | Python

A lightweight deep learning framework with PyTorch like API, that implements backpropagation on a dynamically built computational graph. Currently supports,
  • Activation functions & optimizers: ReLU, Sigmoid, tanh, SGD, Adam
  • Layers:Linear, BatchNorm1d, BatchNorm2d, Dropout, Conv1d, Conv2d, MaxPool2d, AvgPool2d
  • Loss functions: CrossEntropyLoss, Mean squared error
  • RNN, GRU and Computational graph visualizer
2022

Compiler | Racket, C, x86 assembly

A compiler and interpreter that translates a high-level functional language, based on Racket, to x86-64 assembly with a C runtime system. Features,
  • Primitives, vectors, strings, variadic operations & syntax checking
  • Inductively defined data types with cons and box
  • Pattern matching
  • Conditionals & Dispatch Evaluation with Cond and Case statements
  • Binding for arbitrary number of expressions with let statements
  • Functions with arity-checking, rest arguments, arity-based dispatch, and tail call support
  • Lambda statements and Multiple returns
2022

Chess AI | Python

A chess engine that supports multiple play modes and uses the minimax algorithm optimized by alpha-beta pruning, Monte Carlo Tree Search or stockfish.
  • Two players, Against computer or Self play modes
2021

Regular Expression Engine | OCaml

A regular expression interpreter that takes in an input string, a regex string and performs series of reductions
  • Regular Expression to Non-Deterministic Finite Automata (NFA) conversion
  • NFA to Deterministic Finite Automata (DFA) conversion
  • Runs the DFA on an input string to see if the input string is accepted
2021

MicroCaml Lexer, Parser & Interpreter | OCaml

An interpreter for MicroCaml — a dynamically-typed version of OCaml with a subset of its features such as primitives, conditionals, recursive bindings, anonymous functions & currying
  • a lexer that converts an input string of MicroCaml into a list of tokens
  • a parser that consumes the tokens to produce an abstract symbol tree (AST)
  • an interpreter that executes the produced AST
  • a REPL, like utop for OCaml