You are on page 1of 15

SYLLABUS | FULL-TIME

Software
Engineering
Become a Full Stack Software Engineer in just 15 weeks.
Table of Contents

Why Software Engineering? 01

Course Overview 02

Curriculum 03
Phase 1: Front End Development 04

Phase 2: Front End Web Applications 05

Phase 3: Back End Development 06

Phase 4: Back End Web APIs 08

Phase 5: Cumulative Project 10

Pace & Schedule 11

Why Flatiron School? 12

Contact Us 13

flatironschool.com
Why Software Engineering?
The demand for Software Engineers remains at an all-time high. In fact, The Bureau of
Labor & Statistics projections indicate a 25% national growth for Software Engineering
roles from 2021 to 2031, which is faster than the average for all occupations.

Flatiron School’s Software Engineering course takes a holistic approach towards learning,
teaching students fundamental principles and problem-solving techniques as well as the
latest technologies. Our course features hands-on, collaborative experiences, whether
that is through pair programming, code reviews using AI chatbots, or coding challenges.

Our Software Engineering graduates have raved about the structure, support, and
camaraderie throughout the course. They've also landed jobs at some amazing
companies – Walmart, Google, Meta, AirBnB, and Pinterest, to name a few.

Graduates leave with the foundations needed to tackle any relevant technology, making
them well-prepared for a variety of career paths. Here are a few of the most common:

POSSIBLE SOFTWARE ENGINEERING CAREER PATHS

SOFTWARE ENGINEER | Average salaries: $102,726 FULL STACK DEVELOPER | Average salaries: $104,803

Also called Software Developer, Software Engineers Also called Full Stack Engineer, Full Stack
are responsible for learning the codebase, working on Developers use both front end and back end
small bug fixes, and participating in paired programming languages to design, develop and
programming with mid-level to senior developers to maintain full-fledged and functioning platforms
level up their programming skills. (salary from with databases and servers.
ZipRecruiter, as of May 2023) (salary from ZipRecruiter, as of May 2023)

FRONT END DEVELOPER | Average salaries: $97,313 BACK END DEVELOPER | Average salaries: $103,394

Also called Front End Engineer, Front End Developers Also called Back End Engineer, they are
are responsible for developing new user-facing responsible for server-side web/mobile
features while building reusable code and optimizing application logic and integration of user-facing
page load times within web/mobile applications. features through APIs.
(salary from ZipRecruiter, as of May 2023) (salary from ZipRecruiter, as of May 2023)

Other titles include Prompt Engineer, Web Developer, and QA Analyst.

Includes graduates from all disciplines at Flatiron School, Designation Labs, or SecureSet Academy who were hired from 2012 - 2023 |1
Course Overview
Our mission is to teach you more than simply knowing how to code. That's
why our Software Engineering course is more extensive than the average
school, covering foundational concepts and problem-solving techniques,
emerging technologies, and both front end and back end development.

To grow as a Software Engineer, you must be agile and able to adapt, no


matter the challenge that you’re given. In our course, students will attend
lectures, work through lesson plans, and collaborate to complete group
projects to gain real-world hands-on experiences. In addition, students will
hone communication skills and become part of the tech community as they
build, share and refine their GitHub portfolios.

SOFTWARE ENGINEERING PREP


All students are required to complete Software Engineering Prep one week before the
start of class, which takes 40+ hours.

Students will have a basic understanding of HTML, CSS and JavaScript by completing
prep. During prep, students will get accustomed to the Canvas platform, set up their
computing environment and level set their knowledge of the basics of the
programming languages that will prepare them for day 1.

Environment Setup & The Command Line Interface


Whether students run MacOS or Windows, after acclimating to the Canvas platform,
they set up their environment in a step-by-step guide and get accustomed to the
Command Line Interface (CLI).

HTML & CSS


Students master the basic building blocks of how the web is rendered and understand
the language that makes the web beautiful. They also learn how to conceptualize and
build UIs for web apps by writing well-structured HTML and CSS to create efficient and
organized front ends.

GIT
Students begin exploring version control using git commands including forking and
branching, merging, rolling back commits, and submitting pull requests. Finally, you’ll
learn the basics of JavaScript, before diving into Phase 1.

flatironschool.com |2
PHASE 1

Front End Development


Students will learn how JavaScript works under the hood while gaining hands-on
experience with JavaScript programming, interacting with the DOM, and event listeners.
In addition, students will discover how AI models can help debug issues faster, as well as
how to leverage AI chatbots through prompt engineering to clarify misconceptions.

PHASE 2

Front End Web Applications


Students learn ReactJS, a component-based JavaScript framework, and have the
opportunity to pick up key industry skills by building a project that interacts with an API.
Students will also gain understanding of how AI tools can assist with code completion as
well as generate unit tests for components.

PHASE 3

Back End Development


Students gain a thorough understanding of back end development basics, while learning
a new language, Python. Next, students will get comfortable with object-oriented
programming and storing information in databases using A1 SQL Builder and object
relational mapping. Once students understand Python basics, they will learn to integrate
AI features into their apps.

PHASE 4

Back End Web APIs


Students learn Flask, a Python web framework, before using it to create their own JSON
API along with scalable front ends with React, creating slick, functional, and interactive
applications.

PHASE 5

Cumulative Project
After completing the four phases, each with their own group project, students work with
instructors to come up with solo project concepts and spend dedicated time building a
truly sophisticated application on their own. Students receive plenty of instructor
feedback along the way, while diving deep into various advanced technologies needed to
bring their concepts to life. Students have the opportunity to share or present their final
individual project.

flatironschool.com | 32
PHASE 1 Functions In JavaScript
Students learn how to write functions in JavaScript, along with more advanced topics,
Front End including arrow functions and function expressions, functions as first-class objects, and
callback functions.
Development
Variable Scope
Students will learn about variable scope and the scope chain. This is knowledge that is
crucial to understanding how to successfully debug their code when a variable contains an
unexpected value.

Working With Data Structures In JavaScript


In this module, students learn the relationship between how to build the two most
commonly used data structures in JavaScript: Arrays and Objects. They will also learn a
variety of methods to add, remove and replace elements in Arrays and Objects.

JavaScript And The DOM


Students learn what the Document Object Model (DOM) is and how to use query methods
to select and modify DOM nodes. Students will also learn how to view their changes in the
browser, and how to use Chrome DevTools and the console to test their code.

JavaScript Events
Students learn the different types of JavaScript events while exploring how
to set up event listeners to respond to user actions such as mouse clicks,
key presses, and submission of forms. They also learn how to set up callback functions
that will be executed when an event is triggered.

Communicating With The Server


Students learn how the request/response cycle works, and how to send fetch requests,
handle asynchronous code execution, and fetch data from APIs.

Execution Context In Javascript


Students learn about execution context, the difference between global
and function execution contexts, and how to leverage that knowledge
to ensure their code has access to the variables and functions it needs to execute
properly.

flatironschool.com |4
AI Assisted Debugging
Students will learn how to debug issues faster with AI models specifically trained on code
debugging, such as Phind.

Prompt Engineering
Learn to clarify misconceptions using AI chatbots. Discover examples of successful
correspondence with chatbots.

Project Assistance With AI


Students will learn how to generate project ideas or custom data for projects which may
not have publicly available APIs.

PHASE 2 Introduction To React


In this module, students learn the benefits of leveraging the ReactJS framework to build
Front applications. They will also learn how to set up and use Node Package Manager to add
functionality to a JavaScript project, and continue to develop their skills in running tests
End Web and interpreting test output.

Applications Components And Props


Students learn how to quickly and easily create React applications using React
components. They will learn how to write the JSX used to build the HTML on the page,
and how to pass information between components using props.

State And Events


In this module, students dive deeper into React and the event system. They learn how
to attach event listeners to JSX elements and pass a callback function to handle the
event. In addition, students learn more about the React state system and how to
differentiate situations where they would use state vs. props within a component.

Side Effects And Data Fetching


Students learn about side effects in React, and how to use the useEffect hook to make
network requests and get data. Students will understand use cases for fetch requests
prompted by user actions vs. automatically fetching data using the useEffect hook.

Client-Side Routing
Students learn how client-side routing works within React and how to use it to
mimic the navigation behavior of multi-page applications without sacrificing speed.

AI Assisted Auto Completion & Automated Testing


Learn how to leverage AI tools to enable code completion. Students will also learn how
AI tools can generate unit tests for components, which ultimately will give them an edge
in a job search.

flatironschool.com |5
PHASE 3 Python Fundamentals
Students begin learning the back end programming language, Python, building on
Back End the programming concepts they learned from JavaScript. Students will learn how
Python syntax differs from JavaScript and how to construct conditional statements
Development and loops in Python.

Python Fundamentals: Data Structures


Students build on their knowledge of Arrays and Objects in JavaScript to learn how
to work with the corresponding data structures in Python: lists and dictionaries.
They will be able to leverage their familiarity with the JavaScript methods used to
create and modify Arrays and Objects in building the same skills using Python.

Introduction To Object-Orientation In Python


Students learn the basics of Object-Oriented Python, including classes and
instances, local variables and instance variables, and assigning attributes and
properties to objects through use of the “self” keyword. Students will also learn
setter and getter methods to assign properties and retrieve their values.

Topics In Object-Orientation - Class Variables And Methods


In this module, students learn to use class methods, class variables, and class
constants to expand on the class’s functionality. They will learn best practices for
building classes that use class variables to keep track of data, and class methods to
show the data pertaining to the class.

flatironschool.com |6
Topics In Object-Orientation - Object Inheritance
In this module, students learn how to use inheritance and modules to refactor out
redundancies and write more efficient code. They will learn how to use inheritance
to write families of classes that have both shared and unique attributes and
behaviors. They will also learn how to use modules to bundle methods that can then
be used by any number of classes. Students will learn how they can use these
techniques to write code that is DRYer (Don’t Repeat Yourself), lighter, more
intuitive, and scalable.

Getting Started With SQL


During this module, students set up a SQLite database, create, update and delete
data from database tables and create advanced queries. They will learn how to
create tables that include various data types, use the SQL insert, delete and update
commands to modify tables, and use the select command along with SQL modifiers
and aggregate functions to construct sophisticated queries of the database.

Table Relations In SQL


Students learn how to construct a relational database using primary and foreign
keys. Students practice associating two tables together using a foreign key column,
retrieving specific sets of data from associated tables using join statements, and
creating one-to-many and many-to-many relationships.

Object Relational Mapping


Students learn about Object Relational Mapping which allows the use of an
object-oriented programming language such as Python to manage database data
and avoids the need to write SQL directly. This results in less repetitive, more
intuitive code.

AI Model Integration
Once students understand Python basics, they will learn to integrate AI features into
their apps. They will learn to summarize content, make inferences based on
user-provided content, or generate new content based on analysis.

Using SQLAlchemy
Students learn everything they need to know to use one of the most popular
object-relational mappers: SQLAlchemy. Students understand how they can use
SQLAlchemy to create clean, efficient code that is easier to read, write, and
maintain, with queries that are more intuitive and efficient.. Additionally, students
are introduced to Alembic, a migrations manager that allows them to automate
database editing tasks from the terminal.

SQLAlchemy Relationships
In the final module of Phase 3, students learn how they can use SQLAlchemy
methods to create relationships between the models in their application, as well as
how those relationships can help them create more sophisticated queries with
simple, clean code.

flatironschool.com |7
Using SQLAlchemy
Students learn everything they need to know to use one of the most popular
object-relational mappers: SQLAlchemy. Students understand how they can use
SQLAlchemy to create clean, efficient code that is easier to read, write, and
maintain, with queries that are more intuitive and efficient.. Additionally,
students are introduced to Alembic, a migrations manager that allows them to
automate database editing tasks from the terminal.

SQLAlchemy Relationships
In the final module of Phase 3, students learn how they can use SQLAlchemy
methods to create relationships between the models in their application, as well
as how those relationships can help them create more sophisticated queries
with simple, clean code.

PHASE 4 Python Flask Fundamentals


Students learn the fundamentals of Flask from building single-file applications
Back End to understanding the flow of data. Additionally, they begin to implement data
Web APIs processing into their Flask applications with Flask-SQLAlchemy and
Flask-Migrate.

flatironschool.com |8
CRUD with Flask
In the CRUD with Flask module, students learn to build out CRUD actions (Create,
Read, Update, Delete) in the back end using the 5 common RESTful routes and
their corresponding actions in Flask. They also learn how to properly format a
response with a JSON body and HTTP status codes.

Validations
Students learn the common methods for implementing validations on models
using SQLAlchemy to ensure that no bad data ends up in the database. During
this module, students write both basic validations using SQLAlchemy constraints
as well as custom validations. They also implement error handling by writing
code to send error messages in response to HTTP errors, pinpointing how to fix
the request.

Full Stack Development


Students build new Flask API backends for their first full stack applications.
Students get hands-on experience adding a React front end to their Flask API
and setting it up to make fetch requests to the Flask server in response to user
actions. Students will also learn about WebSocket, a protocol for maintaining
constant connection between a client and server.

Serialization
In the Serialization module, students learn how to use Active Model
Serializer to customize the JSON that is returned from the back end. By using
SQLAlchemy Association macros in combination with Serializer, students are able
to maintain very fine control over the JSON their application returns with a
minimum of code.

Authentication
Students learn the fundamentals of cookies, how to configure it for Flask in API
mode, and how to leverage cookies and sessions to log users into an
application. In addition, students build out a full authentication and
authorization flow using sessions and cookies in Flask, including login, keeping
users logged in, logout, and restricting access to secure information. Students
will also learn how to use external resources to handle user passwords safely
and securely.

Deploying
In this module, students learn the fundamentals of packaging and deploying
applications using WSGIs and online deployment platforms to deploy a full stack
Flask-React application.

flatironschool.com |9
PHASE 5 In Phase 5, the final phase of the course, students begin working on their
capstone project. The capstone is a solo-project that allows students to create
Cumulative an application of their choice leveraging the technologies that they have
Project learned throughout the course. Students work with instructors to come up with
project concepts and spend dedicated time to build truly sophisticated
applications on their own.

While building out the application, students will receive plenty of instructor
feedback and dive deeper into various advanced technologies to bring the
concept to life.

During Phase 5, students have access to bonus materials and are encouraged
to work on the provided algorithm practice challenges to prepare for live
coding assessments that are often part of technical interviews.

flatironschool.com | 10
Pace & Schedule
At Flatiron School, we know that how you choose to study is as integral to your
success as what you’re learning. Paired with our online learning platform,
Canvas, and individualized support, all students have access to a personalized
learning experience.

Learn online. But not alone.

The community at Flatiron School is unmatched - from study groups to peer


projects and Slack check-ins, our students often say their cohort supported
them through the program.

You’ll start the program with a cohort of students, all learning together in a
live lecture format.

FULL-TIME LIVE

Length 15 weeks

Time Commitment 60 hrs/week

Career Services Support Yes

1:1 with Instructors Yes

Live Lectures Yes

Assigned Cohort Yes

flatironschool.com | 11
Why Flatiron School?
Here at Flatiron School our ultimate goal is to prepare students to be successful in
any job market. That's why our curriculum is regularly reviewed by hiring
managers and incorporates the latest emerging technologies, such as how to
leverage AI chatbots as well as other AI and ML tools.

During class, we have a hands-on, community approach to learning, one that


includes lab work, creating a real-world portfolio, and 1-on-1 instructor access.

After graduation we provide all the ingredients for an effective job search,
including 180 days of 1-on-1 career coaching.

WHERE OUR GRADS HAVE BEEN HIRED

Includes graduates from all disciplines at Flatiron School, Designation Labs, or SecureSet Academy who were hired from 2012 - 2023

flatironschool.com | 12
Let’s stay in touch.
Education should be the best investment you make — and at Flatiron School, we’re committed to
helping you learn the skills change your future. Online and on our New York or Denver campuses,
we provide the skills, community, and immersive, outcomes-driven curriculum you need to
launch a career in Cybersecurity, Software Engineering, Data Science, or UX / UI Product Design.

Apply Today Attend an Event Chat with Admissions

Start your application Join us for a seminar or Have a question about our
for one of our immersive info session to see what program that we haven’t
bootcamps and change student life is like at answered? Our admissions
your life today. Flatiron School. team is here to help.

Apply Now See Events Schedule a Chat

This Syllabus includes summary descriptions and other information related to this Flatiron School program. For a detailed description, please consult the current
Flatiron School student catalog, available at https://www.flatironschool.com/regulatory-information, and the enrollment agreement you sign in connection with
your program.

You might also like