Categories
Uncategorized

CS467 SWOT Analysis

Introduction

The CS 467 Capstone Project at Oregon State University provides students with a chance to participate in team-based projects that simulate the software development process in the tech industry. Among all the courses in the online post-baccalaureate program, this one was the most engaging as it required students to apply the knowledge they had gained from previous courses. Below is my SWOT analysis of how the course could be improved.

Strengths

The course I took had two great strengths: the instructors and the graders’ guidance towards project goals, and the resources provided to help us prepare for our future careers. 

For my project, I chose AI Coder, which involved development and research. To complete it, my team decided to create an animal adoption web application, and I was responsible for the frontend development. I chose React, but I wasn’t familiar with the new framework. In the first week, I tried to master React before implementing it, but I realized it was an impossible goal due to the timing and my lack of experience. 

Thanks to my grader’s feedback, I recognized my tendency towards perfectionism, which is a weakness I often overlook. In the second week, I worked on the first feature of my app and was tempted to add extra features. However, after reading the course materials on Just-In-Time (JIT), I realized that expanding features in the early phase is unwise. This helped me understand how to balance the product’s quality with time constraints. 

While hard skills are essential, I believe that fostering one’s mindset can have an even greater impact in a real-life work environment. This course was excellent in preparing me for personal development, which is crucial for long-term career success.

Weaknesses

The course has some weaknesses that need addressing. One of the main issues is the team-based approach, which doesn’t have enough communication methods in place. This can be especially challenging for online classes, as students often have to juggle work and family responsibilities. However, this can be improved by incorporating communication tools and rules that are used in the business world.

Another problem is that the course emphasizes agile methodologies, but students are not required to strictly follow them. Encouraging students to adopt these methodologies would significantly enhance the course. For example, students could be guided to include user stories in their project plans and base their implementation plans on these stories.

Lastly, the course project choices mainly focus on functioning features rather than quality aspects. Expanding the criteria to include quality aspects like UX/UI design, robustness, or accessibility could broaden students’ learning experiences and better prepare them for the tech industry.

Opportunities

The course presents numerous opportunities in terms of potential collaborations with businesses and organizations, which can provide students with more real-world projects and career insights. This approach is not limited to merely guiding students towards ideal outcomes but also focuses on developing more practical characteristics that are crucial for overcoming real-world challenges. Although such challenges require foundational technical solutions, my past career experience has taught me that soft skills are often more in demand in such circumstances. Therefore, collaborations should address the necessity of soft skills in this context so that students can develop these skills as they prepare themselves for their future careers.

Threats

One challenge facing this course is its difficulty in keeping up with the fast-paced industry. I have noticed that some of the materials on Canvas in previous courses were slightly outdated. Although these courses have been updated, it remains a challenge to maintain up-to-date materials while continuing to operate ongoing courses.

Conclusion

I discovered that this course is already doing a great job of promoting team-work-based projects in an environment that simulates the challenges present in real-world businesses. However, I believe that incorporating practical approaches such as agile methodologies and emphasizing soft skills through collaboration with real-world businesses and organizations would greatly enhance the quality of the course and keep up with the rapidly changing industry.

Categories
PerosnalThoughts

My Experience with AI Tools and How I Converted Them into Learning Tools in My Capstone Project

Image generated by DALL·E, OpenAI’s AI-driven art generator

Introduction

Today, I want to discuss my favorite AI tool that I’m using for my Capstone project, AI Coder. AI Coder is a unique project that focuses on how a student incorporates AI tools into a chosen project. My team decided to develop a Dating App for Pet Adoptions, a comprehensive CRUD App for managing user and pet data, which includes features for account creation and login, as well as admin capabilities to maintain the data. My team divided the work into three microservices: database, backend, and frontend.

I am charged with the frontend part and use React to create a single-page application. I’m a beginner in React, so I used AI tools in the learning process. I’ve tried ChatGPT 3.5 and 4, Google Bard, and Bing Chat. For learning purposes, they are all good, but GPT is the best; it gives you the most accurate and balanced responses.

Evaluating AI Tools

Bing Chat is like the minimalist among the four. Unlike GPT, it lacks the ability to store past conversation sessions, focusing instead on AI-powered search capabilities. Google Bard is good, but personally, it is verbose and gives me a broader range of responses. GPT’s responses are mostly balanced, not too detailed but not too simplified. The only downside is GPT4 is limited to 40 messages per 3 hours. I can easily go over 40 messages in 3 hours when I’m learning. Also, it takes time to generate responses, and when I used it last week, it had issues with service outages and frequent internal errors. GPT 3.5 is fast and reliable in most cases; the only downside is that it cannot answer with up-to-date information. While learning about the react-router-dom library, it initially provided examples for v5, not realizing I needed information on v6, leading to confusion. When I asked the same question to GPT 4, it instantly understood that I was asking about v6 and even mentioned what is different from v6 and v5 when I asked about , which is not used in v6 anymore. Until GPT mentioned it, I didn’t know there was a significant difference between v6 and v5.

Tips for Effective Uses of GPT

After trial and error with GPT as a learning tool, I found some effective ways to use it.

First, it’s important to focus on a single topic per conversation session. GPT operates on a stateless basis, meaning each conversation is influenced only by the user’s most recent prompt. It can appear to understand you and your previous discussions because it applies its advanced training and the feedback it receives within the same conversation session. However, if a user suddenly introduces an unrelated topic, GPT may provide inaccurate responses, as it depends heavily on the ongoing conversation’s context for cues. As an example, while working on my project plan, I instructed GPT to generate tasks for each feature I described, asking it to maintain this approach throughout our conversation. After a lengthy discussion, I forgot and changed topics abruptly, and GPT continued to generate tasks, misinterpreting my new topic as another feature explanation.

Second, be specific about what you are asking. Providing more details as if you are trying to explain it to someone else helps a lot. For example, clarifying the purpose or end goal you are looking for in this conversation generally helps GPT stick to the goal whenever it generates an answer throughout the whole conversation.
A minor inconvenience arises during prolonged conversation sessions with GPT. To refer back to a previous response, I need to scroll all the way up, which complicates matters when I have questions about earlier parts of the conversation. I have to mention it precisely to get an accurate response. If similar topics are discussed in the conversation, GPT might get confused and use the prompt instead of the one you meant to answer your question.

Finally, be patient. AI is a tool that requires multiple trials and errors to master. I didn’t know how to use it effectively until I researched many tips from others on how to utilize ChatGPT efficiently. Test these tips and try to mimic them, and you will learn how to customize your approach to learning with AI tools. Here are some references I used.

How do I use chat GPT effectively?
Why AI Is One of the Best Tools for Quickly Learning to Code

Conclusion

Overall, if you know how to use it well, focus on the topic without digressing, and always be specific, it will definitely improve your learning process and help you quickly start with any new technology in your development process.

Categories
PerosnalThoughts

From Beginning to Now: My Journey in OSU CS Post-bacc Program

Times goes by really fast, and I find myself at the final stage of the OSU computer science post-bacc program. I am writing to reflect how I started and ended up joining the program and challenges I faced during the program.

I began my journey while working as a program management staff in the automobile industry. Although my role was in program management, I lacked experience and wasn’t technically qualified the position. My responsibilities involved attending many meetings with engineering teams from both my company and customers.

Despite not having an engineering background, understanding technical discussions wasn’t crucial for my role at that time because my co-workers understand that I was new and learning. My main focus was on grasping how projects were progressing and learning any hindering factors at each stage. This limitation, however, was frustrating, as I felt left out of discussions that only those with technical knowledge could truly enjoy. Not only this, I also saw limited opportunities for growth. Frustrated with theses circumstances, I made the decision to transition into an engineering role. This was a very hard decision because all of my co-workers and my boss were nice, and the salary and the benefits provided by the company were better than what my position offered. I chose computer science, not mechanical engineering, because as a hobby, I had been learning Python.

The early stages of the program went smoothly, with the initial courses begin relatively easy. However, around halfway through the program, I found myself confounded when creating my first web application. Back then, the Web Development course used the XMLHttPRequest API. I am sure the course is revamped and utilize the Fetch API now. I even struggled to understand what Promises were and their purpose. Later, I finally grasp these concepts. One thing I learned from this was that I had a hard time understanding it because I tried to relate it to something that I learned in the past — simply put, I thought too much.

After the last course, I dedicated myself to backend development for the rest of the program. Finally, after I learned about programming the REST API and reviewing data structures and algorithms to prepare technical interviews, I decided my path. I am currently aiming to become a full-stack web application developer. Even thought my initial thought on the industry is naïve, as I continue to learn and dedicate my life to computer science, it keeps me engaged. Now, I find myself fond of this field more than I initially felt. I want to delve even deeper, and all I need now is to successfully complete the capstone project and begin my real-life journey in the industry.