Here you can find some of my projects from college. In an effort to prevent cheating I do not include much source code here.




Meal Designer is an Android app that assists the user in creating and saving recipies. It was a group project consisting of: Chang Park, Christina Zytariuk, George Vanhoose and myself. You can visit the project webpage by visiting the link here



The purpose of this project was to create an Mips assembly program that would evaluate an expression stored as a string in the .data segment. The expression could contain variables which were also stored in the .data segment and would save the result in one of the variables. Below is the multiplication subroutine that I wrote for the project.

multiply:	#---------------Multiplies Two Values---------------------------------------
		#$a0 = multiplicand $a1 = multiplier $t0 = counter $v0 = product  $t1 = sign
		#---------------Init Registers-----------------------------------------
		addi $t0, $0, 1		#set counter = 1
		add $v0, $0, $0 	#set product = 0
		#---------------Convert Multiplicand to Positive if Negative-------------
		slt $t1, $a0, $0	#t1 = 1 when $a0<0
		beq $t1, $0, a0pos	#skip if positive
		add $0,$0,$0		#NOP
		sub $a0, $0, $a0	#convert negative to positive
a0pos:		#---------------Convert Multiplier to Positive if Negative-------------
		slt $t2, $a1, $0	#t2 = 1 when $a1<0
		beq $t2, $0, a1pos	#skip if positive
		add $0,$0,$0		#NOP
		sub $a1, $0, $a1	#convert negative to positive
a1pos:		#---------------Calculate Sign of Product----------------------------
		xor $t1, $t1, $t2	#t1 = sign of product, 1 if negative
multloop:	#---------------Loop For Calculating Product-------------------------
		andi $t2, $a1, 1	#put lsb in $t2
		beq $t2, $0, multend 	#go to bottom of loop if lsb = 0
		add $0, $0, $0		#NOP
		add $v0, $v0, $a0 	#add multiplicand to product
multend:	#---------------Bottom Of Loop-----------------------------------------
		sll $a0, $a0, 1		#shift multiplicand left
		srl $a1, $a1, 1 	#shift multiplier right
		slti $t3, $t0, 31	#set $t3 = 1 when $t0 < 31
		bne $t3, $0, multloop	#loop when $t0<31
		addi $t0, $t0, 1	#increment counter
		#---------------Convert Product to Negative if Negative-------------
		beq $t1, $0, respos	#skip if result positive
		add $0,$0,$0		#NOP
		sub $v0, $0, $v0	#convert positive to negative
respos:		#---------------Exit Multiply---------------------------------------
		jr $ra			#return to caller
		add $0, $0, $0		#NOP


The objective of this project was to create a basic programming language. The same project was written in three different programming languages: Java, Python, and SMLNJ. The language was based around a stack (a sort of pushdown automaton). Instructions are read line by line from a file. Depending on the instruction arguments may either be included in the instruction or popped from the stack. If the instruction produces a result then the result is pushed onto the stack. When no instructions remain the stack is printed out. It also supported functions and variables.



The project for this class allowed us to choose what we wanted to do. For this project I created a sentry bot. The code for the project was written in c++ on the raspberry pi and used the pthread library. The bot would scan the area using an ultrasoninc sensor mounted on a servo. If an object was detected within a certain range then it would sound an alarm and alternate flashing red and blue led’s.



This project involved creating a chat program using the client server model. Written in c++ it involved creating and using sockets to send and receive messages and data. The application could either be launched as a client or a server. If it was launched as a server then it would accept connections from clients, relay messages between clients and store messages for clients who disconnected without logging out. If launched as a client it would for the user to log into a server, after which it would allow the user to send and receive messages to other users.



I created this as part of my first programming course. It is a flash game where the user drives a tank and tries to hit targets. You can play the game by clicking the link here.