Growth as a Student
When I first joined AP CSP, I barely even knew what GitHub was. I thought this class would be an easy A, but little did I know it would turn out to be one of the most valuable learning experiences I’ve had. Despite its challenges, this course has helped me grow tremendously as a computer science student. It has taught me skills that even some college students struggle with, giving me an edge in the competitive job market. I’m excited to share everything I’ve learned over the past several weeks!
Beginning of CSP
With the help of my team, we created this
The 5 things I learned over the past few months
1. Flask Debugging
Overview:
Flask is a powerful web framework, but debugging issues can be tricky. I learned how to use debugging tools to identify and fix errors efficiently.
Key Debugging Techniques:
- Using Flask’s built-in debugger to track and fix errors in development.
- Reading error logs to identify issues in requests, responses, and server behavior.
- Implementing try-except blocks to handle exceptions gracefully.
- Using breakpoints and logging to trace program execution and pinpoint issues.
- Testing API routes and database queries to ensure smooth backend performance.
Why It’s Important:
- Ensures that the backend runs smoothly without crashes.
- Helps prevent unexpected behavior and improves application reliability.
- Makes it easier to troubleshoot issues and maintain the codebase.
- Improves performance and security by catching errors before deployment.
# Setup Virtual Environment
# Create and activate a virtual environment
python -m venv venv
source venv/bin/activate # On Windows use: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Open VS Code
code .
# Run Make Command for frontend
make
# Access the web server (check terminal output for exact address)
# Example: http://127.0.0.1:4100
# Backend Setup (flask_2025 or flocker_backend)
# Ensure .env file exists with credentials
# ADMIN_USER='toby'
# ADMIN_PASSWORD='123Toby!'
# DEFAULT_USER='hop'
# DEFAULT_PASSWORD='123Hop!'
# Create and activate a virtual environment
python -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Initialize the database
python scripts/db_init.py
# Check running Python processes before starting backend
# MacOS: Activity Monitor | Windows: Task Manager
# Run backend server with debug mode
python main.py # Alternatively, use VSCode Debugger
# Verify Python process in Activity Monitor/Task Manager
# Backend Server runs on a separate port (e.g., 8087)
# Frontend runs on 4100 to prevent conflicts
# Debugging API Requests
# Set breakpoints in api/user.py -> _Security class -> def post(self):
# Frontend Server Process
# Check Jekyll process running on port 4100
pgrep -fl jekyll # Expected output: jekyll serve -H 127.0.0.1 -P 4100
# Login and Debugging in Browser
# Open: http://127.0.0.1:4100/portfolio_2025/login
# Inspect Element in browser, go to "Sources" tab
# Set breakpoints in:
# - login.js at login(options);
# - profile.js at options.callback();
# Perform login and track execution flow through breakpoints
2. Frontend to Backend Integration
Overview:
Connecting the frontend with the backend is essential for building dynamic web applications. I focused on establishing efficient communication between the two by implementing API calls and managing data flow.
Key Tasks:
- Making API calls to fetch and send data between the frontend and backend.
- Handling data flow to ensure seamless interaction between the user interface and the server.
- Implementing CRUD operations (Create, Read, Update, Delete) for managing data effectively.
- Managing authentication and authorization to control user access to specific resources.
- Debugging and error handling to improve system reliability and user experience.
Why It’s Important:
- Real-time user interactions – Ensures smooth communication between frontend and backend.
- Improved functionality – Enables web applications to be interactive and dynamic.
- Enhanced security – Protects data with authentication and authorization mechanisms.
- Scalability & maintainability – Helps in organizing code and separating concerns efficiently.
3. AI Gemini Chatbot Integration
AI-Powered Chatbot Integration with Gemini
I integrated an AI-powered chatbot using Gemini, allowing users to interact with an intelligent assistant.
Why It’s Important
- AI-driven chatbots enhance user experience by providing instant responses and automating tasks.
API Key Creation Process
This image shows the process of creating an API key for the Gemini API in Google AI Studio.
Key Steps:
- Select a Google Cloud project (named Gemini API) to associate with the API key.
- Click "Create API key in existing project" to generate a unique key.
- Use the generated API key to authenticate requests to the Gemini API, enabling interactions with AI models.
Purpose of the API Key
- Allows sending API requests (e.g., text generation, AI interactions) using the Gemini API.
- Requests are made through HTTP POST for secure communication with the model.
async function sendToGeminiAPI(userMessage) {
const apiUrl = "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent?key=AIzaSyBypRsU2zOQJRHJK4KgJm4GJJc1TGHnELI";
try {
const response = await fetch(apiUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
contents: [{
parts: [{ text: `You are Striver, an AI designed to listen to users' challenges, achievements, goals, and struggles, and respond like a supportive best friend or therapist. Your job is to hear people out, empathize, and interact naturally—be conversational, informal, and slightly imperfect to feel more human. Use contractions, everyday phrases, and a casual tone, like you’re chatting with a friend. Be friendly, but don’t overdo it—stay genuine and relatable. If you don’t know something, just admit it casually, like, “Not sure about that, honestly.” Avoid being overly technical or precise; keep responses simple and intuitive. Throw in a touch of warmth, a sprinkle of humor if it fits, and always show interest in what they’re saying. Remember, your goal is to connect, not just reply. ${userMessage}` }]
}]
})
});
if (!response.ok) {
throw new Error(`Error: ${response.status}`);
}
const data = await response.json();
return data.candidates[0].content.parts[0].text;
} catch (error) {
console.error('Error communicating with Gemini API:', error);
return "An error occurred while communicating with the AI.";
}
}
4. AWS (Amazon Web Services)
Exploring AWS for Cloud Computing
I explored AWS for cloud computing, learning how to deploy and manage applications efficiently.
Why It’s Important
- Cloud services improve scalability, security, and performance for web applications.
AWS Route 53 Hosted Zone
This image shows the AWS Route 53 Hosted Zone for stu.nighthawkcodingsociety.com, where records are managed.
Key Takeaways
- Striver Project: The DNS record for striver.stu.nighthawkcodingsociety.com is an A record pointing to
3.129.109.200, directing traffic to a specific server. - TTL: Set to 300 seconds, allowing quick updates.
- Routing Policy: Simple, meaning all requests go directly to this IP without load balancing.
This setup ensures that Striver is accessible via its domain.
Deployment and Ubuntu
User navigates into the striverr_backend project directory and lists its contents.
Moves into instance/volumes/, which stores persistent data.
Opens the user_management.db SQLite database using sqlite3.
Runs SELECT * FROM Mood; to retrieve all records from the Mood table.
The query returns three rows with an ID, an emotional state, and a name (e.g., "Neutral | Niko").
docker-compose build
#setting up ingredients and stations.
docker-compose up -d
#opening the restaurant for service.
docker-compose down
#closing and cleaning up or doing renovations.
Thinking what you will do next in CompSci, interests, classes, college, internships, career
Becoming an Eagle Scout has been a transformative experience for me, not only in developing leadership but also in instilling a strong sense of responsibility and community. In my troop, I actively teach kids about Computer Science Principles (CSP), helping them understand the fundamentals of coding, problem-solving, and critical thinking. This teaching role has deepened my passion for technology and its real-world applications. As I look to the future, I am eager to pursue mechanical engineering and aerospace, fields that blend my love for hands-on problem solving with my desire to innovate in the tech world. I plan to take specialized courses and seek internships that will allow me to gain practical experience in these industries. In college, I hope to continue refining my skills in mechanical engineering and aerospace while also exploring cutting-edge developments in robotics and space technology. The combination of my Eagle Scout experience and my aspirations in engineering will guide me toward a career where I can inspire others and contribute to technological advancements that shape the future.
Final Grade
Honest Self-Grade Assessment for 5 Things Over 12 Weeks:
Over the past 24 weeks in CSP, I believe I have earned a 94.5% based on my effort, learning growth, and contributions to the team. When I started this class, I had no prior experience, which made the learning process challenging. However, I worked hard to overcome this and successfully completed five key tasks that demonstrated my growth and had a meaningful impact on our team’s progress. Throughout the course, I consistently put in effort to learn new skills and apply them effectively. I contributed to problem-solving, teamwork, and adapting to new challenges, all of which helped the team move forward. Considering the progress I made from the beginning of the class, the work I completed, and the role I played in our overall success, I believe a 94.5% is a fair reflection of my performance.
Honest Self-Grade Assessment for Full Stack Project Demo:
I believe I deserve a 96% for the Full Stack demo because of the positive reception our project received. We received several compliments from parents, as well as positive feedback from the Google Form we sent out. This feedback shows that many people appreciated and liked our project, demonstrating its effectiveness and impact. Given the effort put into developing and presenting the demo, along with the strong response from our audience, I believe a 96% is a fair reflection of my contribution.
Honest Self-Grade Assessment for Project Feature Blog Write-up:
For my project feature, I believe I deserve a 94% because of the unique challenges I had to overcome in developing my UI and functionality. Unlike my peers, I had to accommodate a chatbot, which required a completely different approach to both design and implementation. This meant I couldn’t simply copy and adapt existing code but instead had to build my feature entirely from scratch. The chatbot integration made my UI distinct, requiring a more dynamic and interactive layout to support real-time conversations. Additionally, my functionality had to be structured differently to handle user inputs, responses, and seamless interaction, making my work stand out from others in terms of complexity and originality. Given the effort, problem-solving, and originality involved in creating my feature, I believe a 94% accurately reflects my work.
Honest Self-Grade Assessment for MCQ:
I believe I deserve a 91% on the MCQ section, even though this is higher than my actual score. I feel this is fair because I completed the entire test in one sitting without taking breaks, ensuring the most accurate reflection of my true knowledge in CSP. While others may have taken breaks, which could have given them an advantage in focus and performance, I wanted to see where I truly stood without external factors influencing my score.To make up for my lower score, I have created an extensive plan to improve my understanding and performance. This plan includes targeted review sessions, practice problems, and studying specific areas where I struggled. Given my honest approach to the test and my commitment to improvement, I believe a 91% is a fair assessment of my effort and dedication.
Honest Self-Grade Assessment for the 10th point:
I believe I deserve a 95.5% due to my dedication, engagement with others, and thorough self-assessment. I reviewed and interviewed four teams for detailed N@tM write-ups, showing my commitment to their work. I provided an extensive strengths and weaknesses report for the MCQ and FRQ, outlining improvement steps. I also helped someone organize Final Exam materials and conducted a live review with them to make sure that we both are ready for the check. I reflected on my future in CompSci, planned next steps for my project, and identified strengths and weaknesses. I submitted my 24-hour summary and successfully covered all 10 key points in my live review within three minutes. Meeting all requirements while demonstrating deep engagement and self-improvement, I believe 95.5% fairly reflects my performance.
| Topic | % of Grade | Points |
|---|---|---|
| 5 Things Over 12 Weeks / Issues, Burndown, Presentation | 94.5% | 4.725/5 |
| Full Stack Project Demo | 96% | 1.92/2 |
| Project Feature Blog Write-up | 94% | 0.94/1 |
| MCQ | 91% | 0.91/1 |
| 10th point | 95.5% | 0.955/1 |
| Total | 94.5% | 9.45/10 |