We have updated the content of our program. To access the current Software Engineering curriculum visit curriculum.turing.edu.
Module 2 Learning Goals
Academic success in Module 2 means that students demonstrate proficiency and comfort with the concepts below.
The expected mastery level can be understood with the following scale:
- Mastery: student is able to explain and implement the concept independently or with light reference
- Functional: student recognizes when to use the concept and can implement it with the support of documentation and/or a collaborator
- Familiarity: student can recognize and describe the concept when needed/appropriate, but is not able to implement the technology/technique
Mastery
Rails Application Development
- Implement CRUD functionality for a resource using forms (form_tag or form_with), buttons, and links
- Implement CRUD functionality for nested resources
- Use MVC to organize code effectively, limiting the amount of logic included in views and controllers
- Create routes for
- standalone resources
- nested resources
- non-ReSTful actions
- namespaced routes
- Interpret the output of
rails routes
to get information about existing routes - Use the Rails console to interact with a development database
- Describe use cases for a model that inherits from ApplicationRecord vs. a PORO
- Template a view in Rails using
erb
- Use path helpers
ActiveRecord
- Create class and instance methods on a Rails Model to perform ActiveRecord queries
- Create instance methods on a Rails model that use ActiveRecord associations
- Use built-in ActiveRecord methods to:
- create queries that calculate, select, filter, and order data from a single table
- create, read, update, and destroy records in a database
- create records with relationships to other records in a database
- join multiple tables of data
- make calculations and build collections of data grouped by one or more attributes from multiple tables
Databases
- Describe Database Relationships, including the following terms:
- Primary Key
- Foreign Key
- One to Many
- Many to Many
- Join Table
- Write migrations to create tables and relationships between tables
Testing & Debugging
- Write feature tests in RSpec that:
- Use Capybara to mimic the behavior of users
- Use CSS selectors to target specific elements of a page
- Test for Sad Paths
- Write model tests in RSpec that:
- Use Shouldamatchers to test relationships and validations
- fully test custom-built model methods including edge cases
- Use Pry or Byebug in Rails files to get more information about an error
- Use
save_and_open_page
and Chrome Developer Tools to debug HTML
Web Applications
- Describe and implement ReSTful routing
- Identify the different components of URLs (protocol, domain, path, query params)
- Deploy an application to Heroku
Project Management
- Use GitHub Projects to create and track User Stories
Functional
Web Applications
- Describe the HTTP request/response cycle
- Describe the different parts of HTTP requests and responses
Rails Application Development
- Implement partials to break a view into reusable components
- Use flash messages
- Use Inheritance to share behavior across classes
Databases
- Write raw SQL queries
- Design and diagram a Database Schema
- Describe ORMs and their advantages and use cases
- Write migrations to alter existing database tables
Testing & Debugging
- Describe the difference between unit and integration testing.
Styling
- Create basic Web Pages using the following HTML tags
<h1>
,<h2>
, etc.<p>
<body>
<a>
and thehref
attribute<img>
and thesrc
attribute<div>
<section>
<ul>
,<ol>
, and<li>
<form>
<input>
- Select and style HTML elements using their
class
orid
attribute
Familiar
Web Applications
- Describe how DNS works
Databases
- Describe database normalization
Styling
- Describe modern CSS grid systems