I presented a seminar on ransomware attack vectors and mitigation strategies. I researched the CIA Triad, threat actors (cybercriminals, hacktivists, nation-states), and social engineering, applying it to The Bright Future Charity scenario, I proposed IDPS, UTM, MFA, and employee training as solutions.
Reflection: Presenting technical content to peers helped to improve my confidence with peers as we were all in the same boat. Learning basic security concepts like the CIA Triad and attack vectors has made me more security-conscious in all my projects, and I am now more aware of the potential risks and how to mitigate them.
I created a presentation on the data lifecycle (collection, storage, processing, analysis, archiving, deletion). I covered data quality (accuracy, completeness, consistency), GDPR compliance, and ethical considerations like transparency and right to erasure.
Reflection: This presentation has highlighted the importance of data ethics, most importantly it has taught me the importance of collecting data with consent to maintain trust. I now consider GDPR as a core conversational point across my assignments.
For my programming portfolio, I solved username validation, array sorting, target sum, kth largest element, and FizzBuzz. For each problem, I provided two solutions (e.g., Regex vs foreach, LINQ vs manual loops) comparing their complexity. I learned that concise code isn't always the most readable, as regex is particularly powerful for pattern matching, however complicated to understand and read.
Reflection: Regex became essential for my Roblox Discord bot. I used it to scrape Roblox profile links and usernames from messages, extracting confidence scores based on patterns in profile URLs and message content. Without Regex, the same logic would have overwhelmed me with lines of manual string checking. Learning the purpose of Regex in SCDV41 directly enabled me to process over 4,000 records efficiently in my independent project.
I analysed the Unicorn Badminton Club website, identifying weaknesses: poor mobile responsiveness, unlicensed images, lack of calls-to-action, and accessibility issues. I recommended Bootstrap for responsive design, Lighthouse for performance testing, and WAVE for accessibility checks. I also evaluated Figma and GitHub as development tools.
Reflection: This assignment highlighted the importance of agile development principles,continuous testing and iteration are essential in order to create a successful website that meets user needs and business objectives. I now use Lighthouse throughout development so that i can track my progress throughout the development process, not just at the end.
I wrote a 2000-word risk assessment report using the OWASP Top 10 framework. I identified broken access control, security misconfiguration, and cryptographic failures as critical vulnerabilities. I proposed MFA, IDPS (Suricata), regular patching, employee training, and security audits as mitigation strategies.
Reflection: This was my first formal risk assessment. I learned to prioritise risks by likelihood and impact and to propose practical mitigations. I now understand that security is a continuous process, not a one-time fix.
I redesigned the Unicorn Badminton Club website with a mobile-first responsive layout, dark mode toggle, and clear calls-to-action. I achieved a Lighthouse performance score of 94 (up from ~60), fixed accessibility issues (alt text, colour contrast), and replaced unlicensed images. I also set up GitHub for version control.
Reflection: Compressing images to WebP made a huge difference to load times. I'll optimise assets before deployment in future where necessary.
I designed a secure network for Dropship – a warehouse and home office. I implemented VLAN segmentation, site-to-site IPsec VPN, and router-on-a-stick. I chose OSPF over RIP for faster convergence (9.2ms vs 47ms). The Packet Tracer simulation validated connectivity and security policies.
Reflection: Documenting design decisions is crucial to the design itself. It helps justify choices and provides a reference for future troubleshooting or audits.
I built an object-oriented test drive booking system in C#. I designed classes for Customers, Staff, Vehicles, and Bookings, with a main Program class managing the logic. Key features: staff availability, customer trust scoring (3 missed drives = banned), and filtering by name/model. I used GitHub for version control throughout development.
Reflection: OOP makes complex systems manageable. Separating concerns into classes saved me hours of debugging when requirements changed.
I designed a MySQL database (Customers, Products, Orders – 50+ rows), wrote advanced SQL queries (window functions, subqueries), then loaded the data into Python using SQLAlchemy. I performed EDA with Matplotlib/Seaborn and built a linear regression model predicting order value (R²=0.997). This was my first end-to-end data science pipeline.
Reflection: SQL to Python to ML is interesting and I would like to explore more complex models in the future.
I built a Discord bot that scans guilds for user‑specified keywords and logs Roblox profile links into a Railway MySQL database. The bot runs on a real account token, scrapes confidence values using regex, and automatically inserts structured data (Discord ID, Roblox ID, username, confidence score). To date, it has systematically collected over 4,000 records. I also implemented duplicate detection and confidence scoring to maintain data quality. This is my largest independent database project.
Reflection: Interacting with a larger scale database compared to former assignments introduced new challenges, I had to strongly consider how data would be managed safely. Using environment variables to store sensitive information such as database credentials and user and bot tokens, in the future I would like to build an external dashboard to visualise the data outside of the application and outside of viewing the database in the terminal / vscode I'd also like to have a way to implement automated backups locally, not solely relying on the security of the hosting platform.
Getting `jackcv.xyz` live was harder than expected. I had to configure CNAME and TXT records on Namecheap, then wait for DNS propagation. The initial 502 error was because I had used URL Redirects instead of proper DNS records. After switching to the correct CNAME record for the root domain (using Namecheap's "CNAME flattening" feature) and adding the Railway TXT verification record, the site went live. I also set up a lightbox for images and Font Awesome icons as they're cleaner than using emojis.
Reflection: Deployment was a huge barrier. Since working on this portfolio website, I have better understanding of DNS, I've learnt CNAME, TXT verification, learning how to point one domain to another and the importance of waiting for DNS propagation. I have gotten better at problem-solving and debugging, I had to research common deployment issues and systematically troubleshoot until I found the solution. This experience has made me more confident in deploying future projects and I would like to learn docker in the future to locally host websites on a raspberry pi.