├── 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 | --------------------------------------------------------------------------------