What I Learned In 12 Weeks At Tech Elevator
This post is for those who are curious about the curriculum at Tech Elevator. I wish I had this information before I got started!
I’d recommend learning as much as you can before you start your boot camp. I’ve included learning resources below the curriculum details.
Every day we have course material to read before class. Here is the book for our daily reading assignments.
Before I continue, I should mention that Tech Elevator’s boot camp is split into 4 modules:
Module 1 = Java
Module 2 = PostgreSQL and Spring Boot
Module 3 = HTML/CSS/JavaScript/Vue.js
Module 4 = Final Capstone
You can click on each week below to see the curriculum in more detail.
-
Monday
Orientation and Introduction to Tools
- Windows / Mac OS
- Accessing the file system (Windows Explorer, Finder)
- Using multiple monitors
- Using a text editor (Visual Studio Code)
- File System and Shell Commands
- Understand hierarchical structure
- Navigation (cd, pwd, ls)
- File & Directory Manipulation (rm, mkdir, mv, cp)
- Git (Local add/init/commit & Remotes) + Bitbucket Setup
- add, status, and commit for saving local changes
- push for saving changes in a remote repository
- updating local repository with changes from remote with `pull`
Tuesday
Variables and Datatypes
- Understand the Java/.NET platform
- What is a compiler?
- What is a virtual machine?
- What is source code? byte code?
- What is a programming language?
- How to use an IDE to write, compile, and run a basic program
- Declare variables and assign values
- Understand variable naming conventions and best practices
- Data Types
- Choose the appropriate primitive data type for a given problem
- Understand the limitations of floating point precision
- Type Conversion
- Arithmetic Operators
- Understand integer arithmetic (i.e. truncation)
Wednesday
Expressions, Statements, and Logical Branching
- Understand the various comparison operators: <, <=, >, >=
- Use boolean logic !, ||, &&
- Write code using conditional statements:
- if statement (and else)
- Parse and comprehend complex code expressions and statements
- Understand blocks and local variable scope
- Use methods to implement exercises
- method parameters
- return a value from a method
- run a unit test
Thursday
Loops and Arrays
- Creating and using arrays
- indexes and elements
- declaring arrays with fixed sizes
- assigning and retrieving array element values
- use loops to iterate through the contents of an array
- Loops
- create for loops to avoid code duplication
- leverage increment & decrement shorthand assignment operators
Friday
Command-Line Programs
- Writing applications that use user input via stdin to do something practical
- Parsing user input from strings into another data type (e.g. int, double, bool, etc.)
-
Monday
Intro to Objects (Strings)
- Objects
- Reference vs. Value Types
- Objects vs. classes
- Stack vs. Heap
- Instantiation
- Invoking methods on objects
- Strings
- Immutability
- JAVA object equality
Tuesday
Collections Part 1 - Lists, Stacks, Queues
- Describe the purpose and use of Collections.
- Describe the differences between a List and an array and the different use-cases for them.
- Understand the common operations of a List and how to use them.
- Use the for-each loop to iterate through a collection.
Wednesday
Collections Part 2 - Maps and Dictionaries
- Identify when to use a Map/Dictionary and common operations.
- Identify when to use a Set/HashSet and how to use common operations.
Thursday
Classes and Encapsulation
- Define encapsulation, give a good example of it, how it is implemented, and describe why it is used
- Define "loosely coupled" and explain the characteristics of a loosely coupled system
- Define and use static methods and be able to describe what they are for
- Explain access modifiers and when you would use `private` versus `public`
- Explain why getters and setters are better than public members
- Explain what a method signature is in an OOP language
- Define and use overloading in an OOP language
Friday
Review and Pair Programming
-
Monday
Inheritance - Part 1
- Inheritance
- subclass vs. superclass
- Java: super
- .NET: base
- implementing inheritance
Tuesday
Polymorphism
- Polymorphism
- used with inheritance
- used with & implementing interfaces
Wednesday
Inheritance - Part 2
- Abstract classes
- Sealed / Final classes
- public, private, and protected
- using access modifiers for design and intent
Thursday
Unit Testing
- Software Development Lifecycle (SDLC)
- Automated tests vs. manual tests
- Unit, Integration, and End to End Tests
- 3 Parts of a Unit Test
-Arrange
-Act
-Assert
Friday
Review and Pair Programming
-
Monday
Exception Handling & File I/O - Part 1
- Exception Handling
- Compile-time vs. run-time errors
- try, catch, throw, finally
- creating exceptions
- flow of control
- File I/O
- Working with I/O namespace/package
- Data streams
- Handling file I/O exceptions
- JAVA: try-with-resources
Tuesday
File I/O - Part 2
- File & Directory classes to view metadata
- Writing text to a file
- Buffering
- Releasing resources
Wednesday
Review
Thursday + Friday
Module 1 Capstone Project
A command-line application using OOP principles
-
Monday
Intro to SQL (SELECT, FROM, WHERE)
- Databases
- Relational databases
- Tables, columns, and rows
- SQL Queries
- SELECT/FROM/WHERE
Tuesday
Aggregate Functions and GROUP BY
- ORDER BY
- Result Concatenation
- Aggregate Functions: AVG, SUM, MIN, MAX, COUNT
- GROUP BY
Wednesday
Join
- Subqueries
- Primary Keys and Foreign Keys
- Cardinality
- JOIN
Thursday
INSERT, UPDATE, DELETE
- Working with Constraints & Referential Integrity
- Using INSERT, UPDATE, and DELETE to modify data
- Transactions
- Atomic, Concurrent, Isolated, Durable
Friday
Module 1 Assessment
Review and Pair Programming
-
Monday
Database Design
- Database Definition Language (DDL)
- CREATE TABLE, ALTER TABLE, DROP TABLE
- Designing a Database
- Normalization: First Normal Form, Second Normal Form, Third Normal Form
Tuesday
DAO Pattern
- Creating a Layered Architecture: the DAO or DAL Pattern
- Connecting to databases via ADO.NET (C#) or JDBC (Java)
- Connection Strings
- Parameterized Queries
Wednesday
Data Security
- SQL Injection
- Hashing and Storing Passwords
- Encryption
Thursday
Integration Testing
- Unit Test vs. Integration Test
- Validating DAO/DAL works Correctly
- Transactions in Code
Friday
Review and Pair Programming
-
Monday
HTTP and Consuming APIs - Part 1
- How the Internet works
- IP addresses
- DNS
- Ports
- HTTP
- TLS
- The main components of HTTP:
- Methods
- Resources
- Headers
- Request Body
- Status codes
- Request/Response
- GET requests
- Making a GET request using Postman and inspecting the result
- Making a GET request with RestTemplate (Java) and RestSharp (C#)
Tuesday
Consuming APIs - Part 2
- Implementing Java/C# code that sends POST, PUT, and DELETE requests
- Handling errors in network communication
- Handling responses containing a 4xx status code
- Using Postman to make a PUT, POST, or DELETE request
Wednesday
Server-Side APIs - Part 1
- Describe the difference and responsibilities of backend code versus frontend code
- Describe the MVC pattern and why programmers use it
- Describe the purpose and scope of the Spring Boot / ASP.NET Web API framework
- Create a web application that accepts GET and POST requests and returns JSON
- Run a web application on a local development machine
Thursday
Server-Side APIs - Part 2
- Understand the high-level architectural elements of the REST architecture
- Identify resources in a RESTful API
- Describe the relationship between a "resource" and a URL
- Explain how HTTP methods are used to interact with RESTful resources
- Conform to RESTful conventions when using HTTP status codes
- Define CRUD and how it relates to HTTP methods and APIs
- Handle errors from backend code and alert the frontend that something has gone wrong
- Perform validation on client-supplied request data
- Implement a RESTful web service that provides full CRUD functionality
Friday
Review and Pair Programming
-
Monday
Authentication
Tuesday
Review
Wednesday-Friday
Capstone #2
-
Monday
Intro to HTML and CSS
- Understand the basics of HTML, HTML Document Structure, Tags & Attributes
- Understand the following HTML Tags: headers, p, em, strong, blockquote, lists, tables, links, images
- Utilize the different elements that go into building a form
- Describe what Semantic HTML is
- Demonstrate a basic understanding of what CSS is and how to create style declarations
- Understand how fonts work in the browser and the different properties available for styling them
- Understand how colors work and the different properties for working with them
Tuesday
CSS Selectors & Layouts
- Using selectors to apply CSS styles
- element
- id
- class
- universal
- attribute
- psuedo (hover, focus)
- descendant combinator
- Selector specificity and cascading
- The Box Model (padding, margin, border)
- Block, Inline, and Inline-block elements
- Normal flow
- CSS positioning styles:
- static
- fixed
- absolute
- relative
- CSS units:
- px
- %
- rem
Wednesday
CSS Grid & Responsive Design
- Laying out a HTML5 page using CSS Grid
- Defining grid containers using rows and columns
- Defining named grid template areas
- Assigning page elements to grid template areas
- Using media queries to define different dimensions for grid containers
- Responsive Design
- Mobile First
- Creating a page with multiple layouts depending on screen width
- Using developer tools in Chrome or Firefox to help with developing grid layouts
Thursday
CSS Flexbox
- Laying out elements using Flexbox
- Defining a Flexbox container using rows and columns
- Applying content alignment to flex items using justify-content and align-items
- Applying normal flow to flexbox items using flex-wrap
- Arranging items within a Flexbox container using order
- Sizing items within a Flexbox container using flex-basis, flex-grow, and flex-shrink
- Adding Flexbox layouts to existing Responsive CSS Grid Layouts
- When do you use Flexbox? When do you use Grid? When do you use them together?
Friday
Review and Pair Programming
-
Monday
Intro to JavaScript
- Variables & Data Types
- Logical Branching
- Objects & Arrays
Tuesday
JavaScript Functions
Functional programming with JavaScript
Array Methods
- forEach
- filter
- find
- map
Wednesday
DOM
- What is the DOM
- Querying the DOM
- Traversing the DOM
- Manipulating the DOM
Thursday
Event Handling
- Listening for Events
- Attaching Event Handlers
Friday
Review and Pair Programming
-
Monday
Intro to Vue
- What is Vue
- Component-based JavaScript
- Vue Tooling: VS Code, npm, and the Vue CLI
- Creating a new project via the Vue CLI
- Defining a new component in Vue
- Using v-model to perform two-way binding
- Encapsulation and how components achieve encapsulation in JavaScript
- Vue directives:
- v-for
- v-if
- v-show
- v-bind
Tuesday
Event Handling with Vue
- Implementing event handling using the v-on directive
- Using event modifiers, like propogation and default, in Vue
- Defining methods for a component using the methods: property of the Vue object
- Using component methods inside of event handlers
Wednesday
Vue Component Communication
- Identifying candidate components in a web page/application
- Single Responsibility Principle
- Implementing an SPA that uses components that work together
- Creating child components from an array in a parent component
- Passing data to child components with props
- What is Vuex?
- Accessing data stored in Vuex from multiple components
- Modifying data stored in Vuex using mutations
Thursday-Friday
Thanksgiving Break
-
Monday
Vue Router
- What is routing and why is it needed in Vue?
- Defining a new route
- Adding Vue Router to a new or existing project
- Router link and router view
- Using the $route object to access data from the route
- Using the $router object for programmatic navigation
- Defining dynamic routes
Tuesday
Employer Matchmaking
Wednesday
Calling Web Services (GET)
- Making an HTTP GET request to a RESTful web service using the Axios library
- Synchronous vs. Asynchronous code
- What promises are and when you use them
- Building service objects for interacting with a RESTful web service
- Using service objects in Vue
- Using the Vue lifecycle hook, created(), to call a web service to retrieve data when a new view is rendered
- Why use asynchronous coding techniques in JavaScript
Thursday
Calling Web Services (POST, PUT, DELETE)
- Using Axios to make PUT, POST, and DELETE requests
- Handling an error in network communication properly using the Axios library
- Handling a response containing a 4xx status code using the Axios library
- Cross-origin requests
Friday
Review and Capstone Kick-off
-
Groups of 4 create a full-stack application. This project imitates the professional world with a product manager/scrum master and Agile “sprints”.
More Resources
codecademy.com (I highly recommend)
full-stack engineer career path (Pro account required)
udemy.com