----------------------------------------------------------------
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