Post Job Free
Sign in

Computer Science Java

Location:
Spring Lake Heights, NJ
Posted:
May 29, 2014

Contact this candidate

Resume:

Jeffrey H. Diaz

acecr3@r.postjobfree.com

551-***-**** (Cell phone)

*** ***** ***'s Avenue

Apartment 11I

Bronx, NY 10454

Goal: My goal is to begin a career in a Computer Science related field and earn valuable

experience while improving my current skills and learning new ones.

Education: Graduated from University at Buffalo (Class of 2014) with a BA in Computer Science and a

cumulative GPA of 3.0.

Programming: I have a basic proficiency level with programming in Standard ML, SWI prolog, R and

PostScript. I have an intermediate proficiency level with programming in Java, c/c++. MIPS

Assembly, Verilog HDL, Android (Java) and Python.

Projects:

• I worked with a Finch robot and had to write code so that the finch would stop and

move depending on the readings of its obstacle and heat sensors. The finch had to

stop near the edge of a wall and continue forward until a corner was detected;

meaning that the front and side obstacle sensors of the finch are returning a value of

true. It also had to detect when it was under a light using its heat sensors (with a

threshold of 30 degrees Fahrenheit) and come to a complete stop until the light was

turned off.

- CSE 115, Introduction to Computer Science I, Fall 2012

- Programmed in Java

• A team and I had to remake the board game Lotus where each player starts at the

beginning with a stack of pieces and the top piece can move the same amount of

spaces as the height of the stack it was on top of. Also had to implement 2-3 and 4-

6 player functionality and create special board tiles (such as one that lets the player

move a random amount of spaces between 1 and 3 spaces after their piece has

landed on the tile).

- CSE 116, Introduction to Computer Science II, Spring 2013

- Programmed in Java

•Made a program in MIPS Assembly Language that prompted a user for a string of

signed integers then stored the user-inputted data as a null terminated string at a

specific memory address (0x10000100). The program also had an interface where

the user could choose to display the stored string, enter a new string, convert the

null terminated string of signed integers to an array of unique halfwords, return the

mean of the signed integers in the array, return the median of the signed integers in

the array, or display the array stored in memory.

- CSE 341, Computer Organization, Fall 2013

- Programmed in MIPS Assembly

•Implemented an entire 32-bit ALU using Verilog HDL and wrote a report on the

implementation which included the circuit diagram of the ALU, critical path delay

and gate cost analysis of the ALU, functional simulations of the ALU to prove that

it works, and an analysis of temporal dependencies within the ALU while using the

gate delay model.

- CSE 341, Computer Organization, Fall 2013

- Programmed in Verilog HDL

•Implemented a simpler version of an Auto-Flight Controller System (AFLIC) which

simulated concurrent flights using threads and simulated random collisions

between these flights by utilizing race conditions created by using these concurrent

threads.

- CSE 321, Real-time and Embedded Operating Systems, Fall 2013

- Programmed in c

•Worked on an embedded system (XINU) which was installed on a Linksys WRT54GL

router, and contributed to its development by adding commands and applications to

its pre-existing shell, such as a chat application which used the UART ports on the

router for communication, a simple word reversing application that takes any string

as it’s argument and prints the reverse of said string, and a periodic real-time tasks

scheduling app that used a predetermined task table.

- CSE 321, Real-time and Embedded Operating Systems, Fall 2013

- Development for the embedded system was done in c

•Implemented a stack-based Read-Evaluate-Print-Loop which was basically a shell.

This stack-based repl would push an evaluated item onto the stack and use the top n

(n = number of arguments required for said command) elements of the stack as the

arguments for the command. This repl was able to do many things such as perform

arithmetic functions (addition, subtraction, multiplication, division, calculate the

remainder of 2 numbers), negate a number, perform Boolean functions (if, and, not,

or), perform relational functions (less than, equal too) and other functions such as

bind (binded a name to a value) and load (attempted to open a given file name, and

if successful, would use the input inside of the file as if it was inputted directly by

the user). Many of these commands required specific types as their arguments. The

REPL handled many types such as numbers, both negative and positive (were used

in arithmetic and relational functions and were denoted as themselves on the stack),

boolean literals (were denoted as either ‘:true:’ or ‘:false:’ on the stack), an error

literal (was denoted as ‘:error:’ on the stack), names; a string of consecutive

alphanumeric characters starting with a letter (were denoted as themselves on the

stack), string literals; anything between two quotation marks (were denoted as

themselves on the stack), and closures; anything between a closing and opening

bracket, including nested closures (were denoted as ‘:closure:’ on the stack).

- CSE 305, Introduction to Programming Languages, Spring 2014

- The repl was fully created twice in two languages separately:

python and c

•Made a distributed chat system consisting of both a client and a server application. The

client application is user-based (commands are used in order to establish

connections or disconnect from a server/other client) and is used in order to

communicate with client processes across different machines, or the same machine

if desired. There can be multiple client processes whether it is on one machine, or

across different machines. The server process is used to register a client with a

desired username, and it keeps track of which clients are online, along with which

clients are chatting with each other, if any (up to 2 clients are allowed in any given

chat session). Clients are able to connect to each other initially because of the

server. The client must know the address of the server (its IP address and port

number) in order to establish a connection with it. Once this connection is

established, the client is considered online and is registered with the server. The

server keeps track of all of the client’s addresses, and once two clients wish to

establish a chat session with each other, the server sends the address of the

corresponding chat partner to each client, allowing them to chat with each other

without help from the server (chat functionality is still possible even if the server

process is ended once both client processes are in a chat session).

- CSE 305, Introduction to Programming Languages, Spring 2014

- Programmed in Java and used the Socket API for client-to-server

and client-to-client communication

•Aggregated data from twitter by creating a twitter app, then using that app with the

twitter API in order to analyze and mine the data. The data was analyzed using

many algorithms implemented through MapReduce on the Hadoop Distributed File

System. The algorithms used were wordcount (used with a combination of python

scripts in order find the most popular #tags and @tags), co-occurrence (both pairs

and stripes approaches), k-means (used to cluster users based on their followers

counts), and shortest path (used on a provided graph).

- CSE 487, Data-intensive Computing, Spring 2014

- MapReduce algorithms and twitter aggregation were done in Java.

- Various scripts for data cleaning, ordering and processing were

done in python

•Implemented a simplified version of the Amazon Dynamo which stored values based

on the key assigned to said value. Storage for a key was determined by hashing a

key (SHA-1 hashing was used) and using lexicographical comparison between the

key and the id of a node in order to find where the key belonged in the system (all

nodes formed a ring based on their lexicographical order). In this version of the

Dynamo, each node knows all the other nodes in the system and which partition

belongs to which node. All keys and values from one node are replicated in the

next two nodes within the ring (successor, and successor of the successor). Failure

handing and node recovery were also implemented.

- CSE 486, Distributed Systems, Spring 2014

- Programmed for Android in Java

- Was tested using android device emulators

- Was debugged using logcat

- Used Socket API for inter-device client/server communications

Experience:

Worked with the University at Buffalo athletic promotions department (Fall 2013-Spring

2014), where I helped set up vendors and oversaw fan activities before and during home

football and basketball games. Also distributed student tickets for many games, including

the game called “The Clash at the Ralph” where I had to diligently and efficiently hand out

tickets to thousands of students from a ticket booth while verifying that they were indeed

students, and quickly calculate the cost and remaining change for students who brought

guests (students were free but each of their guests were extra).

• This job greatly improved my interpersonal skills as I regularly had to

communicate with others when accomplishing different tasks

• This job showed me that I am prepared to work under heavy stress (thousands of

students coming to get student tickets) while maintaining efficiency

• This job showed me that I am great at following instructions as many times there

were different kinds of tasks that I would have to pick up and learn to do on the fly

This job improved my leadership skills as on more than one occasion I was put in charge of

our athletic promotions group. Such as when our boss left early and we had to close things

down, then return the keys and certain materials to her office, after which I contacted her to

let her know the task was completed.

Field-related Skills:

• Have experience using MapReduce on the Hadoop Distributed File System.

• I am very comfortable with using the Socket API with Java for client-server and

inter-machine communication, and I understand well the concepts of client-side

programming versus server-side programming.

• I am comfortable doing Android programming in java, testing code using Android

Virtual Devices, and debugging code using ADB along with logcat.

• Have experience collecting data, cleaning said data, and then analyzing the data.

• I am very comfortable working on a Linux/Unix-based environment and using shell

commands.

• I have vast experience writing a program (using a text-editor such as vi/vim),

compiling it, and then executing it in a shell on a Unix-based operating system,

using different programming languages (c/c++, java, python, SWI Prolog,

PostScript, Standard ML, etc.).

• I have much experience troubleshooting Windows and Unix-based operating

systems.

• I am experienced in using Microsoft Office.

• I am comfortable with concurrent programming, making multiple processes and

using threads (I am aware of race conditions and managing timings on different

threads)

• I am comfortable with object-oriented programming languages and other

programming paradigms such as procedural programming, functional

programming, declarative programming and Event-driven programming.

• I am a quick learner as I have had to pick up programming languages on my own

for some of my classes (c /c++ for CSE 250 and CSE 321, python for CSE 305 and

CSE 487).

• I am passionate about programming and truly enjoy it. Nothing feels better than

being presented with a problem, planning and coming up with a solution, then

executing that solution in code.



Contact this candidate