Welcome to the Techtonica curriculum!
Techtonica is a non-profit project of SocialGood that does free tech training and job placement for unemployed or underemployed folks. For more information, please see our website: Techtonica.org
An apprenticeship aims to be more like the workplace to make the transition into the industry better—instead of having an instructor constantly guiding you, a facilitator gives you assignments and you're expected to figure out what to do with volunteers, mentors, tech groups, and other apprentices. In the best-case scenarios, there are regular check-ins with managers and mentors provide support. We’re making Techtonica’s program as hands-on and project-based as possible to best prepare you for work in tech.
- Click a "to-do" issue link and add yourself as the assignee, and pull it into the "in progress" column. (You'll need a github account to comment. If you know someone connected to Techtonica, they may be able to add you to our slack channel.)
- In the issue, you should find a link for a lesson outline and for corresponding slides.
- If it is in the "to-do" column, that means it is available. You are welcome to message questions to past assignees that may still show on the issue.
- To create an outline, fork the repo or commit directly onto the master branch.
- To edit a slideshow, you'll need to request edit permission by clicking View Only > Request Edit Access. If you are logged into an account ending in @gmail.com, you can simply make a copy, edit, and transfer ownership to email@example.com when you finish. Either way, save on top of the sample template used in the slide, and cut any slides you find unnecessary.
- To make a video, one effective solution has been to record your screen as you explain the lesson slides to the apprentices. An alternative can be a video found online that covers all the objectives of the lesson in a way suited to beginners.
- Here is an example of a great lesson trio: MongoDB Slides, MongoDB Lesson Outline, MongoDB Video.
- Comment in the issue if you have a question, and add the "question" tag to help get our attention.
- People are welcome to team up on an issue. If you see someone is already assigned but you want to help, leave the other assignee a message on the issue about collaborating.
- Please note the due date! Any amount of help is appreciated, but if the deadline approaches and you won't be able to complete it, please leave a comment about your progress and unassign yourself from the issue so someone else can pick it up. If you forked the repo, go ahead and make a pull request with what you have, and transfer ownership of a copied slideshow to firstname.lastname@example.org.
- Place a "completed" label on the issue once you've completed it, and leave comments about your work if you like. Grazie Mille!!
Table of Contents
- Welcome, Tips, and Rules
- How to Learn
- Growth Mindset
- Tech Industry Tips
- Roles in Tech
- Intro to Command Line Interface Tools
- Advanced Command Line
- Bash Profile
- Operating Systems
- Keyboard Shortcuts
- Asking Good Questions
- Local Development with VS Code
- Interpersonal Conflict Resolution
- How the Internet Works: Requests and Responses
- Intro to DNS
- How to Pair Program
Client-side Development && Confident Programming
- Recipe Page Project: HTML
- Git Version Control
- Using GitHub for Code Storage
- Recipe Page Project: CSS
- Media Queries
- Web patterns
- Building Confidence
- Recipe Page Project: Bootstrap
- Giving Presentations
- Diversity, Inclusion, and Bias
- Portfolio Project: HTML, CSS & Bootstrap
- SEO: Search Engine Optimization
- a11y: Accessibility
- Portfolio Project: Incorporating SEO & a11y
- Using GitHub for Project Collaboration
- Portfolio Project: Personal Branding
- Reading/Writing Documentation
- Writing Readable Code
- Deploy your Portfolio Project: Deploying Client-Side Apps with Netlify
- Testing & TDD
- OOP Project: Object Oriented Programming
- Chrome Developer Tools: Setup
- Runtime Complexity
- APIs & JSON
Server-side Development && Agile Programming
- Data Models
- .env & config
- Relational Databases
- Database Migrations
- Intro to Scrum
- Eventonica Project
- Functional Programming
- Deploying to Heroku with React and Node
- Agile Project Management
Data Structures & Algorithms
- Intro to Data Structures
- Sprint Plan for Data Structures & Algorithms Week
- Data Structures: Stacks
- Data Structures: Queues
- Data Structures: Deque
- Data Structures: Linked Lists
- Data Structures: Hash Tables
- Data Structures: Trees
- Intro to Algorithms
- Algorithms: Searching
- Algorithms: Sorting
- Data Visualization
Career Development && Final Project
- Navigating New Codebases
- Technical Interviewing
- Open-source Projects
- Career Week: Machine Learning Engineer
- Career Week: Entrepreneurship
- Career Week: Data Science
- Career Week: Security
- Career Week: QA Engineer
- Career Week: Developer Advocate
- Career Week: Sales Engineering
- Career Week: Technical Program Manager
- Final Project: Selecting Your Final Project
- Final Project: 5 weeks
- Mobile Development
- Resources: Women in Tech
- Financial Literacy
- Ethics in Software Engineering
Creative Commons Open-Source License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.