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

Garrett John Law

I’m a Los Angeles-based software engineer and musician.

https://garrettjohnlaw.com
Previous
Previous

I’ve been appointed Interim Director of Music at Holy Trinity Episcopal Church in Covina, CA

Next
Next

Tech Elevator Week 11: Only 3 Weeks Left…