Oregon State University, Corvallis, OR 
                        Bachelor of Science, Computer Science, 
                        Expected June 2020 
                        4.0 GPA
                    
                Education
Technical Skills
                        Languages: C, C++, Java, Kotlin, JavaScript, Haskell, Python, Haxe
Operating Systems: MacOS, Linux
Additional Skills: Experience with compiler design, algorithm efficiency, low-level development.
                    
                Operating Systems: MacOS, Linux
Additional Skills: Experience with compiler design, algorithm efficiency, low-level development.
Projects
danilafe.com
Blog containing a series on compiler development
                        - Teaches compiler development from the bottom up using common technologies such as Flex, Bison and LLVM.
 - Provides complete implementation of the compiler at each stage of the process, encouraging experimentation and understanding.
 - Contains 25,000+ words in 9+ posts, each with an associated compiler version.
 
pegasus
LALR parser generator for the C and Crystal languages.
                        - Provides a set of programs for creating LALR(1) parsers.
 - Supports the C and Crystal languages, exposing an API for the implementation of parsers for other languages.
 - Generates parsers with diverse functionalities, from building parse trees to using semantic actions.
 - Defines a generic syntax for semantic actions to maximize code reuse.
 
chalk
Compiler from a small language into CHIP-8 bytecode.
                        - Employs a Crystal implementation of parser combinators to parse language.
 - Compiles code to intermediate assembly language, then to CHIP-8 bytecode.
 - Supports in-text representation of sprites for easy editing.
 
abcs
Calculator program with a complete embedded programming language.
                        - Interfaces with GNU MPFR to perform arbitrary precision aritmetic.
 - Provides complete language supporting parametric polymorphism, partial function application and higher order functions.
 - Uses hand-written parser to allow for the definition of arbitrary operators at runtime.
 
scylla
Elm-based purely functional front end for the Matrix chat protocol.
                        - Defines a purely functioal reactive web interface using the Model-Update-View architecture.
 - Employs lazy evaluation to optimize common operations.
 - Implements part of the Matrix standard for open source, decentralized communication.
 
Technical Experience
Research Assistant
Oregon State University | Spring 2018 - Present
                        - Devised and implemented language to explain behavior of spreadsheets to new users.
 - Developed tooling in Haskell to verify, generate, and debug the explanation language.
 - Contributed to research paper published to the International Conference on Generative Programming.
 
Lead Programmer
Northwest Advanced Programming Workshop | Summer 2017
                        - Designed and implemented a desktop calculator application with a focus on usability and feature-completeness.
 - Worked on a variety of components, including parsing input through a custom regular expression engine, evaluating expressions through Taylor Series, and UI design.
 - Profiled and debugged application in order to find inefficiencies, reducing computation time by 60%.
 - Led a small team using the git version control system.
 - Presented progress to supervisor and other participating teams.
 
Participant
Oregon Game Project Challenge | Spring 2016 and 2017 
                        - Worked in a team to complete video game to be presented at main event.
 - Created a game engine from scratch using Entity Component Systems architecture.
 - Used OpenGL shaders and normal mapping to create 2D-shadow system.
 - Developed interaction between physical components (microcontrollers) and the video game for multi-user cooperation.
 
Finalist
Google Code In, Online Competition | Winter 2016
                        - Worked with large open-source project written in C.
 - Interacted with other developers to set goals, merge changes, and run tests.
 - Improved quality of source code, reduced code repetition, and fixed bugs.
 
Publications
                    Co-Author: Jácome Cunha, Mihai Dan, Martin Erwig, Danila Fedorin, Alex Grejuc: Explaining spreadsheets with spreadsheets (short paper). GPCE 2018: 161-167