Skip to content

Latest commit

Β 

History

History
725 lines (663 loc) Β· 28 KB

CurriculumPlan.md

File metadata and controls

725 lines (663 loc) Β· 28 KB

Curriculum Plan

Module 0 To Be Moved

Module 1

Week 1

  • Intro to Programming
    • Understand what makes something a computer
    • Appreciate the importance of giving instructions
    • Write a simple program
  • Data Types and Variables
    • Recognize each of the main c# datatypes.
    • Speak to a few common methods for each data type.
    • Practice researching built-in c# methods.
  • Conditional Logic
    • explain the flow of execution through code
    • use if/else statements to control execution
  • PD: Note-Taking for Technical Content
    • Identify strategies for note-taking for technical content
    • Implement note-taking strategies for upcoming lessons

Week 2

  • Collections
    • Define and use arrays and lists
    • Identify key differences between arrays and lists
    • Define and use a dictionary
    • Iterate through collections with foreach and for
  • Looping and Iteration
    • Identify and implement code blocks.
    • Use while, and for to repeat code blocks.
    • Recognize potential infinite loops.
  • Methods
    • Define the terms Method, Argument, Return Value, and Object.
    • Explain why we use methods
    • Define methods in c#
    • Understand how abstraction helps us program
  • PD: Asking Technical Questions That Lead to Answers
    • Use effective keywords in a Google search to find answers faster
    • Ask technical questions that are both clear and concise

Week 3

  • Classes
    • Describe the difference between a class and an instance of that class
    • Practice building classes with state and behavior
    • Identify some best-practices for defining state and behavior
  • Object Oriented Programming (OOP)
    • Define OOP
    • Discuss the benefits of OOP
    • Identify different syntaxes for object instantiation
  • Class Interaction
    • Implement appropriate class file structure
    • Gain familiarity with passing around 'smart' objects
  • PD: Productivity + Time MGMT
    • Identify strategies for improving productivity in a fast-paced, learning environment
    • Implement productivity strategies and approaches for the upcoming week
    • Review your current approach to time management and calendaring
    • Implement time management strategies for the upcoming week

Week 4

  • Intro to IDE
    • Define and start using an IDE
    • Identify the benefits of using an IDE
  • Debugging
    • Understand what a bug is
    • Practice Debugging with Breakpoints
  • Unit Testing, Part 1
    • Define Automated Testing.
    • Understand why we use tests.
    • Implement unit tests for a single class.

Week 5

  • Unit Testing, Part 2
    • Define the stages of a test
    • Recognize difference in testing command and query methods
  • Scope
    • Identify how scope affects where variables can be accessed
    • Have a reference to look at when scope errors show up
    • Understand the difference between the public and private access modifiers
    • Start thinking about when to use public vs private
  • Refactoring
    • Define 'Refactoring' in programming terms.
    • Define and implement the Single Responsibility Principle
  • PD: Using Technical Terminology
    • Practice using technical terminology to describe code.
    • Practice presenting technical topics in a group setting.

Project

  • Message Logger
    • Demonstrate:

      • Version Control, including branches and pull requests.
      • Understanding of database table relationships.
      • Database CRUD with an ORM.
    • Explore:

      • Dive into a new (not written by you) code base!
      • Using TDD to add additional features! (For any new feature that you create, try writing the tests first, and then creating the code that makes those tests pass!)

Module 2

Week 1

  • Version Control and Solo Git
    • Define Version Control and its benefit
    • Build a mental model of branching workflow
    • Practice committing and branching on a solo repository
  • Intro to Databases
    • Describe a database and its uses in various applications
    • Define relational data
    • Create a Database with Postgresql and PgAdmin
  • SQL CRUD
    • Define CRUD
    • Use SQL to SELECT, INSERT, REMOVE and UPDATE records
    • Use basic WHERE clause to filter records
  • PD: The Graceful Exit
    • Strategies for responding to questions you can't answer.
    • Identify personal qualities you want to highlight.

Week 2

  • Test Driven Development
    • Describe the benefits of TDD
    • Practice a TDD workflow
    • Define the difference between Unit and Integration tests
  • Git for Pairs
    • Outline a workflow for collaborating on a single repository
    • Identify and resolve merge conflicts
  • Data Relationships
    • Solidify understanding of Primary Keys and Foreign Keys
    • Visualize One-to-One, One-to-Many, and Many-to-Many relationships
    • Implement a Many-to-Many relationship using a join table
    • Practice describing different relationships
  • PD: Revisiting Productive Struggle

Week 3

  • SQL Aggregates
    • Develop a visualization for grouping and aggregating data
    • Use GROUP BY, COUNT, SUM, and AVERAGE
  • SQL Joins
    • Visualize and practice SQL join queries
    • Use WHERE and JOIN together
    • Understand the difference between an inner join and a left join
  • LINQ
    • Understand why we use LINQ
    • Practice basic LINQ methods
    • Recognize LINQ Query Syntax
  • PD: TBD

Week 4

  • Intro to ORM
    • Define ORM, Entity Framework, and Framework
    • Describe the benefits of working with objects
    • Use Entity Framework in a Console Application to create a database
    • Create a one-to-many relationship using Entity Framework
  • CRUD with ORM
  • PD: TBD

Week 5

  • Database Migrations
    • Explore business decisions that drive database changes
    • Practice making database changes to add and remove columns
    • Learn how to create seed data
  • Many to Many Using an ORM
    • Understand why frameworks have versions
    • Reinforce how to structure many-to-many database relationships
    • Implement a many-to-many relationship using Entity Framework
  • PD: SQL Workplace Simulation
    • Practice professional Slack communication
    • Apply SQL skills to a more real-world scenario
    • Practice giving and receiving feedback

Project

  • Message Logger
    • Demonstrate:
      • Version Control, including branches and pull requests.
      • Understanding of database table relationships.
      • Database CRUD with an ORM.
    • Explore:
      • Dive into a new (not written by you) code base!
      • Using TDD to add additional features! (For any new feature that you create, try writing the tests first, and then creating the code that makes those tests pass!)

Module 3

Mod Overview All things MVC.
Lesson Project MvcMovie
Lab Project RecordCollection

Week 1

  • HTTP Request/Response Cycle
    • Develop a diagram of how the web works
    • Identify the key responsiblities of Backend and Frontend development
  • HTML
    • Define HTML and its purpose
    • Identify and use attributes for appropriate elements
    • Understand the importance of semantic HTML
  • CSS
    • Define CSS and its purpose
    • Practice Debugging with Chrome Dev Tools
    • Demonstrate an understanding of the box model

Week 2

  • Intro to MVC
    • Identify the elements of the MVC design pattern
    • Describe the single responsibility of each of the Model, View, and Controller
    • Describe how data is passed through the MVC pattern
  • REST
    • Define REST
    • Identify RESTful and non-RESTful routes
    • Create a show page for a single resource (using a restful route)
  • Feature Testing
    • Understand why feature testing is important
    • Make connections between a browser and an in-project client
    • Practice testing basic user interactions with xUnit.

Week 3

  • Creating and Reading Single Resources
    • Diagram the Request/Response cycle with a form submission
    • Use a form to create single resources
    • Create Tests for #New and #Create actions.
  • Creating and Reading Related Resources
    • Use a form to create a one-to-many relationship
    • Use a form to create a many-to-many relationship
    • Create Show Page for a Resource with related data

Week 4

  • Query String Parameters
    • Discover real-world examples of query string parameters in action
    • Understand how data is dynamically passed using query string parameters
    • Use query string parameters to filter data on an Index page
  • Updating Resources
    • Use a form to update single resources
    • Use a form to update a one-to-many relationship
  • Destroying Resources
    • Describe some common pitfalls when destroying resources
    • Practice destruction of single and related resources

Module 4

Mod 4

  • Big theme: we are building BE APIs
    • ideally, we would have a nice JS frontend
    • MVP, we will use postman to interact with our APIs

Intermission

  • Javascript
    • khan academy

Week 1

  • JavaScript (Likely 2 lessons, with intermission work, maybe 1?)
    • Understand why it is important to be familiar with JavaScript
    • Available DataTypes
    • How to Build a Function
    • Accessing DOM elements and events
  • Reviewing Concepts
    • MVC Practice
    • Review SQL
    • Review OOP/C# fundamentals

Week 2

  • Intro to APIs
    • Understand how an API works at a conceptual level
    • Expand our understanding of what a 'client' could be
    • Create an in-app client to manipulate HTTP responses
    • Practice requests to an existing - using Postman
  • Building an API
    • Review HTTP Request/Response Structure
    • Use TDD to Implement CRUD endpoints through an API
    • Define and identify valid JSON data structures

Week 3

  • CHECKPOINT - a mini individual project. Can you build an API?
  • Maintaining State
    • Identify the limitations of Stateless HTTP
    • Introduce the concept of Sessions & Cookies
    • Implement a simple Cookie

Week 4

  • Security Concerns
    • Common pitfalls (what would happen if...)
    • General strategies for security
    • Understanding the inherent risks of the internet (we can't save every situation)
  • ?Advanced Data Manipulations? On the scope and sqnce doc, the learning goal includes Advanced SQL

Independent Learning

  • Inheritance
  • Interfaces
  • Dependency Injection

Module 5

Better MVC, Auth/Auth, Calling 3rd Party APIs

  • Lab ideas
    • refactor a portion of the Mod3 project

Week 1

  • Mods 1-4 Review
    • Includes SQL Review
  • Error Handling & Data Validations - Let's try to break our apps, and then fix them.
    • Identify the differences between Error Handling, and program crashing
    • Throw situation-specific errors
      • Input level-validation
      • 404 and other error codes (graceful breaking)
    • Implement try/catch blocks
  • Logging
  • PD - Talking While Coding in Interviews
    • start to prepare for talking through process while you are doing a thing.
    • stop being silent while in conversation - entertain your interviewer.

Week 2

  • SOLID (Refactoring Patterns)
    • Reinforce our understanding of SRP
    • Introduce OLID Principles
  • Writing Good Documentation
    • Understand the reasons for good documentation
    • Identify what to include in your documentation
  • MVC Project
    • Refactor Mod4 project
    • Work on someone else's project
    • Responding to tickets, working on a team
  • PD - Resumes

Week 3 Auth/Auth

  • Finish MVC Project
  • Authentication
  • Authorization
  • PD - Github 'Profile'

Week 4 Calling APIs from .NET (more api, better api)

  • Calling 3rd party APIs in .NET
    • Implement Secure Environment Variables
  • API Documentation
    • swagger ?
  • BigO and Process Optimization (Time/space trade-offs) We want this lesson in Mod5, we still need to decide exactly what goes into it.
    • nested for-loops is bad
    • Understand the impact of poor optimization
    • Introduce the problem of over-iteration and optimization
    • Gain a familiarity with Big0 terminology (I've heard of this thing, but may not be an expert)
  • PD - Cover Letters

Weeks 5 & 6 Project

  • Call third-party API to build new feature
  • PD - LinkedIn Activities

Possible Other Topics

  • Interview Lifecycle
    • Identify the varying steps of an interview
    • Common Pitfalls in Interviewing
    • The graceful exit
  • Interview Coaching; make students understand:
    • that what they have been doing working in existing code bases sets them apart from the 'rails-new' crowd
    • Focused work on PD (teamwork, communication, feedback)

Extension Topics (maybe mod6)

  • Customizing JSON Responses
    • Define and implement a Serializer
    • Expand our understanding of MVC responsibilities
    • Describe how a Serializer can support OOP Principles
  • Caching
    • Define Caching and why it is useful
    • Implement caching
  • Background Workers
    • Identify opportunities to use background workers
    • Implement a background worker
  • Logging
    • help yourself debug
  • Deployment
    • know that this is a thing
    • super simple deploy (maybe gh-pages)
  • Async as a concept
  • NoSQL databases
    • pro/cons of relational v non-relational data
  • .NET scaffolding & syntactic sugar
    • discussion
    • pro/con of using scaffolds
    • tag helpers (asp-action, display-for, etc...)
    • this can be prep for take-home challenges where they will see more .NET 'magic'

Module 6 To Be Determined

Archive

Mod 0

Day 1

  • Intro and Welcome to Turing
  • Computer Tools check
    • double check bookmarks
    • how to use loom, trello, replit
  • Communication via Slack NEED RESOURCE
    • At some point, want something that has them practice giving instructions. COULD start their DMs to all instructors with that
  • Typing with Code Characters typing.io

Day 2

Day 3

Day 4

  • Prep for Presentations NEED RESOURCE
  • Presentations

Mod 1

Week 1

Week 2

Week 3

Week 4

Week 5

Week 6

PD: πŸ’Ό Peer Feedback

Mod 2

Lab Project Goals:
Create a Database for a Library Application
Use EF to create a connection to the DB
Use EF to create and manipulate DB records
Use TDD to create classes
Test DB connections and records

Week 1

Week 2

  • ➑️Preparation: TDD
  • πŸŽ’Lesson: Test Driven Development
    • Describe the benefits of TDD
    • Practice a TDD workflow
  • πŸ’‘Lab/Exercise
    • Lab Project: use TDD to create classes for library records
  • πŸŽ’Lesson: Git for Pairs
    • Outline a workflow for collaborating on a single repository
    • Identify and resolve merge conflicts
  • πŸ’‘Lab/Exercise
    • Add collaborator to GitHub repository
    • Create and checkout branches in Git
    • Practice basic Git workflow (add, commit, push, pull)
    • Create, review, and merge Pull Requests

Week 3

  • ➑️Preparation: Data Relationships
  • πŸŽ’Lesson: Data Relationships (One to One, One to Many, Many to Many)
    • Solidify understanding of Primary Keys and Foreign Keys
    • Visualize One-to-One, One-to-Many, and Many-to-Many relationships
    • Implement a Many-to-Many relationship using a join table
    • Practice describing different relationships
  • πŸ’‘ Lab/Exercise
    • Lab Project: Add an Author Table to the Library Db (many-to-many)
  • Lesson: SQL Aggregates
    • Develop a visualization for grouping and aggregating data
    • Use GROUP BY, COUNT, SUM, and AVERAGE
    • Research additional aggregate functions
      Lab Project: Use SQL to query some Library Statistics
  • Lesson: SQL JOINS
    • Use JOIN to query related records
    • Use WHERE to filter joined queries
      Lab Project: User SQL to select related records
  • PD POTENTIAL: Practice sending and responding to requests for other teams (as a dev you won't always be coding, you will be asked for datapoints from other teams.)

Week 4

  • ➑️Preparation: LINQ
  • πŸŽ’Lesson: LINQ
  • πŸ’‘Lab/Exercise: LINQ
  • ➑️Preparation: Intro to ORM
  • πŸŽ’Lesson: Intro to ORM
    • Define ORM and Framework
    • Describe the benefits of working with Objects
    • Set up Entity Framework in a Console Application
    • Create a one-to-many relationship using an ORM
  • πŸ’‘ Lab/Exercise: Create one-to-many book and patrons tables using EF
  • Lesson: CRUD with ORM
    • Deepen understanding of test setup by creating a test database
    • Use TDD to implement CRUD functionality in a console application
    • Use EF and LINQ to query database records Lab Project: Use TDD and EF to create library records

Week 5

Mod 3

Week 1

  • HTTP Request/Response Cycle
    • Develop a diagram of how the web works
    • Identify the key responsiblities of Backend and Frontend development
  • HTML
    • Define HTML and its purpose
    • Identify and use attributes for appropriate elements
    • Understand the importance of semantic HTML
  • CSS
    • Define CSS and its purpose
    • Practice Debugging with Chrome Dev Tools
    • Demonstrate an understanding of the box model

Week 2

  • Interfaces (we need to learn this so that students can understand some of the setup for a .NET MVC project)
    • Identify objects that have shared structure/behavior
    • Implement an interface structure
    • Practice identifying interfaces in existing code
  • Intro to MVC
    • Identify the elements of the MVC design pattern
    • Describe the single responsibility of each of the Model, View, and Controller
    • Describe how data is passed through the MVC pattern
  • Feature Testing
    • Understand why feature testing is important
    • Make connections between a browser and an in-project client
    • Practice testing basic user interactions with xUnit and Selenium.

Week 3

  • REST
    • Define REST
    • Identify RESTful and non-RESTful routes
    • Explore the pros and cons of REST
  • Creating and Reading Single Resources
    • Diagram the Request/Response cycle with a form submission
    • Use a form to create single resources
    • Create Index and Show pages for a single resource
  • Creating and Reading Related Resources
    • Use a form to create a one-to-many relationship
    • Create Show Page for a Resource with related data

Week 4

  • Dynamic Routing
    • Understand how data is dynamically passed using Routes
    • Use dynamic routing to filter data on a Show and Index page
  • Updating Resources
    • Use a form to update single resources
    • Use a form to create a one-to-many relationship
  • Destroying Resources
    • Describe some common pitfalls when destroying resources
    • Practice destruction of single and related resources

Mod 4

  • Big theme: we are building BE APIs
    • ideally, we would have a nice JS frontend
    • MVP, we will use postman to interact with our APIs

Intermission

  • Javascript
    • khan academy

Week 1

  • JavaScript (Likely 2 lessons, with intermission work, maybe 1?)
    • Understand why it is important to be familiar with JavaScript
    • Available DataTypes
    • How to Build a Function
    • Accessing DOM elements and events
  • Reviewing Concepts
    • MVC Practice
    • Review SQL
    • Review OOP/C# fundamentals

Week 2

  • Intro to APIs
    • Understand how an API works at a conceptual level
    • Expand our understanding of what a 'client' could be
    • Practice requests to an existing - using Postman
  • Building an API
    • Review HTTP Request/Response Structure
    • Use TDD to Implement CRUD endpoints through an API
    • Define and identify valid JSON data structures

Week 3

  • CHECKPOINT - a mini individual project. Can you build an API?
  • Maintaining State
    • Identify the limitations of Stateless HTTP
    • Introduce the concept of Sessions & Cookies
    • Implement a simple Cookie

Week 4

Independent Learning

  • Inheritance
  • Interfaces
  • Dependency Injection

Mod 5

For zoe's spirit: go back to MVC and do it well

  • try/catch
  • auth
  • agile/project board

Week1

  • Customizing JSON Responses
    • Define and implement a Serializer
    • Expand our understanding of MVC responsibilities
    • Describe how a Serializer can support OOP Principles
  • Data Validations
    • Identify the differences between Error Handling, and program crashing
    • Throw situation-specific errors
    • Implement try/catch blocks
  • SOLID (Refactoring Patterns)
    • Reinforce our understanding of SRP
    • Introduce OLID Principles

Week2

  • Working with 3rd party APIs
    • Implement Secure Environment Variables
  • Writing Good Documentation
    • Understand the reasons for good documentation
    • Identify what to include in your documentation
  • Interview Lifecycle
    • Identify the varying steps of an interview
    • Common Pitfalls in Interviewing
    • The graceful exit

Week3

  • Caching
    • Define Caching and why it is useful
    • Implement caching
  • Background Workers
    • Identify opportunities to use background workers
    • Implement a background worker
  • BigO and Process Optimization
    • Understand the impact of poor optimization
    • Introduce the problem of over-iteration and optimization
    • Gain a familiarity with Big0 terminology (I've heard of this thing, but may not be an expert)

Mod 6