Module 0
To Be MovedModule 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
- Collections
- Define and use arrays and lists
- Identify key differences between arrays and lists
- Define and use a dictionary
- Iterate through collections with
foreach
andfor
- Looping and Iteration
- Identify and implement code blocks.
- Use
while
, andfor
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
- 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
- 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.
- 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.
- 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
- 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.
- 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
- 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
- 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
- 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
- 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!)
- Demonstrate:
Module 3
Mod Overview All things MVC.
Lesson Project MvcMovie
Lab Project RecordCollection
- 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
- 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.
- 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
- 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
- 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
- Javascript
- khan academy
- 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
- 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
- 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
- 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
- Inheritance
- Interfaces
- Dependency Injection
Module 5
- Lab ideas
- refactor a portion of the Mod3 project
- 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.
- 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
- Finish MVC Project
- Authentication
- Authorization
- PD - Github 'Profile'
- 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
- Call third-party API to build new feature
- PD - LinkedIn Activities
- 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)
- 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 DeterminedArchive
- Computer Setup Richard's awesome setup
- 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
- Google Productivity
- Calendaring
- [gmail] NEED RESOURCE
- Observations and Decision Making in Programming
- Google Office
- [Drive] NEED RESOURCE
- [Docs] NEED RESOURCE
- [Slides] NEED RESOURCE
- Keeping Track of Information in Programming
- Prep for Presentations NEED RESOURCE
- Presentations
- πIntro to Programming (How Computers Work)
- π‘β¬οΈ Intro to Labs
- πDatatypes & Variables
- π‘β¬οΈ Lab/Exercise
- πConditional Logic
- π‘β¬οΈ Lab/Exercise
- π§ͺWeekly Assessment
- πTopic Review
- πLooping
- π‘β¬οΈ Lab/Exercise
- πCollections
- π‘β¬οΈ Lab/Exercise
- πMethods
- π‘β¬οΈ Lab/Exercise
- π§ͺWeekly Assessment
- πTopic Review
- πClasses
- π‘β¬οΈ Lab/Exercise
- πOOP
- π‘β¬οΈ Lab/Exercise
- πClass/Object Interaction
- π‘β¬οΈ Lab/Exercise
- π§ͺWeekly Assessment
- πTopic Review
- πIntro to IDEs
- π‘β¬οΈ Lab/Exercise
- πDebugging
- π‘β¬οΈ Lab/Exercise
- πUnit Tests I
- π‘β¬οΈ Lab/Exercise
- π§ͺWeekly Assessment
- πTopic Review
- πRefactoring
- π‘β¬οΈ Lab/Exercise
- πUnit Tests II
- π‘β¬οΈ Lab/Exercise
- πScope and Access Modifiers
- π§ͺWeekly Assessment
- πTopic Review
PD: πΌ Peer Feedback
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
- πVersion Control and Solo Git/GitHub
- Describe the benefits of Version Control
- Create a repository
- Use branch workflow
- π‘Lab/Exercise
- β‘οΈPreparation: Intro to Databases
- πLesson: Intro to Databases
- Describe a database its uses in various applications
- Define relational data and data normalization
- Create a Database with Postgresql and PgAdmin
- π‘Lab/Exercise * Lab Project: Create Database for Library (not connected)
- β‘οΈPreparation: SQL CRUD
- πLesson: SQL CRUD
- Use SQL to SELECT, INSERT, REMOVE and UPDATE records
- Use basic WHERE clause to filter records
- Lab Project: Use SQL to insert and query library records in the DB
- PD Idea: Get on linked in - intro just to start connecting as you meet people.
- β‘οΈ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
- β‘οΈ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.)
- β‘οΈ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
- β‘οΈPreparation: Database Migrations
- πLesson: Database Migrations
- Explore business decisions that drive database changes
- Practice making database changes to add and remove columns
- Learn how to create seed data
- π‘Lab/Exercise: use a migration to add a table and column to the database
- β‘οΈPreparation: Many-to-Many using an ORM
- πLesson: 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
- π‘Lab/Exercise: Create many-to-many relationship between books and authors using an ORM.
- 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
- 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.
- 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
- 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
- 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
- Javascript
- khan academy
- 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
- 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
- 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
- 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)
- https://learn.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-6.0&tabs=visual-studio#prevent-over-posting-1
- ?Advanced Data Manipulations? On the scope and sqnce doc, the learning goal includes Advanced SQL
- Inheritance
- Interfaces
- Dependency Injection
For zoe's spirit: go back to MVC and do it well
- try/catch
- auth
- agile/project board
- 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
- 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
- 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)