Sean Farhat

I am finishing up an M.S. in Computer Science at the University of Illinois, Urbana-Champaign, advised by Deming Chen.

My research interests are in machine learning, specifically how we can improve the performance of models as efficiently as possible. My thesis introduced a paradigm to improve performance of small-scale models using a combination of knowledge distillation, contrastive learning, and generative models. My teaching interests are infinite.

Previously, I completed my B.S. in Electrical Engineering and Computer Science from UC Berkeley.

Email / Resume / Github / Linkedin

profile photo
Research/Projects
A Good Teacher Is All You Need
Sean Farhat, Deming Chen
M.S. Thesis
Preprint and code forthcoming

We propose a simple yet effective alternative to pre-training and finetuning called Don't Pre-train, Teach (DPT). When compared to when they were pre-trained on ImageNet and finetuned, our small models achieve superior performance or lag behind by at most 1.5%, while only taking 5% of the training time.

Not All Sensors Are Equal: Optimal Sensor Points for Operator Learning
Nicolas Nytko, Sean Farhat, Nathanael Assefa
CS 598-BAN: Deep Generative and Dynamical Models
report / slides
Python, PyTorch, Firedrake

We meta-optimize Deep Operator Nets to jointly learn the operator and an optimal set of sensor points for the function family. For the nested gradient, we leverage the Implicit Function Theorem and use a Neumann approximation of the inverse Hessian. Compared to the fixed sensor points, we achieved a 20% decrease in test error for Diffusion PDEs and a 72.42% decrease for Wave PDEs.

Parallelizing Convolutional Networks with CUDA
CS 483: Applied Parallel Programming
C, CUDA

Wrote custom CUDA kernels to speed up the forward pass in convolutional neural networks. Leveraged tiling, shared memory, matrix unrolling, loop unrolling, reductions, and streams to achieve a 58.82% decrease in processing time.

"At Least I Know Why!": Contextualizing User Reactions to Negative Feedback on StackExchange
Waleed Ahmed, Sean Farhat, Advai Podduturi, Zachary Robertson,
CS 565: Human Computer Interaction
report
SQL, Pandas

We found that, for a user's first post, any kind of feedback from the community, even negative, led to users more likely posting again compared to if they received complete silence.

Pitch Extraction from EEG Data
Rutvik Choudhary, Sean Farhat, Jessica Myers
CS 545: Machine Learning for Signal Processing
report
Python, PyTorch, MNE

We predict what note someone is listening to from EEG signals. We first converted the time series signals into to a 2D image via an Azimuthal Equidistant Projection and Bezier curve interpolation. Then, we fed that into various logistic regression and neural network models, achieving an accuracy of 58.63%.

Forced Alignment via Convolutional Neural Networks
report / code
Python, PyTorch

By leveraging phoneme-level information in the TIMIT dataset, we relax Convolutional Neural Networks' reliance on the Connectionst Temporal Classification (CTC) function, enabling the model to generate word-boundary timings with an average error of 67 ms, while also introducing interpretability via class activation maps.

Karaoke Web App
Docker Image / code
Flask, Javascript, Docker, HTML/CSS

A Karaoke web app that pulls lyrics and audio from the internet, obtains the word-timing information, and highlights the lyrics in real time for the singer to follow.

Neural Style Transfer
CS 194-26: Computational Photography and Computer Vision
project page / code
Python, PyTorch, Scikit-Image

Implemented the original Style Transfer algorithm of Gatys et. al, to transfer artistic styles to images. I modified their approach to be more faithful to the desired content.

Seam Carving
CS 194-26: Computational Photography and Computer Vision
project page / code
Python, PyTorch, Scikit-Image

Implemented Seam Carving to decrease/increase the size of photos while preserving content. Additionally, modified method for content-aware object deletion.

Kobuki Kart
Rehan Durrani, Sean Farhat, Nick Riasanovsky, Grant Wang
EECS 149: Embedded Systems
report / code / poster
Python, C

Recreated Mario Kart with Rumbas. Features included smooth driving via Nintendo Switch controllers and pick-up powerups (nearest-neighbor attack, speedup, stop) via Decawave DWM1001C Tags.

Pendulum Bot
Swapnil Das, Sean Farhat, Cameron Kurotori, Matthew Owen
EECS 106A: Robotics
video / code
Python, C, ROS

Programmed a robot to find a tennis ball on a pendulum, predict the trajectory, and catch it, all from a single image.

Experience
apple Apple
Platform Architecture Intern, 2022
cal seal Berkeley Artificial Intelligence Research (BAIR)
Research Assistant, 2019-2020
Research assistant in Laurent El Ghaoui's lab. Worked on implicit formulations of deep learning architectures in PyTorch. Investigated different methods for increased robustness such as low rank matrix perturbations.

Berkeley SWARM Lab
Research Assistant, 2018
Research assistant in Kris Pister's lab. Worked on end-to-end autonomous driving for microrobots utilizing low power Convolutional Neural Nets.
accenture logo Accenture Labs
Systems and Platforms Research Intern, Summer 2019
Created pipeline to generate synthetic training data for UR5 robotic arm via a digital twin via Gazebo and ROS.
Teaching
I have served in various teaching capacities: a lecturer, instructor, TA, and tutor. At Berkeley, I was recognized with the Outstanding GSI Award. My ratings can be found here.
CS 357 (Numerical Methods), Fall 2022

CS 440 (Artificial Intelligence), Fall 2021

EECS 127 (Optimization Models), Spring 2020

CS 61C (Great Ideas in Computer Architecture), Summer 2020 \ Fall 2019 \ Spring 2019 \ Fall 2018 \ Summer 2018
Learning Resources
Machine Learning
Note: Neural ODEs, Continuous Normalizing Flows, FFJORD
Note: Augmented Neural ODEs
Presentation: Fourier Neural Operators

Computer Systems
Note: Number Representation
Lecture 7 (RISC-V): video \ slides
Lecture 11 (Sequential Digital Logic): video \ slides
Lecture 14 (RISC-V Pipeline Hazards): video \ slides
Lecture 15 (Caches): video \ slides
Lecture 17 (Multi-level Caches): video \ slides
Lecture 20 (Input/Output): video \ slides
Lecture 23 (Multithreading Issues, Cache Coherency): video \ slides
Lecture 25 (Dependability and Redundancy): video \ slides
Lecture: Virtual Memory
Review Twitch Stream: Caches
Review Twitch Stream: Pipelining and Hazards
Review Twitch Stream: Virtual Memory
Coursework
Courses I have taken. The asterix (*) indicates graduate-level.
Math/Theory:
Data Structures | Algorithms | Comparability and Complexity | Randomized Algorithms* | Optimization | Probability and Stochastic Processes | Game Theory | Multivariable Calculus | Linear Algebra | Discrete Math | Applied Functional Analysis*

AI/ML:
Artificial Intelligence | Machine Learning | Computational Photography | Computer Vision | CUDA | Machine Learning for Signal Processing* | Deep Generative Models*

Other:
Robotics | Embedded Systems | Computer Architecture | Computer Security | Circuit Design | FPGA/Verilog* | Human Computer Interaction* | Cognitive Neuroscience | Web Design

Other Other:
Massage Therapy | Knitting | Ikebana (Japanese Flower Arrangement) | Vegetable Gardening
Service
hkn Department Relations, Tutoring Officer
2018-2020

Student Representative, EE/CS Undergraduate Study Committees 2019-2020

Led creation and release of EECS Undergraduate Experience Survey

Department Tour Guide
course map Berkeley EECS Course Map

A course map for the entire EECS curriculum at Berkeley. Created since Berkeley's "free" curriculum left many students lost.
Ikebana
Thank you Jon!