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
Apprentices will learn to do full-stack web development using JavaScript. What bootcamps and apprenticeships like Techtonica have in common is the fact that they are intensive training. However, bootcamps can be pretty passive classroom learning with students and they cost between $15,000 and $30,000.
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.
Jump to Curriculum Table of Contents.
If you would like to contribute to the curriculum, please sign up here, then choose an issue in the to-do list.
Get started:
- Choose an issue from the TO-DO column that seems right for you & message Techtonica staff. If you know someone connected to Techtonica, they may be able to add you to our slack channel. If you are here for GSSoC19, message Alina L. (M) and say you'd like to pick up the issue.
- 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, even if there's an "assignee".
- To create an outline, fork the repo or commit directly onto the master branch. Here is a topic outline template that explains what we need for each section.
- To edit a slideshow, you'll need to request edit permission by clicking View Only > Request Edit Access, or message Alina. If you are logged into an account ending in @gmail.com, you can simply make a copy, edit, and transfer ownership to techtonicaorg@gmail.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.
While working:
- Comment in the issue if you have a question, or send a slack message.
- 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 techtonicaorg@gmail.com.
Completed curriculum:
- Place a "completed" label on the issue once you've completed it, make a pull request to Techtonica/curriculum master, and leave comments about your work if you like. Grazie Mille!!
- Welcome, Tips, and Rules
- Expectations While at Techtonica
- How to Learn
- Interpersonal Conflict Resolution
- Diversity, Inclusion & Implicit Bias
- Professionalism
- Ergonomics
- Roles in Tech
- Tech Tips and Rules
- Growth Mindset
- Intro to Command Line Interface Tools
- Advanced Command Line
- Bash Profile
- Vim
- Operating Systems
- Keyboard Shortcuts
- Asking Good Questions
- Local Development with VS Code
- Networking
- Interpersonal Conflict Resolution
- How the Internet Works: Requests and Responses
- Intro to DNS
- Project 0 - Week 1 Assessment
- How to Pair Program
- HTML
- Git Version Control
- Recipe Page Project: HTML
- .gitignore
- Using GitHub for Code Storage
- CSS
- Article: What Exactly is the DOM?
- Chrome Developer Tools: Setup
- Recipe Page Project: CSS
- Media Queries
- UI/UX
- Web patterns
- Bootstrap
- Building Confidence
- Recipe Page Project: Bootstrap
- Giving Presentations
- Git Part 2: Study Guide
- Portfolio Project: HTML, CSS & Bootstrap
- Diversity, Inclusion, and Bias
- a11y: Accessibility
- SEO: Search Engine Optimization
- 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
- Portfolio Project: Collaboration and Review
- JavaScript 1
- JavaScript 2
- Whiteboarding
- Datetime
- Whiteboarding Interview Challenges
- JavaScript 3
- JavaScript 4
- JavaScript 5
- JavaScript 6 - Object Literals
- Runtime Complexity
- Basic JavaScript Practice
- Week 4 Assessment: Loops, Conditionals, Runtime Complexity
- Javascript 7 - Object-Oriented Programming
- Mini Project: Object Oriented Programming in JS
- Event Search System with Javascript
- Event Search System with Javascript - Part 2
- Testing & TDD
- Adding Jasmine Chai/Mocha Tests to your project
- Javascript 8 - Regular Expressions / RegEx
- Debugging
- Javascript 9 - Callbacks and Promises
- APIs & JSON
- AJAX
- Twilio Quest Exercise Outline
- Data Visualization
- Assessment 7.9: Data Visualization
- NodeJS
- ExpressJS
- Data Models
- .env & config
- Data Models
- SQL
- Install PostgreSQL
- Relational Databases
- Table Relationships and Join Queries by Treehouse
- Adding Tests to your NodeJS project
- CRUD workshop: connect Node and sqlite3 with Sequelize by Treehouse
- Week 7, Assessment #8 - Build a Minimal API Project
- Database Migrations
- Work through this tutorial: Setting up a RESTful API with Node.js and PostgreSQL by Tania Rascia
- Treehouse: Introduction to REST APIs (do the whole course)
- Do the first two sections of: REST APIs with Express (1.Getting to Know REST APIs & 2.Managing Data and Asynchronous Code)
- Intro to Scrum
- Eventonica Project
- MongoDB
- React Part 1
- React Part 2
- Enzyme Testing
- Intro to Security in Web Development
- Auth0
- Assessment #9.0: Add a field to your Eventonica User
- Assessment #9.5: Auth0
- Deploying to Heroku with React and Node
- Recursion
- Memoization
- Optimization
- JS Hash Maps
- Refactoring
- Optimizing your React/NodeJS Project
- Agile Project Management
- Functional Programming
- Assessment #10: Advanced Methods
- 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
- Technical Interviewing
- Assessment 11: Data Structures and Algorithms
- Read this article on job hunting
- Navigating New Codebases
- Open-source Projects
- Interviewing
- Resume Writing
- Read this article on Take-home Challenges by janephilipps
- Front End Take-home Challenge
- Back End Take-home Challenge
- Technical Writing
- 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
- Difficult Workplace Situations
- Financial Literacy
- Negotiating
- Ethics in Software Engineering
Optional Resources:
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.