├── weekly-learning-goals
├── README.md
├── week-04.md
├── week-14.md
├── week-20.md
├── week-05.md
├── week-03.md
├── week-08.md
├── week-17.md
├── week-12.md
├── week-11.md
├── week-06.md
├── week-19.md
├── week-09.md
├── week-02.md
├── week-16.md
├── week-10.md
├── week-15.md
└── week-01.md
├── README.md
├── classroom
├── rule-of-three.md
├── hw-learning-goal-label-key.md
├── README.md
└── syllabus.md
├── cs-fundamentals-classroom.md
├── cs-fundamentals-internships.md
└── cs-fundamentals-graduate-internships.md
/weekly-learning-goals/README.md:
--------------------------------------------------------------------------------
1 | # Weekly Learning Goals
2 |
3 | This repository contains our weekly learning goals.
4 |
--------------------------------------------------------------------------------
/weekly-learning-goals/week-04.md:
--------------------------------------------------------------------------------
1 | # Week 4: Intermediate Ruby Continued
2 | ## Learning Goals
3 |
4 | This week you should be able to:
5 |
6 | - Discuss and apply the Single Responsibility Principle
7 | - Work with and modify a moderate body of pre-written code
8 | - Independently write tests
9 | - Practice pair-programming and TDD
10 | - Differentiate between references and values
11 |
--------------------------------------------------------------------------------
/weekly-learning-goals/week-14.md:
--------------------------------------------------------------------------------
1 | # Week 14: Rail Creating an API
2 |
3 | 1. Use Rails to create your own API
4 | 1. Identify similarities and differences between web apps and API apps
5 | 1. Use error handling to ensure appropriate behavior in API code
6 | 1. Use an external test suite to ensure an API conforms to a specification
7 | 1. Use TravisCI to enable a continuous integration workflow
8 |
--------------------------------------------------------------------------------
/weekly-learning-goals/week-20.md:
--------------------------------------------------------------------------------
1 | # Week 20: Fullstack React, React Using APIs
2 | - Use React to build a dynamic and attractive user interface
3 | - Organize the behavior of a complex SPA
4 | - Independently research and integrate a new technology
5 | - Own both the front- and back-end of a full-stack web application
6 | - Practice project management skills in prioritizing features and determining deliverables
7 |
--------------------------------------------------------------------------------
/weekly-learning-goals/week-05.md:
--------------------------------------------------------------------------------
1 | # Week 5: Object-Oriented Design
2 |
3 | ## Learning Goals
4 |
5 | - Design an application following Object-Oriented design principles
6 | - Improving and deepening development workflow practices:
7 | - Read and understand project requirements given as user stories
8 | - Apply testing tools, such as test coverage tools like SimpleCov
9 | - Begin understanding miscellaneous intermediate programming topics:
10 | - Create and use regex to validate strings
11 | - Write small and simple bash scripts
12 | - Organizing project dependencies with Gemfile
13 |
--------------------------------------------------------------------------------
/weekly-learning-goals/week-03.md:
--------------------------------------------------------------------------------
1 | # Week 3: Intermediate Ruby
2 | ## Learning Goals
3 |
4 | - Describe the role of classes and objects in Ruby
5 | - Working with classes:
6 | - Defining a class
7 | - Creating a constructor
8 | - Storing data in instance variables
9 | - Building behavior with instance methods
10 | - Compare and contrast hashes and classes
11 | - Define object composition
12 | - Identify different types of composition relationships:
13 | - One-to-many
14 | - One-to-one
15 | - Many-to-many
16 | - Define and use class methods and variables
17 | - Use modules to break code into namespaces
18 | - Read and process data from a CSV file
19 |
--------------------------------------------------------------------------------
/weekly-learning-goals/week-08.md:
--------------------------------------------------------------------------------
1 | # Week 8: Intro to Web using HTML & CSS
2 |
3 | ## Learning Goals
4 | - Understand separation of content (with semantic HTML) vs. presentation (CSS)
5 | - Use semantic HTML tags
6 | - Use HTML attributes
7 | - Apply HTML classes & IDs
8 | - Create CSS styles
9 | - Use basic and complex CSS selectors
10 | - Identify & manipulate each piece of the box model
11 | - Use CSS layout & display properties for appropriate layouts
12 | - Understand using flexbox for alignment
13 | - Understand using CSS Grid for layout
14 | - Be able to determine where to use Flexbox and where to use Grid for layout
15 | - Gain exposure to accessibility in web design
16 |
--------------------------------------------------------------------------------
/weekly-learning-goals/week-17.md:
--------------------------------------------------------------------------------
1 | # Week 17: Intro to React
2 |
3 | - Continue identifying portions of web sites as React components
4 | - Continue creating new React applications using `create-react-app`
5 | - Manage file structure using `export` and `import`
6 | - Build functional stateless React components
7 | - See the patterns in React for using CSS
8 | - Use `PropTypes` to verify data in React
9 | - Build classical stateful React components
10 | - Use state and props together in React components to manage data
11 | - Use events in React components to create dynamic applications
12 | - Use event handler functions with props to pass event handling functionality from component to component
13 |
--------------------------------------------------------------------------------
/weekly-learning-goals/week-12.md:
--------------------------------------------------------------------------------
1 | # Week 12: Rails III - OAuth, PM and Agile Skills
2 | ## Learning Goals
3 |
4 | ### Testing in Rails: Controllers
5 | - Test renderings, redirections, response codes in Rails Controllers
6 |
7 | ### OAuth in Rails, Testing with OmniAuth
8 | - Understand the basic workflow of OAuth, and how it protects users
9 | - Implement user login/logout using Github as an OAuth provider
10 | - Use OmniAuth as a mock OAuth provider during testing
11 |
12 | ### Software Engineering, Agile and Project Management
13 | - Understand the role of Agile as a software development methodology
14 | - Use Agile techniques like daily standups, short sprints and a Kanban board (Trello) to coordinate a large group project
15 |
--------------------------------------------------------------------------------
/weekly-learning-goals/week-11.md:
--------------------------------------------------------------------------------
1 | # Week 11 (Rails week 3)
2 |
3 | ## Automated Testing, Advanced Controllers and CSS Frameworks With MediaRanker
4 |
5 | ### Testing in Rails
6 | - Understand the high-level ideas of testing in Rails
7 | - Test Rails Models using Minitest specs
8 | - Create test data with relationships using Fixtures
9 | - Test user workflows that take multiple request/response cycles
10 |
11 | ### Advanced Controllers
12 | - Use `session` and `flash` to track user data between requests
13 | - DRY up controllers using filters
14 | - Restrict what actions can be taken by which users
15 |
16 | ### Foundation
17 | - Understand the problem solved by the Foundation CSS framework
18 | - Style a web page using the Foundation
19 |
--------------------------------------------------------------------------------
/weekly-learning-goals/week-06.md:
--------------------------------------------------------------------------------
1 | # Week 6: Working with APIs in Ruby
2 |
3 | ## Learning Goals
4 |
5 | - Web basics:
6 | - Describe the request/response cycle and the role of a client/server architecture
7 | - Differentiate between _websites_ and _APIs_
8 | - Identify the different parts of an HTTP request and response
9 | - Differentiate between _queries_ and _commands_
10 | - Use the MVC pattern to organize programs
11 | - Consuming APIs:
12 | - Experiment with APIs using Postman
13 | - Consume an API in Ruby using the `HTTParty` gem
14 | - Interact with an API that requires authentication
15 | - Hide secrets from git using the `dotenv` gem and environment variables
16 | - Mock API calls in tests with the `VCR` gem
17 |
--------------------------------------------------------------------------------
/weekly-learning-goals/week-19.md:
--------------------------------------------------------------------------------
1 | # Week 19: React Reinforcement
2 |
3 | - General
4 | - Create React components to manage form data
5 | - Manipulate state data based on form submissions
6 | - Differentiate between container components and presentational components
7 | - Introduce WebPack
8 | - Learn about hooks for state management
9 | - Introduce the spread operator and rest parameters.
10 |
11 | - Testing
12 | - Explain the limitations of testing with React
13 | - Intro to testing React applications using Jest
14 | - Explain the purpose and mechanics of Snapshot testing
15 |
16 | - APIs
17 | - Revisit axios syntax
18 | - Use axios within component lifecycle methods to load external data from an API
19 | - Use axios with events to send data to an external API
20 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Pedagogy
2 |
3 | This repository is all about the way we teach! Here you'll find things like our syllabus, information on weekly learning goals and how we structure projects.
4 |
5 | - Ada Classroom Systems and Practices
6 | - [The Mega Classroom Environment Summary](classroom/README.md)
7 | - [Syllabus](classroom/syllabus.md)
8 | - [Ada's Rule of Three](classroom/rule-of-three.md): How we categorize projects
9 | - [Homework Labels](classroom/hw-learning-goal-label-key.md): How we categorize homework
10 | - [Weekly Learning Goals](classroom/weekly-learning-goals/README.md)
11 | - Thursdays At Ada
12 | - [Classroom](cs-fundamentals-classroom.md)
13 | - [Internship](cs-fundamentals-internships.md)
14 | - [Graduate Internships](cs-fundamentals-graduate-internships.md)
15 |
--------------------------------------------------------------------------------
/weekly-learning-goals/week-09.md:
--------------------------------------------------------------------------------
1 | # Week 9: Intro to Rails
2 | ## Learning Goals
3 | 7.1 Learn MVC implementation using Rails
4 | 7.2 Familiarize with the Rails Request Cycle
5 | 7.3 Learn HTTP verbs and the situations for which each is suited
6 | 7.4 Construct RESTful routes
7 | 7.5 Create controllers to correspond to sub-domain of web application
8 | 7.6 Create controller methods to retrieve Model data and serve to the view
9 | 7.7 Utilize ERB to create dynamic views
10 | 7.8 Create forms for POST requests manually and using Rails form helpers
11 | 7.9 Use common Rails view helpers
12 | 7.10 Create Active Record migrations
13 | 7.11 Create Active Record models
14 | 7.12 Debug and develop a Rails application
15 | 7.13 Write controller test for CRUD actions
16 |
17 |
18 | # Questions & Learning Goals
19 | | Question | Learning Goal #|
20 | |:--------:|-------------------
21 | | | |
22 |
--------------------------------------------------------------------------------
/weekly-learning-goals/week-02.md:
--------------------------------------------------------------------------------
1 | # Week 2: Testing, Pair Programming, Gems, Git & Debugging
2 | ## Learning Goals
3 |
4 | - **Testing**
5 | - Understand and be able to use Minitest spec-style syntax
6 | - Be able to identify edge-cases in testing
7 | - Run tests with the `rake` command.
8 | - Organize testing into multiple files
9 |
10 | - **Gems**
11 | - Find gems online
12 | - Install global gems via the command line
13 | - Import code via the `require` statement
14 |
15 | - **Git**
16 | - Use `git init` to create a new repository
17 | - Use Git to track changes by adding commits
18 | - Use Git to push code to Github and pull content down to a localhost
19 | - Use git to submit work with a pull request
20 |
21 | - **Pair Programming**
22 | - Explain the concept of pair programming
23 | - Write code with a partner on the same computer alternating as driver & navigator
24 |
25 | - **Debugging**
26 | - Read and analyze a stack trace
27 | - Understand how to use Pry for debugging Ruby Code
28 | - Understand the scope of variables in Ruby
29 |
--------------------------------------------------------------------------------
/weekly-learning-goals/week-16.md:
--------------------------------------------------------------------------------
1 | # Week 16
2 |
3 | ## Asynchronous Programming
4 | 1. Use axios to make AJAX requests
5 | 1. Use GET and POST methods with axios
6 |
7 | ## JavaScript in the Browser
8 | 1. Become familiar with the Web API's definition of event-handling
9 | 1. Become familiar with the Web API's definition of the DOM
10 | 1. Consider and witness JavaScript running in the browser
11 | 1. Understand the basics of event-handling
12 | 1. Understand the basics of DOM manipulation
13 |
14 | ## Intro to React
15 | - Explain what React is and why it is useful
16 | - Identify likely parts of a web page to turn into React components
17 | - Create React components and pass data into them using props
18 | - Continue identifying portions of web sites as React components
19 | - Continue creating new React applications using `create-react-app`
20 | - Manage file structure using `export` and `import`
21 | - Build functional stateless React components
22 | - See the patterns in React for using CSS
23 | - Use `PropTypes` to verify data in React
24 | - Build classical stateful React components
25 | - Use state and props together in React components to manage data
26 | - Use events in React components to create dynamic applications
27 |
--------------------------------------------------------------------------------
/classroom/rule-of-three.md:
--------------------------------------------------------------------------------
1 | # Ada Rule of Three
2 | This document describes the three stages of projects that we assign during the classroom curriculum. Each stage describes a different level of expected knowledge and independence.
3 |
4 | ## Stage 1
5 | - Closely follows in-class examples
6 | - Introduces new concepts
7 | - Individual
8 | - Project definition provides:
9 | - Full specification of requirements with details around method, data structures, classes, etc.
10 | - Pre-provided tests (where appropriate)
11 | - Students complete:
12 | - Code to specification
13 | - Tests pass
14 |
15 | ## Stage 2
16 | - Follows some of in-class examples
17 | - Builds off of concepts in stage 1 project
18 | - Individual or pairs
19 | - Project definition provides:
20 | - User stories
21 | - Students complete:
22 | - Create the methods and classes based on user stories
23 | - Code based on created specification
24 | - Tests
25 |
26 | ## Stage 3
27 | - Requires critical application of concepts
28 | - Must go beyond in-class examples
29 | - Reinforces previous concepts in stage 1 and 2
30 | - Pairs or teams
31 | - Project definition provides:
32 | - Requirements that are open to interpretation
33 | - Students complete:
34 | - Make design decisions
35 | - Create user stories and project specification
36 | - Code based on created specification
37 | - Test
38 | - May not fully complete the project
39 |
--------------------------------------------------------------------------------
/weekly-learning-goals/week-10.md:
--------------------------------------------------------------------------------
1 | # Week 10: Rails II - Entity Relationships & Project Management
2 | ## Learning Goals
3 |
4 | ### Advanced Models
5 | - Describe relationships between models with ERDs
6 | - Write model methods to encapsulate business logic
7 | - Be able to validate input using the *validations library* provided by Active Record
8 | - Discuss the role validations play in data management
9 | - Use ActiveRecord to define one-to-many relations between models
10 | - Use ActiveRecord to define many-to-many relations between models
11 |
12 | ### More Rails
13 | - Understand how to seed a database in Rails
14 | - Define nested routes
15 | - Build UI elements to reflect database relations
16 | - Guide users to provide better data input
17 |
18 | ### Software Engineering, Agile and Project Management
19 | - Explain the role of kanban boards in Agile software development and implement the practice
20 | - Learn to use branches in Git to collaborate on a project
21 |
22 | ## Comprehension Questions
23 |
24 | - What does an ERD for one of your previous Rails projects look like?
25 | - If you have a project `TaskList`, with a model `Task`, and a `Task` must be able to have its own business logic, what file would you write that code in?
26 | - What are some examples of possible validations we can write for our models?
27 | - What is the syntax to define that an attribute `description` must exist (must not be nil) before it can be saved?
28 | - If there is a validation violated, what happens? How can we tell?
29 |
--------------------------------------------------------------------------------
/weekly-learning-goals/week-15.md:
--------------------------------------------------------------------------------
1 | # Week 15: Intro to JavaScript
2 |
3 | ## JavaScript Fundamentals
4 |
5 | - Discover the varying applications of JavaScript
6 | - Learn where Node and `npm` fit in all of this
7 | - Recognize the different data types in JavaScript
8 | - Recognize the difference of declaration and assignment in JavaScript
9 | - See the different syntax to declare the different types of variables in JavaScript
10 | - Understand that we prefer `let` and `const` variables in JavaScript
11 | - Gain exposure in how to do conditional logic in JavaScript
12 | - Gain exposure to how to do some kinds of iteration in JavaScript with `for` and `while`
13 | - Learn and practice the syntax for defining and calling/invoking functions in JavaScript
14 | - Understand that JavaScript requires explicit `return` calls
15 | - Practice creating objects that have functions as members
16 | - Practice passing functions as arguments in other functions
17 | - Explore that functions can be defined and used inline, in a pattern we call _anonymous functions_
18 | - Recognize the syntax of anonymous functions
19 | - Practice writing anonymous functions in `forEach` loops
20 | - Know that our preference will be to use functional expressions compared to function declarations
21 | - Know that we will always use `const` for our functions
22 |
23 | ## Comprehension Questions
24 |
25 | - What is the syntax for making a variable that can be re-assigned? What is the syntax for making a variable that cannot be re-assigned?
26 | - What is the syntax for making a function with the functional expression style?
27 | - What is the syntax for using `forEach` with an anonymous arrow function?
28 | - What is the syntax for using `map` with an anonymouse arrow function?
29 | - What is the syntax for writing a unit test in Jest?
30 |
--------------------------------------------------------------------------------
/classroom/hw-learning-goal-label-key.md:
--------------------------------------------------------------------------------
1 | # HW Learning Goal Label Key
2 | This document describes the labels we give some of our homework assignments. These labels should help a student understand what the learning goal of the assignment.
3 |
4 | Often, we will assign homework in the following or similar structure:
5 |
6 | ```
7 | 3. Read about writing pseudocode: [R] https://github.com/Ada-Developers-Academy/
8 | ```
9 |
10 | The first portion is an explanation of the assignment. The second portion is a label corresponding to our intended learning goal of the reading. The third portion is a link to the resource.
11 |
12 | The labels in the second portion map to the following goals:
13 |
14 | Label | Learning Goal
15 | :--- | :---
16 | R | Reinforcement
17 | S | Supplementing, adding, or extending Context
18 | N | New material that will be immediately relevant
19 |
20 | Here is a brief description of each label:
21 |
22 | ## Reinforcement [R]
23 |
24 | An assignment with the Reinforcement [R] label indicates that the goal of the reading is to go over a concept that has already been introduced into the curriculum.
25 |
26 | ## Supplementing, Adding, or Extending Context [S]
27 |
28 | When an assignment has this label, it serves to add additional context to familiar concepts. Materials and assignments with this label will likely increase and round-out your understanding of a topic. It gives either a different way of looking at a concept, explains a concept more holistically, or shares a way that the concept is applied in a practical way.
29 |
30 | ## New Material and Immediately Relevant [N]
31 |
32 | Reading with this label usually indicates that it is introducing a new concept and new material. If we are assigning new material as reading homework, it will become immediately relevant, likely the very next day.
33 |
34 | At Ada, we tend to only briefly review reading homework with this label.
35 |
36 | These are the materials we consider to be the most important to our curriculum. If you read nothing else, read the [N]s.
37 |
38 | # Nota Bene
39 | Not every assignment will have a label; assignments without a label should, by default, be treated as mandatory new material.
40 |
41 | As a guideline, these labels will usually only be applied to reading assignments or assignments to watch a live code.
42 |
--------------------------------------------------------------------------------
/weekly-learning-goals/week-01.md:
--------------------------------------------------------------------------------
1 | # Week 1: Ruby Fundamentals
2 | ## Learning Goals
3 | - **Programming Fundamentals**
4 | - Comfort with macOS and Atom
5 | - Terminal & Command Line basics
6 | - Running Ruby in the terminal
7 | - Interacting with Ruby in IRB
8 |
9 | - **Jumpstart Concepts**
10 | - Variable Assignment
11 | - Object Types
12 | - While Loop
13 | - Each Loop
14 | - Boolean expressions
15 | - Conditional statements: if/elsif/else
16 | - Input/output
17 | - Working with Collections (Arrays and Hashes)
18 |
19 | - **Intro to Ruby**
20 | - Working with compound conditionals
21 | - Evaluating complex expressions
22 | - Operator precedence
23 | - Defining and using methods
24 | - Iterating over an array or hash
25 | - Creating and using loop tables
26 | - Evaluating what data structure to use for a given problem
27 | - Working with nested collections (arrays of hashes, hashes of arrays)
28 | - Variable scope
29 | - Understanding constant variables
30 | - Using Ruby's built-in methods for Arrays, Hashes, and Enumerables
31 |
32 | ## End of Week Comprehension Questions
33 |
34 | 1. How do you make a new array? How do you assign that array to a variable? How do you access an element from it? How do you put something in it?
35 | 1. How do you make a new hash? How do you assign that hash to a variable? How do you put something into an hash? How do you access a value from it using a key? If you don’t know the keys but you want the values, what can you do?
36 | 1. Can you put an array inside of a hash?
37 | - A hash inside an array?
38 | - An array in an array?
39 | - A hash in a hash?
40 | - How would you “drill down” and access the inner values if you could and did?
41 | 1. When making a method, what is the return statement for?
42 | 1. Do you have a good example of the following pieces of syntax that you can refer to/copy and paste and replace if you need to? each loop, while loop, until loop, if/elsif/else, case/when statement
43 | 1. If you need to make flash cards or a cheat sheet for any of these things, do you have it?
44 | 1. Optional: Did you look up how to do a loop table? What would doing a loop table look like for any question on the Data Transformation Worksheet? (We will formally review loop tables in class at some point)
45 | 1. Do you have a good strategy to figure out if something evaluates to true or false if in an if-statement? What is your strategy? How can you check in irb?
46 |
--------------------------------------------------------------------------------
/cs-fundamentals-classroom.md:
--------------------------------------------------------------------------------
1 | # CS Fundamentals Schedule - Classroom Portion
2 |
3 | | Week | Date | Unit
4 | |---------|---------|------------------
5 | | Week 01 | 02/06/2020 | Imposter Syndrome, Deep work
6 | | Week 02 | 02/13/2020 | Caucus/Workshop & [Binary & Memory](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/classroom/Binary.md)
7 | | Week 03 | 02/20/2020 | [Arrays](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/classroom/Arrays.md) and [Algorithmic Efficiency](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/classroom/Efficiency%20of%20algorithms.md)
8 | | Week 04 | 02/27/2020 | Caucus/Workshop
9 | | Week 05 | 03/05/2020 | [Arrays](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/classroom/Arrays.md) continued, [Introduction to Data Structures](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/classroom/intro-to-data-structures.md)
10 | | Week 06 | 03/12/2020 | [Sorting](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/classroom/Sorting.md) & [Introduction to Data Structures Review](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/classroom/intro-to-data-structures.md)
11 | | Week 07 | 03/19/2020 | [Solving problems using Hash tables](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/classroom/hash-tables.md)
12 | | Week 08 | | _BREAK_
13 | | Week 09 | 04/02/2020 | [Understanding function calls](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/classroom/function-calls.md)
14 | | Week 10 | 04/09/2020 | [Introduction to Recursion](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/classroom/recursion.md)
15 | | Week 11 | 04/16/2020 | Caucus/Workshop [Whiteboarding tips](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/classroom/Whiteboarding-Tips.md)
16 | | Week 12 | 04/23/2020 | [Instructors get interviewed, White boarding practice](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/classroom/Whiteboarding-Tips.md)
17 | | Week 13 | 04/30/2020 | [Recursion & MergeSort With Algorithmic Strategies](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/classroom/algorithmic-strategies.md)
18 | | Week 14 | 05/07/2020 | [Linked Lists Part 1](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/classroom/linked-lists.md)
19 | | Week 15 | 05/14/2020 | [State Machines](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/classroom/Finite-State-Machines.md)
20 | | Week 16 | 05/21/2020 | TBD
21 | | Week 17 | 05/28/2020 | [Interview preparation](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/classroom/Whiteboarding-Tips.md)
22 | | Week 18 | 06/04/2020 | _INTERVIEWS_
23 | | Week 19 | 06/11/2020 | Caucus/Workshop
24 | | Week 20 | 06/18/2020 | [Introduction to Software Design](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/classroom/Software%20Design.md)
25 |
--------------------------------------------------------------------------------
/cs-fundamentals-internships.md:
--------------------------------------------------------------------------------
1 | # CS Fundamentals Schedule - Internships
2 |
3 | | Week | Date | Unit
4 | |---------|---------|------------------
5 | | Week 00 | 1/30/2020 | Break Week!
6 | | Week 01 | 2/5/2020 | [Code Reviews](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/internship/code-reviews.md) & [Linked Lists](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/internship/linked_lists.md)
[Code Review Exercises](https://github.com/Ada-C12/code-reviews) && [Exercises for Linked Lists](https://github.com/Ada-C12/linked-list)
7 | | Week 03 | 2/13/2020 | [Linked Lists](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/internship/linked_lists.md) & [Binary Search Trees](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/internship/binary-search-trees.md)
[Binary Search Tree Exercises](https://github.com/ada-c12/tree-practice) Due Monday Feb 24th
8 | | Week 04 | 2/20/2020 | [Binary Search Trees](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/internship/binary-search-trees.md)
[Tree Exercises](https://github.com/ada-c12/tree-practice)
[Binary Search Tree Questions](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/internship/exercises/binary-tree.md)
9 | | Week 05 | 2/27/2020 | [Stacks & Queues](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/internship/stacks-and-queues.md)
[Stacks & Queues Conceptual Questions](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/internship/exercises/stacks-queues-conceptual-questions.md)
[Stacks & Queues Exercise](https://github.com/Ada-C12/stacks-queues) Due Monday March 2nd
10 | | Week 06 | 3/5/2020 | [Hash Tables](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/internship/hash-tables.md)
[Hash Table Exercises](https://github.com/Ada-C12/hash-practice)
11 | | Week 07 | 3/12/2020 | [Heaps](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/internship/heaps.md)
[Heaps Exercise](https://github.com/ada-c12/heaps)
[Reading HW on Graphs](https://medium.com/basecs/from-theory-to-practice-representing-graphs-cfd782c5be38)
12 | | Week 08 | 3/19/2020 | [Algorithms](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/internship/algorithms.md) & Workshop with Sarah! (Workshop cancelled for now)
13 | | Week 09 | 3/26/2020 | _BREAK_
14 | | Week 10 | 4/2/2020 | CS Fun [Graphs](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/internship/graphs.md) & Get with Manager about mid-point review & **Resume Talk (4:00pm-5:00pm)**
15 | | Week 11 | 4/9/2020 | [Graphs - Dijkstra's Algorithm](https://github.com/Ada-Developers-Academy/textbook-curriculum/blob/master/04-cs-fundamentals/internship/graphs.md) & **Recruiters reviewing resumes (4:00pm-5:00pm)**
16 | | Week 12 | 4/16/2020 | Mock Interviews & Recruiters reviewing resumes (4:00pm-5:00pm)
17 | | Week 13 | 4/23/2020 | Mock Interviews (1 - 4pm) Recruiters reviewing resumes (1-2, 4-5pm)
18 | | Week 14 | 4/30/2020 | Mock Interviews (1 - 4pm) Recruiters reviewing resumes (1-2, 4-5pm)
19 | | Week 15 | 5/7/2020 | Recruiting Toolbox (1-5pm)
20 | | Week 16 | 5/14/2020 | TBD
21 | | Week 17 | 5/21/2020 | Dissecting the Offer with Blaine Mercado (3pm)
22 | | Week 18 | 5/28/2020 | Salary negotiation (AH), HR panel (2:30-5:00)
23 | | Week 19 | 6/04/2020 | _Interview Week C13_ Office Closed
24 | | Week 20 | 6/11/2020 | Ada space used for fulltime interviews
25 | | Week 21 | 6/18/2020 | Break
26 |
27 |
--------------------------------------------------------------------------------
/cs-fundamentals-graduate-internships.md:
--------------------------------------------------------------------------------
1 | # Graduate Internships
2 |
3 | ## About
4 |
5 | Some Ada graduates return to Ada for a 2nd internship. This program is similar to the standard internship students enter as part of the program. As part of their graduate internship, students take a self-directed course of study in data structures & Algorithms. The course material comes from the [Massachussets Institute of Technology course Introduction to Algorithms](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/index.htm). Students will be expected to complete watch lessons, readings and homework and discuss/review the content with an instructor and other students in the program for 1 hr per week. After completing the curriculum students will begin a program of interview preparation and mentoring.
6 |
7 | ## Expected Outcomes
8 |
9 | The goal of the program is to support students who may have struggled entering industry: providing them both strong interview skills to land an initial position, practice learning independently, and a strong foundation in Data Structures and Algorithms which will support their long-term growth as software engineers.
10 |
11 | In this program students will:
12 |
13 | - Demonstrate confidence and skill in taking interview questions and solve them using advanced data structures.
14 | - Design complicated data structures and use them to solve computer science problems
15 | - Explain how specific data structures work and demonstrate use-cases.
16 | - Select efficient data structure or algorithm to solve programming problems
17 | - Demonstrate an ability to learn material independently and discuss content with others
18 |
19 |
20 | ## Weekly Schedule
21 |
22 | | Week | Content | Assignments Due
23 | |---------|---------|------------------
24 | | Week 01 | Introduction | Watch and Review Lectures and Recitation videos 1 & 2.
25 | Week 02 | Sorting & Trees | Watch and Review Lectures and Recitation videos 3-5.
Review Problem set 1 with instructor.
26 | Week 03 | Sorting & Trees | Watch and Review Lectures and Recitation videos 6-7.
Review Problem set 2 with instructor.
27 | Week 04 | Hashing | Watch and Review Lectures and Recitation videos 8-9.
Review Problem set 3 with instructor.
28 | Week 05 | Hashing | Watch and Review lecture 10.
Review problem set 4 with instructor.
29 | Week 06 | Numerics | Watch and Review Lectures and Recitation videos 11-12.
Take and discuss Quiz 1 with instructor.
30 | Week 07 | Graphs | Watch and Review Lectures and Recitation videos 13-14.
Review Problem set 5 with instructor.
31 | Week 08 | _Break Week_ |
32 | Week 09 | Shortest Paths | Watch and Review Lectures and Recitation videos 15-16.
Discuss lessons with Instructor
33 | Week 10 | Shortest Paths | Watch and Review Lectures and Recitation videos 17-18.
Review problem set 6 with instructor.
34 | Week 11 | Shortest Paths | Take Quiz 2 with Instructor & Review Difficult topics
35 | Week 12 | Dynamic Programming | Watch and Review Lectures and Recitation videos 19-20.
36 | Week 13 | Dynamic Programming | Watch and Review Lectures and Recitation videos 20-21.
Review Problem Set 7
Take Final Exam with Instructor
37 | Week 14 | Interview Preparation | Select 3 Whiteboarding problems and be interviewed with one by the instructor.
38 | Week 15 | Mock Interviews | Take a mock interview with a hiring manager.
39 | Week 16 | Interview Support |
40 | Week 17 | Interview Support |
41 | Week 18 | Interview Support |
42 |
43 |
44 | ## Materials
45 |
46 | Students will be expected to:
47 |
48 | - Obtain [Introduction to Algorithms, Third Edition](https://mitpress.mit.edu/books/introduction-algorithms-third-edition)
49 | - Install Python 3 via Homebrew for use on homework
50 | - Optionally Obtain [Problem Solving with Algorithms and Data Structures using Python 2nd edition](https://www.amazon.com/exec/obidos/ASIN/1590282574/ref=nosim/mitopencourse-20?linkCode=w61&imprToken=iOCYJIoB0jS.jKcxJAvjow&slotNum=1)
51 |
--------------------------------------------------------------------------------
/classroom/README.md:
--------------------------------------------------------------------------------
1 | # The Mega Classroom Environment Summary
2 |
3 | How are classrooms run at Ada?
4 | - Where are class resources?
5 | - Where is the class schedule?
6 | - What are the systems of feedback?
7 | - When will I meet with instructors?
8 |
9 | ## Schoology is where we keep Class Resources
10 |
11 | We will use [Schoology](https://app.schoology.com/) to provide:
12 |
13 | - Links to our classroom calendars and schedules
14 | - The place where all assigned online quizzes, assessments, or reflections will take place
15 | - Links to our classroom recordings
16 | - Links to more resources we want to share
17 |
18 |
19 | ## We use Google Calendar to schedule Class and Homework
20 |
21 | The schedule for classes will be set and displayed on our classroom Google Calendar.
22 |
23 | Details for each lecture will be on individual events on the classroom Google Calendar. Please pay attention to all of the links, writing, details, and location!
24 |
25 | You can find this Google Calendar through Schoology, though we recommend adding/subscribing to this calendar itself on your own personal Gmail account if you have one.
26 |
27 | ### We tend to schedule by Week units
28 |
29 | Our curriculum is segmented into four units (Ruby, RoR, JS, Capstone), which are between 4-6 weeks each.
30 |
31 | The curriculum schedule is set week-by-week, with a rolling release, as we reflect, adjust, and improve the schedule to respond to each cohort.
32 |
33 | Although it's not 100% of the time, our most common pattern of the schedule has lessons throughout most of Monday, Tuesday, and Wednesday, with a week-long project assigned on Monday and due either Friday or the following Monday.
34 |
35 | If you're looking for a broad overview of our curriculum, you can find that either:
36 | - [On our Syllabus Overview document](syllabus.md)
37 | - On the Visual Timeline Overview document on Schoology
38 |
39 | ## Instructors Record Each Lesson
40 |
41 | Most lessons will be recorded using our software named Panopto. The recording will be an audio and screen-capture recording. Each recording is then uploaded to the online Panopto folder. You can find this folder on Schoology.
42 |
43 | An instructor may not record a lesson if the format feels inappropriate, such as a group activity.
44 |
45 | ## Systems of Feedback
46 |
47 | ### Projects, PSEs, CS Fun Assignments
48 |
49 | In the classroom, you will get feedback on some specific projects, some specific exercises known as PSEs at Ada, and some CS Fun assignments. In most cases, the scale will be as such:
50 |
51 | - **Green**
52 | - You have met or exceeded the major learning goals for this project; there is evidence that the produced code shows enough understanding
53 | - **Yellow**
54 | - You approached meeting the major learning goals for this project; to the grader, there is evidence that the produced code shows some understanding, and shows evidence that not all major learning goals were met
55 | - **Red**
56 | - You did not meet the major learning goals for this project; there is evidence that most major learning goals were not met, the progress on the project shows need for support on completion, quality, or both; the project is broken and not running
57 |
58 |
59 | If you get a "Yellow" or "Red," depending on the context:
60 | - An instructor may check-in about concerns, gaps, what you would have done differently, and how to move forward
61 | - An instructor may ask for additional work on the project, depending on the missed goals
62 | - Ada staff may take any feedback/concerns/thoughts to come up with ideas for studying/support strategies
63 |
64 | Check your current student handbook for details on systems in place for multiple yellow/red projects, PSEs, and CS Fun assignments.
65 |
66 | ### Feedback is part of Learning
67 |
68 | We care about feedback being used to propel and inform learning, as a way of showing compassion and advocating for growth.
69 |
70 | If you ever have any questions or would like clarity about feedback you receive on a project, the instructors and all of Ada Staff are excited to hear about it!
71 |
72 | "Systems of Feedback" is extremely close to "Systems of Support," so stay on lookout for all of the other systems of support managed outside of the classroom at Ada, too.
73 |
74 | ## Individualized Meetings at Ada
75 |
76 | ### Ada Pods, Tutoring, TAs
77 |
78 | These systems of support will be introduced outside of the classroom!
79 |
80 | ### Instructional Team One-on-One Meetings
81 |
82 | It is expected that each student meets with the instructional team a few times during the classroom portion to talk about learning styles, questions on material, what's going on, what's going well, etc. These systems of support will be introduced over time.
--------------------------------------------------------------------------------
/classroom/syllabus.md:
--------------------------------------------------------------------------------
1 | # Ada Developers Academy Cohort Syllabus
2 |
3 | ## Overview
4 |
5 | Ada Developers Academy teaches full-stack web development, allowing students to choose what specialty of software development they want to pursue in their post-Ada careers. We cover HTML/CSS, JavaScript, Ruby on Rails, and computer science fundamentals. Our [complete curriculum](https://github.com/Ada-Developers-Academy/textbook-curriculum/) is online and open-source.
6 |
7 | We focus on teaching skills that are readily transferable from one technology stack to another, making Ada students adaptable and flexible candidates for all types of developer positions. Students have been successfully placed in internships and jobs working in Ruby, Java, JavaScript, C++, C#, Objective-C and Python, among other languages and frameworks.
8 |
9 | Major topics of study include:
10 |
11 | Writing Software
12 | - Ruby
13 | - HTML & CSS
14 | - Ruby on Rails
15 | - Web APIs
16 | - JavaScript
17 | - CS Fundamentals
18 |
19 | Being a Developer
20 | - Leadership & Inclusion
21 | - Test-Driven Development
22 | - Pair Programming
23 | - Agile Practices
24 | - Networking
25 | - Career Readiness
26 |
27 | ## Expected Outcomes
28 |
29 | ### Ruby
30 |
31 | Ruby is a dynamically typed, interpreted, object-oriented language. In addition to serving as a great introduction to programming, Ruby is the foundation of the Ruby on Rails framework, and is used for most of our CS Fundamentals curriculum.
32 |
33 | Students should be able to:
34 |
35 | * Write complex command line programs in Ruby
36 | * Use object-oriented programming principles to build scalable, maintainable programs
37 | * Read and write files, and process large amounts of data
38 | * Verify code from the outset using test-driven development
39 |
40 | ### HTML & CSS
41 |
42 | HTML and CSS are two of the core technologies on which the web is built, allowing web developers to structure content in a hierarchy and specify how it should be presented to the user. Both are foundational for web developers.
43 |
44 | Students should be able to:
45 |
46 | * Read and write HTML and CSS
47 | * Utilize semantic tags to provide clear structure to HTML
48 | * Manage the layout of a complex web page using CSS
49 |
50 | ### Ruby on Rails
51 |
52 | Ruby on Rails is a robust and comprehensive MVC framework for building web servers. We use Rails to address a wide range of topics, from HTTP, REST and web standards to database operations. This unit also includes a large team project completed over two weeks.
53 |
54 | Students should be able to:
55 |
56 | * Build and deploy a complete web application, from the HTML & CSS on the page to the backing database
57 | * Model complex real-world relations using ActiveRecord
58 | * Use Git, TDD and agile practices to coordinate a large team
59 |
60 | ### Web APIs
61 |
62 | APIs allow programs to talk to each other, and have become an important part of the modern web. We focus both on consuming third party APIs and on producing our own APIs, laying the foundation for future front-end development.
63 |
64 | Students should be able to:
65 |
66 | * Explore and utilize third party APIs
67 | * Design an API to expose their own data
68 | * Write programs that parse and format JSON
69 |
70 | ### JavaScript
71 |
72 | As the language of the web, an understanding of JavaScript is essential for any prospective web developer. In addition to core language features, we'll cover some of the excellent libraries that enable modern web apps such as React.
73 |
74 | Students should be able to:
75 |
76 | * Read, write and test JavaScript
77 | * Manipulate the DOM dynamically
78 | * Build a complete single-page application, using AJAX to integrate with an API
79 | * Organize a web app using a front-end framework
80 |
81 | ### Computer Science Fundamentals
82 |
83 | Ada graduates are expected to have an understanding of the basics of computer science. This includes common data structures and algorithms, and notions of space- and time-complexity.
84 |
85 | Students should be able to:
86 |
87 | * Compare and evaluate different solutions to the same problem
88 | * Select the appropriate data structure to solve a given problem
89 | * Understand and trace recursive functions
90 | * Analyze the efficiency of basic programs, and discuss potential trade-offs and optimizations
91 |
92 | Computer Science Fundamentals is taught on Thursday throughout the [classroom](https://github.com/Ada-Developers-Academy/pedagogy/blob/master/cs-fundamentals-classroom.md) and [internship](https://github.com/Ada-Developers-Academy/pedagogy/blob/master/cs-fundamentals-internships.md) periods. You can click the previous links to see a through description of the concepts taught.
93 |
94 | ### Capstone Project
95 |
96 | As a culmination of each student's classroom learning experience, they create a capstone project to showcase what they have learned thus far in the program.
97 |
98 | Students should be able to:
99 |
100 | * Demonstrate self-direction, time management, and independent learning
101 | * Learn and implement new technologies
102 | * Complete a product lifecycle from conception to delivery
103 | * Utilize agile practices to assist in project completion
104 |
105 |
106 |
107 | | Week | Unit | Topics
108 | |---------|------------------|----------------------------------------
109 | | Week 01 | Ruby | Student Orientation, Intro to Ruby, Methods, Basic Data Structures, Enumerables
110 | | Week 02 | Ruby | Intro to Git, Gems, TDD, Files, Pair Programming
111 | | Week 03 | Ruby | Intro to Classes, Exception Handling, Writing Tests
112 | | Week 04 | Ruby | Object-Oriented Programming
113 | | Week 05 | Ruby | Object-Oriented Design, More Git
114 | | Week 06 | Intro to Web | Intro to Request/Response Cycle, Intro to APIs
115 | | Week 07 | Intro to Web | Static Web Design, HTML, CSS
116 | | Week 08 | _BREAK_ |
117 | | Week 09 | Ruby on Rails | HTTP & REST, MVC, Intro to Rails
118 | | Week 10 | Ruby on Rails | ActiveRecord Models, Deployment
119 | | Week 11 | Ruby on Rails | Testing in Rails, CSS Framework
120 | | Week 12 | Ruby on Rails | OAuth, Advanced Rails
121 | | Week 13 | Ruby on Rails | Agile, PM Skills, Working With a Large Team
122 | | Week 14 | Web APIs | Producing APIs
123 | | Week 15 | JavaScript | Intro to JavaScript
124 | | Week 16 | JavaScript | JS in the Browser, axios
125 | | Week 17 | _BREAK_ |
126 | | Week 18 | JavaScript | Intro to React
127 | | Week 19 | JavaScript | React
128 | | Week 20 | _INTERVIEWS_ |
129 | | Week 21 | JavaScript | Full Stack Web Development
130 | | Week 22 | Independent Capstone Study Week | Capstone Project Details, Reflection, Tutorials
131 | | Week 23 | Capstone Project |
132 | | Week 24 | Capstone Project |
133 | | Week 25 | Capstone Project | Presentations
134 | | Week 26 | _BREAK_ |
135 | | Week 27 | __INTERNSHIP BEGINS__ |
136 |
--------------------------------------------------------------------------------