Victor Dimitroff
Technical/Academic Portfolio
Perhaps you are an employer, looking for samples of my work. Perhaps you are a friend, checking out my latest projects. Or perhaps you are just a wanderer, who stumbled across my website in the vast ocean of the web. Regardless of what brought you here, I invite you to take a look at some of my creations.
This portfolio page is dedicated to my technical and academic projects which I have completed for university and to practice particular knowledge or skills. |
Portfolio Categories:
Vertical Divider
|
Personal Projects
AI Portfolio - Spam Filter **
For a senior artificial intelligence course, I had the opportunity to learn about a variety of AI techniques and algorithms then apply them through projects. The projects included a spam filter. The spam filter will train a filter based on inputted spam and ham samples, associating specific tokens with a probability of being ham or spam. Once trained, the filter is able to predict if an inputted email is or is not spam based on the tokens. Above are some screenshots that feature the functionality of the programs.
AI Portfolio - N-gram Model **
For a senior artificial intelligence course, I had the opportunity to learn about a variety of AI techniques and algorithms then apply them through projects. The projects included a n-gram model program. The program will create an n-gram model trained on an input text file. The model object can then be used to generate new random text or to find the perplexity of a given sentence. Above are some screenshots that feature the functionality of the programs.
AI Portfolio - Games **
For a senior artificial intelligence course, I had the opportunity to learn about a variety of AI techniques and algorithms then apply them through projects. The projects included a series of game-related solvers for grid navigation, and dominoes. The grid navigation problem will attempt to find the best, shortest path from one point to another while avoiding obstacles. The dominoes problem will determine the best move for a player to take in a simplified dominoes game. Above are some screenshots that feature the functionality of the programs.
AI Portfolio - Puzzle Solvers **
For a senior artificial intelligence course, I had the opportunity to learn about a variety of AI techniques and algorithms then apply them through projects. The projects included a series of puzzle solvers for n-queens, lights out, linear disk movement, and number tiles. The n-queens solver program will generate all possible solutions to place n queens on an n x n chess board. The lights out solver will create a m x n puzzle board object, then generate a list of successors, choosing the most optimal successor to solve the puzzle. The linear disks solver will find the optimal solution to move m disks from the leftmost of n pins to the rightmost pins using both A* and uninformed BFS variants. The number tile solver creates a number tile puzzle object then use A* to return the optimal series of turns to move the "blank" tile and solve the puzzle. Above are some screenshots that feature the functionality of the programs.
Operating Systems Portfolio **
(Memory Management, Concurrency, Process Scheduling, File Systems)
For a senior operating systems course, I completed a series of projects implementing various key OS concepts. The projects included a secure memory allocator, concurrent device driver, and file system. The slab memory allocator initialized a section of memory to allocate for processes then offered functions for filling and clearing pages of memory in that section. In addition to the basic memory allocation functionality, I also implemented a variety of security methods to deter common attacks on memory allocators. The concurrent device driver implemented a scheduler and handler API that was fully compatible with multiple calling threads. The file system implemented a basic API for reading and writing files from an OS perspective and assigning metadata.
Mini-Processor **
For a computer engineering course, I designed a fully functional mini-processor from the ground up using Verilog and MIPS Assembly. The single-core pipelined processor implemented standard CPU components, such as the ALU, busses, control unit, and registers. This project helped to solidify my knowledge of core, low-level computer architecture design.
Sample Programming Language Grammar **
For a concepts of programming languages course, I designed and implemented a sample context-free grammar to parse and perform operations on Roman numerals. The grammar was designed to handle addition, subtraction, division, and multiplication as well as support for “floating Roman numerals.” For such numbers the grammar would parse each side of the radix point separately, then combine for operations.
Sample Device Driver **
For a systems design course, I was responsible for programming a large part of device driver for a simulated HDD. The driver connected to a network, read data from a virtual drive (actual implementation wrote to a text file), performed operations on that data, then wrote back to the drive. This project reinforced some of the core concepts of the course, such as the retrieval/storage of data and how different components of systems are brought together
* Program source code available for potential employers upon request.
** Due to academic integrity policies at my university, I am unable to release project code which was developed for assignments. I apologize for any inconvenience caused by this.
** Due to academic integrity policies at my university, I am unable to release project code which was developed for assignments. I apologize for any inconvenience caused by this.