Portfo ✓ Solved

---------------------------------------------------------------- PORTFOLIO Master’s in Computer Science ---------------------------------------------------------------- Table of Contents 1. Professional Goals……………………………………...... Resume…………………………………………………..2 3. Ability to Apply Discipline-specific Knowledge………... Integrate knowledge from several disciplines…………....

Ethical Context………………………………………..... Legal Context…………………………………………..11 Appendices……………………………………………….. 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): Link to Graphs for Metrics for all the ten projects and Source code: 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 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: 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): Link to the video for final project: 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: 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., 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: 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 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

Paper for above instructions


Table of Contents


1. Professional Goals
2. Resume
3. Ability to Apply Discipline-specific Knowledge
4. Integrate Knowledge from Several Disciplines
5. Ethical Context
6. Legal Context
7. References
---

1. Professional Goals


As I approach the completion of my Master’s in Computer Science, my professional goal is to secure a full-time position as a Software Development Engineer in Test (SDET) within three months of graduation. This career path aligns perfectly with my passion for software quality assurance and testing, reflecting my desire to contribute towards creating robust and reliable software applications. Throughout my studies, I have engaged in various coursework related to software engineering, including critical testing methods and strategies, which have prepared me for this role.
To achieve my goal, I have strategically taken classes in software engineering methodologies, participated in an internship focused on software quality assurance, and am currently employed as a part-time SDET at CASS, operated by Oregon State University. Networking through platforms like LinkedIn has connected me with recruiters and provided insight into the typical interview process for companies of interest to me. Given my knowledge base and practical experience, I am confident that I am positioned to transition seamlessly into a full-time SDET role.

2. Resume


[This would include your resume outlining your education, relevant experiences, skills, and contact information.]

3. Ability to Apply Discipline-specific Knowledge


During my Master’s program at the School of Electrical Engineering and Computer Science, I have successfully completed courses across three key areas: Theoretical Computer Science, Software Engineering, and Computer Architecture and Systems. Detailed below are specific courses completed and insights gained:

CS560: Data-Driven Software Engineering


In this course, I utilized Mining Software Repositories (MSR) techniques to conduct a thorough survey, analyzing various software development issues and processes. By engaging with peer-reviewed research papers, I developed a robust understanding of software development complexities. Notably, our final project involved a comprehensive analysis of ten open-source projects, where we evaluated elect metrics influencing project success. We leveraged tools such as Python, GitHub API, and Travis API, culminating in a 10-page report that synthesized our findings.

CS561: Software Engineering Methods


This course introduced me to agile methodologies. We employed Scrum principles in a team project to develop "Parking Buddy," an Android application aimed at optimizing residential parking. Following test-driven development, our collaborative approach facilitated shared learning experiences and insights into practical software development cycles.

CS576: Advanced Computer Networks


Our final project involved designing a home security system using IoT architectures with Raspberry Pi and socket programming. The implementation provided hands-on experience with real-world IoT device functionality and network protocols.

4. Integrate Knowledge from Several Disciplines


As data analytics becomes increasingly pivotal in tech, understanding statistical methods is essential for computer science professionals. To complement my computer science coursework, I undertook the course ST511: Methods of Data, where I learned various statistical tests like ANOVA and regression analyses. This cross-disciplinary knowledge enables me to interpret large datasets effectively, which is indispensable for making data-driven decisions in software development—an asset for any potential employer.

ECE/CS 572: Computer Architecture


This course deepened my understanding of CPU functions and the architecture of computer systems, equipping me with technical insight crucial for optimizing software performance at the hardware level. A final project involving cache simulation using SimpleScaler helped reinforce these concepts through practical application.

5. Ethical Context


Understanding and adhering to professional ethics is critical in the STEM fields. My undergraduate course in Professional Ethics illustrated the importance of integrity, objectivity, and respect in the engineering field. I learned to prioritize user privacy and data protection when developing software, ensuring compliance with ethical standards of practice.

6. Legal Context


Legal knowledge is also a vital aspect of software development. My coursework in software engineering underscored the importance of respecting copyright laws and software patents, cautioning against the inadvertent infringement of intellectual property rights. Understanding these nuances ensures I’m equipped to navigate the legal landscape as a software developer.
Further, I participated in training through the University of Miami’s Collaborative Institutional Training Initiative on Responsible Conduct for Research (RCR), reinforcing my commitment to ethical and legal standards in engineering practice.

7. References


1. Pressman, R. S. (2014). Software Engineering: A Practitioner's Approach. McGraw-Hill.
2. Sommerville, I. (2011). Software Engineering (9th ed.). Pearson Education.
3. Beck, K. (2002). Test-Driven Development: By Example. Addison-Wesley.
4. Lethbridge, T. C., & Laganière, R. (2005). Object-Oriented Software Construction. Springer.
5. Cheng, B. H., & Atlee, J. M. (2007). Research Directions in Requirements Engineering. In Future of Software Engineering (p. 285-303). IEEE Computer Society.
6. O'Reilly, T. (2009). What Is Web 2.0: Design Patterns and Business Models for the Next Generation of Software.
7. Hennessy, J. L., & Patterson, D. A. (2019). Computer Architecture: A Quantitative Approach (6th ed.). Morgan Kaufmann.
8. Bishop, M. (2018). Introduction to Computer Security. Pearson.
9. Womack, J. P., & Jones, D. T. (2003). Lean Thinking: Banish Waste and Create Wealth in Your Corporation. Free Press.
10. IEEE Computer Society. (2018). IEEE Code of Ethics. Retrieved from https://www.computer.org/about/councils-committees/ethics
---
This portfolio details my educational journey, experience, and aspirations, showcasing my preparedness for a successful career in software development and testing. It encapsulates my training, ethical diligence, and multi-disciplinary approach to problem-solving within the field.