# Full Stack Flex

# Graduation Requirements

Throughout the 26-week program, students will be evaluated on their progression and career readiness. Students will undergo at least 2 performance reviews throughout the program to ensure each student is progressing steadily throughout the course and to identify areas of strengths and weaknesses. In order to receive a certificate of completion, students must meet the following criteria by the end of their cohort.

  • Miss no more than 10 days of class – Students who miss more than 10 days (excused or unexcused) will not receive a certificate of completion, career support or be able to participate in student graduation. Students who miss more than 20% of the program or 10 consecutive days will be removed from the program.
  • Demonstrate an understanding of key concepts – Students must demonstrate their understanding of the key concepts covered throughout the program in their Capstone Project. Key concepts include Programming Fundamentals, Front End Development, Back End Development, Programming Best Practices, and Git.
  • Develop key assets needed for the job search – Students must develop and receive a "pass" for their resume and portfolio before completion of their cohort.
  • Students who accept a software development-related job offer prior to the end of their class will automatically meet all the graduation criteria and receive a certificate of completion.

26 week program

Tue/Thu 6:30pm - 9:30pm; Sat 10:00am - 2:00pm

TIP

Please note: while this a good guide for class, projects/topics/etc are subject to change with limited notice. We update our curriculum often both in response to alumni feedback and market trends.

# Week 1: Learning the Fundamentals of Programming

In your first week at DigitalCrafts, you will gain an understanding of the core programming skills using the JavaScript programming language.

In addition to learning the fundamentals, you will learn how to manage your project code by using a variety of tools, such as the Command Line, Git, and set up your own GitHub profile.

  • Introduction to the Command Line
  • Using Git and GitHub to manage your code
  • Programming Fundamentals with JavaScript

# Week 2: Solving Problems Using Code

You will work through a number of coding challenges by building solutions in JavaScript. Along the way, you will learn how and when to use data structures like dictionaries, objects, and classes.

By the end of the week, you will have plenty of experience reading, understanding, and debugging coding errors.

  • Storing and working with data
    • Dictionaries
    • objects
    • classes

# Week 3 - 4: Understanding the Foundations of Front-End

You will build your front-end web development skills starting with HTML and CSS. You will learn how to create web pages, format their contents, and finely control the layout. To do that, you will recreate several popular web page designs (such as medium.com's or google.com’s look and feel).

Then, you will learn techniques to make your layouts auto-adjust to the screen size of whatever device is used to view your web pages. Finally, you’ll learn to use Bootstrap, a popular and flexible styling framework.

  • HTML 101
  • CSS 101
  • Box Model
  • Specificity
  • Implementing a responsive design
  • Flexbox
  • Media Queries
  • Bootstrap UI framework
  • Grid

# Potential Projects

  • Making the Google search page
  • Implementing a blog layout

# Week 5 & 6: Handling User Input with JavaScript

Now that you can present information to your users, it is time for them to talk back! To provide this kind of interactivity on your web pages, you will begin mastering the basics of JavaScript - the language of the web. This week will be intense, but extremely rewarding!

  • JavaScript 101
  • ES5
  • Functions
  • Scoping and hoisting
  • Callbacks
  • DOM
  • Forms and validation

# Potential Projects

  • Countdown timer
  • Tic Tac Toe
  • Photo Gallery

# Week 7 & 8: Building Interactive UIs with jQuery

jQuery is the most widely used JavaScript library in the world, and for a good reason. You will learn how to use the power of jQuery to quickly develop highly interactive web pages. You will build more games this week, but using animations and transitions to provide visual feedback to your users.

There will be times you will need some, but not all, of jQuery's capabilities. You will learn how and when to use CSS for animation, as well as how to use Bootstrap's built-in visual feedback features.

  • CSS transitions and animations
  • jQuery
  • Ajax
  • Bootstrap.js
  • Promises
  • IIFEs
  • Event loop
  • Web APIs
  • Deploying to GitHub Pages

Potential Projects

  • Blackjack
  • Weather widget
  • Stock ticker

# Week 9 & 10: Agile Software Development & Group Project Week

  • Intro to SCRUM & Agile Development
  • Code reviews
  • Using git and GitHub to manage your team’s code

Project

  • Front-End Group Project (groups mandatory)

# Week 11 & 13: Introduction to Back-End Development

Up to now, you've only worked with half of the web - the half that works in the browser. To create web pages that allow for collaboration between users (multiplayer games, social media sites, etc.), you will need to write code that runs on the server. This week you will create a simple web server (yes, a web server!) using Node.js.

Just like JavaScript on the browser, there are a number of handy libraries that you can use. You will learn to install and manage those using the npm command that comes with Node.js.

One of these libraries will let you use WebSockets for building real-time applications. As an exercise, you'll build the backend and front-end of a chat application.

  • Node.js
  • npm
  • File IO
  • async and sync APIs
  • WebSockets
  • ES2015
    • Variables
    • Arrow functions
    • Destructuring
    • Modules
  • Next generations JavaScript
    • Babel

Potential Projects

  • Build a basic web server
  • Build a chat application

# Week 14 & 15: Databases, Express and Sequelize

At the heart of any blog, social media site, or collaborative web app is its database. Often, your data will have complex relationships ("a blog post has an author and one or more comments from a registered user"). Dealing with this data is straightforward, as long as you can speak the language. This week, you will learn how to "talk" to a database using SQL (Structured Query Language).

  • PostgreSQL
  • Create statements
  • Insert statements
  • Select statements
  • Where statements
  • Foreign keys and joins
  • Group by and aggregate statements

As your backend code gets more substantial and more complex, you will need ways to store data, organize your code, and develop quickly. This week you'll be using the Express framework, a minimalist back-end framework that will help you write backend code. You'll learn how to take advantage of Express’ routing, templating, and session management.

  • Sequelize
  • Express
  • ES2017 async functions
  • JSON Web Tokens
  • Bcrypt
  • Templating
  • Sessions
  • Cookies

Potential Projects

  • Build your own wiki
  • Intelligent flash card app

# Week 16 & 17: Full Stack Group Project & Career Prep

Using the knowledge you’ve gained over the past few weeks, you will work individually or in groups to build a full-stack web application with a functioning front and back end.

Project

  • Full Stack Group Project (groups optional but encouraged)

Career Prep Career Prep till take the end of 16 and beginning of 17

  • Develop your Resume, Portfolio and submit for review
  • Mock Interview Training

# Week 18: Career Prep & Managing Application State with Redux

You will learn how to work with complex data in your applications using the industry-standard Redux library. Redux manages one-way data flow and helps wrangle user interactions that cause complex changes to your data.

  • Redux Intro
  • The state tree
  • Redux DevTools
  • Reducers
  • Actions

# Week 19: Introduction to React

React is a small but flexible front-end library that helps you create UIs. It is especially well-suited for UIs that need to display data that updates frequently. This week, you will learn the basics of building React applications, relying primarily on your understanding of JavaScript fundamentals.

You will start with simple functions that draw data to the page and build up your React knowledge. By the end of the week, you will be creating and (re)using highly-performant React components.

  • Components
  • Stateless functional components
  • JSX
  • state and props
  • Lifecycle API
  • Virtual DOM
  • Create-react-app
  • React Dev Tools

Potential Projects

  • Secret message encoder
  • Shopping list
  • World Clock

# Week 20: The React Ecosystem

React has made a lot of friends in its first few years of life. To write fluent React code that takes advantage of battle-tested libraries, you will want to be friends with React's friends.

This week involves learning the basics of a lot of different tools that help you write high-quality React code.

  • Create-react-app
  • React Router
  • Axios
  • CSS-Modules
  • Higher-order components
  • Functional programming patterns

Potential Projects

  • Wikipedia
  • Twitter

# Week 21: Building an Ecommerce site with React and Redux

This week, you will put your React and Redux skills to use on a fairly complex web application. In addition, you will integrate with the Stripe payment API. (Don't worry, you won't go broke building and debugging your app - you'll only work with a testing server.)

  • Stripe API
  • Authentication

Potential Project

  • Ecommerce site

# Week 22 & 23: React Full Stack Project

Projects

  • React Full Stack Project + React and Redux (group optional)

# Week 24: Deploying Apps to AWS

Take your projects and deploy them to the cloud! You will learn the basics of Amazon Web Services and the steps you need to take in order to deploy your work to the AWS cloud.

# Weeks 25 & 26: Capstone Project Weeks

  • Capstone Project (group optional)
  • Demo Day & Graduation