T1 Final Blog
Final Blog
✨ CSP Final Blog / Semester Reflection ✨
This semester in CSP has been one of the biggest transformations in my academic journey. At the start of the year, my understanding of computer science was extremely limited. I didn’t know how to use a terminal, I had no idea how repositories were structured, and GitHub felt like a tool only advanced programmers could navigate.
Over the months, I learned not only how to control the terminal confidently, but also how to understand the logic behind commands and how they interact with files and code. Through consistent practice, I became comfortable navigating directories, managing files, working with repositories, and collaborating using GitHub.
At first, error messages felt overwhelming — but now, I can slow down, read them carefully, and fix problems much more independently. That shift has made me more confident in my coding abilities and helped me develop real problem-solving skills.
One of the biggest sources of growth was collaboration 👥. I made new friends in CSP, and working together helped me understand concepts that would have been harder alone. Debugging as a group taught me patience, communication, and teamwork. By the end of the semester, I felt a much deeper understanding of what it really means to “think like a programmer.”
🚀 Growth Across the Sprints
🛠️ Tools Unit
During this sprint, I learned how to move efficiently through project directories using the terminal. Commands like ls, cd, mkdir, mv, rm, git clone, git status, git add, and git push went from being confusing symbols to tools I actively relied on.
I also understood why these commands matter — not just how to type them. This unit gave me confidence in using real developer workflows and taught me how professionals manage and organize code.
🧠 Fundamentals of Python & JavaScript
This sprint gave me a solid foundation in two programming languages. I practiced loops, lists/arrays, conditionals, functions, return statements, and more. I also improved at reading pseudocode and translating ideas logically into working programs.
This sprint helped me understand control flow, logic, and how programs actually think, which prepared me for more advanced concepts later on.
🌐 West Coast Travel
This project challenged me in both technical and creative ways. I learned how GitHub submodules work (which felt confusing at first), and I improved my web-design abilities using HTML and CSS.
I experimented with layouts, colors, spacing, fonts, and content organization to make the project easier to read and understand. This sprint helped me balance creativity and technical skill — something important in real CS work.
🖼️ Night at the Museum Reflection
Night at the Museum was one of the highlights of the semester. Visitors complimented the clean and organized design of our webpage, and parents said it was easy to navigate. It felt rewarding to present something we built from scratch and watch people genuinely enjoy it.
Explaining our project also helped me build confidence in talking about technical work out loud. CSP taught me not only how to code — but also how to communicate what I built and why it matters. 💬
🎯 What I Want to Learn Next
Next semester, I want to:
- Learn more advanced terminal shortcuts and commands ⚙️
- Improve my logic skills for AP-style MCQs 📘
- Strengthen my algorithm-tracing and pattern-recognition abilities
- Explore deeper programming topics like APIs, databases, asynchronous code, and advanced Python/JavaScript
My goal is to be fully prepared for the AP exam and continue building confidence as a developer.
✅ MCQ Review (55/66)
Below is a detailed breakdown of every question I missed — including what happened, what I need to remember, and the exact skill points I need to practice.
| Question # | My Answer | Correct Answer | What I Missed / Detailed Analysis | What to Remember | Skill Points You Need to Know |
|---|---|---|---|---|---|
| Q1 — Swapping Values | D | B | I mixed up the correct order of assignments. A swap requires three exact steps (save → overwrite → restore). My answer overwrote the wrong value, breaking the logic. | Swapping ALWAYS follows: temp ← first → first ← second → second ← temp | • Understand assignment order • Track variable changes • Follow algorithm steps carefully |
| Q12 — Social Media Projection | C | B | I didn’t analyze the growth pattern correctly. The increase is steady (~0.6 per year). I guessed instead of calculating the trend. | Use average rate of change to make predictions. | • Read data tables • Identify linear trends • Predict values using patterns |
| Q15 — Internet Communication | A | C | I incorrectly thought matching OS matters. Communication depends on protocols, NOT operating systems. | All devices need IP addresses and follow protocols. | • Know the purpose of protocols • Understand IP addressing • Distinguish OS vs. network rules |
| Q16 — Downloading Licensed Music | A | B | I chose an option that is extremely likely (targeted ads). The question asked for the least likely outcome. | Ads = common, location-based reviews = rare. | • Analyze privacy consequences • Identify likely vs. unlikely data usage • Understand personalization algorithms |
| Q26 — Robot Movement | C | A | I misread the robot logic. The correct program checks forward movement FIRST and rotates ONLY when blocked. | Robot logic: check → move → rotate | • Trace robot movement • Understand while/if logic • Follow movement conditions precisely |
| Q31 — Loop Algorithms | A | D | I didn’t simulate the robot’s moves completely. Neither program reaches the goal. | Always simulate step-by-step. | • Trace loops carefully • Follow algorithm flow • Visualize movement on grids |
| Q43 — Algorithm Runtime | D | A | I confused approximation with runtime. The runtime grows quadratically (n²), which is still reasonable. | Polynomial = reasonable, exponential = unreasonable. | • Recognize runtime patterns • Compare growth rates • Understand algorithm efficiency |
| Q45 — NAND Logic Gate | B | C | I forgot the correct Boolean meaning of NAND. NAND is the negation of AND. | NAND = NOT (P AND Q) | • Know logic gate outputs • Evaluate truth tables • Apply Boolean expressions |
| Q46 — Undecidable Problems | A | D | I incorrectly believed a low-level language could solve it. Undecidable means no algorithm exists for any language. | Undecidable = fundamentally unsolvable by algorithms. | • Understand decidability • Recognize halting problem logic • Know limits of computation |
| Q53 — Machine Learning Purpose | D | A | I thought ML solves theoretical problems. It’s actually about patterns, classification, and predictions using data. | ML = patterns + predictions + data analysis | • Know ML applications • Understand training data • Identify patterns in datasets |
| Q59 — Movie Studio Media Librarian | A | B | I didn’t consider the purpose of archiving. Lossy compression ruins quality permanently, making it the worst option. | Archiving must use lossless only. | • Know file compression types • Understand data preservation • Compare lossy vs. lossless formats |
| Category | Skill Points You Need to Know (Highly Detailed) |
|---|---|
| Algorithms & Logical Reasoning | - Simulate algorithms by hand to track each variable’s value change step-by-step - Understand correct order of assignments, especially in algorithms involving swaps or temporary storage - Recognize patterns in loops (increasing by 1, 2, or custom increments) and predict resulting sequences - Evaluate whether an algorithm uses linear, binary, or other search strategies - Understand when algorithms require sorted data and when they don’t - Identify whether a runtime is polynomial (reasonable) or exponential (unreasonable) - Determine how runtime grows as input size increases - Analyze algorithm structure to detect infinite loops or impossible-to-solve (undecidable) problems - Use Boolean logic to evaluate expressions (AND, OR, NOT) - Interpret and build truth tables, including NAND - Understand how control flow (if/else, loops) affects outcomes |
| Programming Constructs & Abstractions | - Use procedures to simplify and organize repeated code - Understand abstraction as a tool to reduce complexity and improve readability - Generalize functions (example: square & cube → power(n, m)) - Combine filtering, transforming, and sorting in the correct order - Understand substring operations (start index + length) - Use concatenation to build strings - Predict outcomes when logical operators are incorrect - Recognize common mistakes (AND/OR errors, unreachable code) |
| Data Handling, Storage, and Representation | - Understand how increasing bit sizes exponentially increase representable numbers - Identify overflow in fixed-bit systems - Compare lossy vs. lossless compression and when each is appropriate - Know that lossy compression permanently removes data - Combine datasets with different formats and identify what analyses become possible - Recognize limits when fields differ (ZIP code missing, etc.) - Correctly calculate averages and aggregations when data matches - Understand redundancy and backups for preventing data loss |
| Networking, Internet, and Security | - Understand symmetric encryption (same key encrypts + decrypts) - Understand asymmetric encryption (public key encrypts, private key decrypts) - Recognize why public-key messages can only be decrypted by the private key - Understand IP addresses and protocols for communication - Know how the Internet lowers geographic barriers - Understand how crowdsourcing benefits from large groups - Distinguish what the Internet enables vs. what it cannot solve |
| Machine Learning & Data Science | - Machine learning identifies patterns in large datasets - Models use training data to improve predictions - Understand difference between rule-based algorithms and ML - Recognize ML tasks (prediction, classification, pattern recognition) |
| Probability, Simulations & Data Modeling | - Use RANDOM() to simulate probabilities - Set correct probability thresholds (ex: 75% → ≤ 75) - Predict expected outcomes over many iterations - Understand the purpose of simulations in experiments |
| Lists, Strings, and Data Transformation | - Filter lists (ex: keep only palindromes) - Transform items (ex: take first letter of each word) - Sort lists alphabetically or numerically - Use ordered operations: filter → transform → sort - Use substring(start, length) correctly - Build entire words or strings from smaller extracted pieces |
| General Problem-Solving Skills | - Break problems into smaller steps - Think through code execution top-to-bottom - Use patterns and trends to choose answers - Understand differences between similar topics (encryption, compression, searches, etc.) - Recognize whether a question tests tracing vs. conceptual understanding |
title: Open Coding
description: "Class of 2026"
owner_name: John Mortensen
github_username: jm1021
baseurl: "/s5cy_student"
github_repo: "s5cy_student"
future: true
remote_theme: jekyll/minima
minima:
skin: dark
social_links:
- { platform: github, user_url: "https://github.com/open-coding-society" }
- { platform: x, user_url: "https://x.com/Open_Coding" }
- { platform: youtube, user_url: "https://www.youtube.com/@OpenCodingSociety" }
plugins:
- jekyll-remote-theme
- jekyll-include-cache
header_pages:
- navigation/blog.md
- navigation/search.md
- navigation/about.md
- navigation/logintoolkit.md
🌟 Final Thoughts
Looking back on the semester, I’m proud of how much progress I’ve made. I went from someone who barely understood how to open a terminal to someone who can build projects, navigate GitHub, collaborate on code, and explain technical ideas with confidence.
CSP gave me a foundation in programming, problem-solving, communication, and collaboration — skills I’ll continue building as I move forward in computer science. I’m excited to grow even more in the future. 🚀💻