User Report

----------------------------------------------------------------

PORTFOLIO

Master’s in Computer Science

2017 - 2019

----------------------------------------------------------------

Table of Contents

1. Professional Goals…………………………………….....1

2. Resume…………………………………………………..2

3. Ability to Apply Discipline-specific Knowledge………..3

4. Integrate knowledge from several disciplines…………...8

5. Ethical Context………………………………………....10

6. Legal Context…………………………………………..11

Appendices………………………………………………..13

1

Professional Goal

My goal is to obtain a Full-time job as a software developer in test (SDET) within three

months after graduating with my Masters of Engineering Degree and gain professional

experience within the area. In order to achieve my goal, I have taken a lot of classes in Software

engineering, did an internship as software QA and currently, I’m working as a Part-time SDET

in an organization called CASS run by Oregon State University. Also, I started connecting with

recruiters on LinkedIn and explained my interest in SDET position. I did some research to find

out the interview process for all the companies I’m interested in. Finally, I believe that all the

knowledge and experience I gained in the testing field will help me find my dream job as an

SDET.

2

Resume

3

Ability to Apply Discipline-specific Knowledge

The School of electrical Engineering and computer Science requires every master student At

least two courses each out of three areas from the following list Theoretical Computer Science,

Artificial Intelligence & Machine Learning, Computer Architecture and System, Computer

Graphics & vision, Software engineering, Human Computer Interaction, and Programing

Languages. The three areas I selected was Theoretical Computer Science, Software

engineering and Computer Architecture and System. Below are the courses I have taken from

these three areas and the outcomes of each course.

In CS560: Data-Driven Software Engineering I got the chance to use MSR (Mining software

Repositories) technique and conduct a survey and used the results from both the methods to

understand, analyze and evaluate various software development problems, processes, and tools.

I also read about 20 research papers and wrote small summaries about it and I also presented

the main idea of a paper assigned to me by the professor. This course has a total of 2

assignments one assignment is to perform MSR on a software repository on GitHub and use

the results to answer a set of questions given and report the finding. The second assignment is

to design and deploy a survey with students and use the results to answer a set of questions

given and report the finding. For the final project, I along with my partner selected 10 open

source software projects to study about the factors that influence the success of an open source

project, to map the evolution of those identified metrics for both successful and unsuccessful

projects and to understand the projects growth patterns. We did come up with few metrics that

will answer our study and then performed MSR an all the 10 projects and used GitHub API

and Travis API to collect the data we want. Once we have all the data we used python to analyze

the data we got for all the 10 projects and plotted graph for our metrics for all the 10 projects.

We then evaluated these graphs and wrote a 10-page report reporting our results.

Tools used are Python, Jupyter notebook, TravisCI API, GitHub, GitHub API, and Google

Forms

Link to the survey (Assignment 2): https://forms.gle/RFUig7K8YcrYJkQy5

Link to Graphs for Metrics for all the ten projects and Source code:

https://drive.google.com/drive/folders/1WSUREMxMLWQDwZQbk0RLVNqHAkq017Ku?

usp=sharing

CS561: Software Engineering Methods introduced me to the diverse methods used in agile

software development processes which are followed in the industry. As part of the course, I

was excepted to follow these methods (scrum-related methods, selected modeling, and

architecture-related concepts) and do a project with a team size of 4-8 members. I worked with

a team of 6 people (3 developers, 2 testers and 1 scrum master/product owner) and developed

an Android App called parking buddy. We followed Test Driven Development with a 3-week

sprint and also had daily scrum meetings for 15 mins during the weekdays in which we

discussed the things we completed, things we are going to complete by next meeting and the

problems we faced. At the end of each sprint, we also had a sprint meeting and a sprint

retrospective meeting. By following all these methods, we were able to build a beautiful app

with an intention to help the house owner lease their unused parking spot (per day or per hour)

to others during busy days like game days.

Tools used are Android Studio, Trello, and GitHub

4

The source code for the APP can be found in the below link

https://github.com/askmastersantu/CS561

CS576: Advanced Computer networks covers advanced topics in computer networking such as

principals, architectures and protocols used in modern networks like the Internet of Things

(IoT), wireless and mobile networks, etc. For the final project, my teammates and I designed

and implement a home security system using IoT. We have implemented our system as a client-

server model exactly how IoT devices work in reality. To achieve our goal, we used raspberry

pi3 which acts like a server and the user machine which acts as a client, the client device can

request the server to track the home to sense the presence of thieves at home. We used python

language to code our client side and server side script using socket programming. We designed

a system with the help of raspberry pi3 which gives the user the advantage to watch live of

what’s happening in their houses. Our system very similar to traditional IoT devices works in

reality. In our system, Raspberry Pi acts as a client and user device (in the testing we used the

laptop as a server) works as a server. Figure 1 shows some Pictures taken while we are testing

our system.

Tools used are python, RaspberryPi3, Atom, and Socket programming.

Link to source code and other files:

https://drive.google.com/drive/folders/1t1n7LiepGO5JBSAKmCARm9RLqhucAI2a?usp=sh

aring

Figure 1

In CS550: Introduction to Computer Graphics, I have learned a lot of graphics concepts like

coordinates system used in computer graphics, OpenGL library and its important functions

which helps us create a 3D graphics, Texture mapping, Lighting, shaders, geometric modeling,

and animations. This course has a total of 6 mini projects in which one of the projects to create

an animated helicopter, earth, etc. This course also helped me to refresh my C++ language

skills as all the mini-projects and my final project is done using C++ and data structures

knowledge. For Final project, I created a solar system with different views and features. I used

lighting and texture mapping for creating the solar system. I also implemented two kinds of

views, one is the view from the earth and another one view is the solar system as a whole.

When users select a view from the earth, they will be able to use the mouse to do the rotation

and scaling. When users are using the solar system view, along with using the mouse to do the

rotation and scaling they can also use the keyboard to move the camera. I also implemented

two switches in the menu which has the option of with and without stars in the galaxy.

Tools used are C++, OpenGL, visual studio.

5

Link to the video for helicopter(Mini-project):

https://media.oregonstate.edu/media/t/0_yqg81yzp

Link to the video for final project:

https://media.oregonstate.edu/media/t/0_0czuqbit

These are some of the pictures from my final project

Galaxy View: Solar System View:

View from earth: without stars:

6

Graph Algorithms are very import for every computer science student as it can be used to find

the shortest distance between two places, Google Maps uses graph algorithms to find the

shortest route from one place to another and Facebook also uses these graph algorithms to

suggest mutual friends. In CS520: Graph Theory with Application to Computer Science the

concepts I learned are the minimum spanning trees, shortest paths, maximum matching, planar

separators, Steiner trees and traveling salesman’s problem. The concepts I learned in this

course have been extremely useful in many interviews and also got me an internship last

summer. This course had a total of 4 assignments and for each assignment, we need to design

an algorithm using the concepts learned. One of my favorite algorithm I designed as a part of

my assignment was to find out if a graph has a Hamilton path (the path between two vertices

of a graph that visits each vertex exactly once) and two find out the number of distinct paths

between source and destination. I used the shortest paths and travel salesman concept to design

the algorithm below is the picture of my algorithm.

In CS527: Error Correcting Codes, I have learned how one can detect and correct errors. The

important topics I have learned in this course are Source coding, Channel coding, Hamming

Codes, Reed-Muller Codes, and Reed- Salmon Code. We also have a weekly assignment which

tests our knowledge in these topics and also it helped me to understand more about the concept

as we are required to see if a particular code C is capable of correcting or detecting errors in a

given condition. It was a challenging course for me as it has a lot of electrical terminologies

which I don’t have a very good grip. This course also refreshed my mathematics skills

especially in the area of probability as we are required to calculate the probabilities of error

happening. I also was able to apply the concept I learned in this class and learned how a

broken/damaged QR code is still able to transmit information using Reed- Salmon Code. As a

final project, I formed a team with 2 more people to study a research paper and give a

presentation about it.

Link to our final report:

https://drive.google.com/open?id=1GR_4ZQ86d0eOEMTxSC717_LimZvNIElO

7

The objective of the course CS540: Database Management System is to make the student

understand how to store, organize and manage large amounts of data. As a part of the final

project, we analyzed data containing around 192,000 records of hospitals in India and finding

prospective locations to open new hospitals based on the population served by current

hospitals. Additionally, we analyzed the facilities or specialties provided in these hospitals and

show regions with a lack of desired facilities. For our analysis, we are using the hospitals and

population data provided on the Government website. Data wrangling was performed. The raw

data was available in csv and xlsx formats. The data was cleaned and transformed and to a

relational database, we used MySQL that is provided on the school server. The backend of the

application was implemented in Node.js and SQL queries were written to fetch the required

data for the front end. For the front-end, visualizations and re-rendering of the data were done

using React and D3.

Tools used are MySQL, React, node.js and Google Maps API

The code can be found at https: //github.com/DURepo/DBMS_Project

8

Integrate knowledge from several disciplines

The following work demonstrates that I have met or exceeded the requirements to integrate my

subject material with other disciplines. During my course of study, I have taken classes from

Statistics departments and few courses which are cross listed as both CS/ECE courses. Below

are the courses I have taken from these departments and the outcomes of each course.

With the increase in the use of technologies like IoT, smart device’s and so on a lot of data is

being created daily and I feel as a computer science student it is important to know the right

tools and test to perform analysis on this data to draw some important insights. In ST511:

Methods of Data, I have learned various tests that can be performed on Huge data sets to draw

conclusions. Important concepts I learned in this course are Two-Sample t-test, Paired t-test,

Wilcoxon rank-sum test, Welch’s t-test, permutation/randomization tests, the sign test, One-

way Analysis of Variance (ANOVA), Extra Sum of Squares Tests and Simple Linear

Regression. All these tests are helpful as we can take a sample data from the available huge

data and acquire some meaningful insights out of huge data set without going through the whole

data which generally takes a lot of time to process. This course has weekly assignments which

allowed me to use these tests on data-sets and draw some statistical conclusions using R-

language. As part of my assignment, I was instructed to see if at least one of the given 5

population is different from each other from the given data set. So, I performed the ANOVA

test on the data given and gave a statistical conclusion saying that “There is strong evidence

that there is at least one of the given 5 population is different from each other. P-value <

0.00000001, ANOVA F-test”. Below picture is my R-code its output and a Box-plot produced

from the data.

Tools used are R-programming and R-studio

9

The main objective, of course, ECE/CS 572: Computer Architecture is to see how the Central

Processing Unit (CPU) works and also to have a clear and broad vision of the computer

architecture field. Some important topics I have learned in this course are Single-Cycle

processor (MIPS Instructions), Pipelines, Memory Hierarchy, Cache Memory and Virtual

Memory. This course had a total of 3 assignments which test the students understanding of the

above-mentioned topics. As a part of the final project, I used SimpleScaler simulator to do

cache simulation (used C language to create simulation) with various configuration and

measured the performance of cache with unified/separate instruction and data caches. By the

end of the project, I become more familiar with the sim-cache component of the SimpleScaler

simulator and also able to gain more in-depth knowledge of concepts like Memory Hierarchy

and Cache Memory.

Link to source code and report:

https://drive.google.com/drive/folders/1C37bolYq9lBZXxhk3asNRaogtVLyGT9t?usp=shari

ng

10

Ethical Context

I have taken a course called professional ethics in my undergrad and I have learned that

professional ethics will help one to grow professionally in their career and also helps to build

a good reputation. The important things I have learned in this course is, to be honest, not to be

biased while taking decisions, not to disclose any professional information and to obey all the

laws. Topics covered in are engineering ethics, engineers as responsible experimenters, codes

of ethics, engineer’s responsibility for safety, professional rights. Finally, as a computer

science student, it is important the safety, feelings, of others while developing a product. Below

is the screenshot of the transcript of the semester in which I have taken a professional ethics

course.

11

Legal Context

As a computer science student, one should be aware of using the resources available online

legally. In the course software engineering methods, I have learned that not all software

available online is open to the public and once should check its copyright before using. Also,

while developing an application or library one should be aware of all the available relating

software patents as there is a high chance of unknowingly violating them. It is also important

to officially register the application one is developing and also it is important to check the

already registered trademarks while giving a name or designing an icon to an application.

To conclude, I have also completed online ethical research training provided by the University

of Miami’s Collaborative Institutional Training Initiative for the course “RCR for Engineers”.

This will also help to prove my ability to practice engineering in an ethical and legal manner.

Below is the screenshot of my certificate and marks awarded.

12

Submit Your Homework

Let us help you with your homework, we will match you with one of our professional tutors.

My Info

Project Info

Due Date

Describe your Homework Problem

Budget (optional)

By providing your budget we will work on finding the best tutors that can work within it.

Get help from top-rated tutors in any subject.

Efficiently complete your homework and academic assignments by getting help from the experts at homeworkarchive.com