# data[].attributes.body
We will keep TPT schedule in One Place.

OO's for Trimester

P3: Avinh, Sophie, Anthony

P4M: Raiden, Katie, Aadya

P4N: Arushi, Riya, Yolanda

P5: Allison, Christina, Soren

Week 0
1.1 Collaboration Quiz
1.2 Program Function and Purpose Quiz
Week 1 - OOs only
TPT 0.0, Create Task ideas, notes, and research
1.3 Program Design and Development
1.4 Identifying and Correcting Errors
Week 2 - OOs + TOs (P3:Ellen, P4M: Aadya, P4N:Prisha, P5:Sonakshi)
2.3 Extracting Information from Data
2.4 Using Programs with Data
Week 3 - OOs + TOs (P3:Rohit, P4M: Ritvik, P4N:Isabelle, P5:Colin)
AP MCQ Test (Due Thursday 12/16)

-------------
Winter Break
--------------
Week4 - OOs + TOs (P3:Akhil, P4M: Ethan, P4N:Daniel T, P5:Colin)
3.11 Binary Search
3.12 Calling Procedures
3.13 Developing Procedures

Week5 - OOs + TOs (P3:Rebecca, P4M: Kurtis, P4N:Reem, P5:Sahil)
3.14 Libraries
3.15 Random Values

Week6 - OOs + TOs (P3:Val, P4M: Kevin, P4N:Natalie, P5:Neha)
3.16 Simulations
3.17 Algorithm Efficiency
3.18 Undecidable Problems

Week7 - OOs + TOs (P3:Chris, P4M: Saathvika, P4N:Abby, P5:Leah)
4.3 Parallel and Distributed Computing

Week8 - OOs + TOs (P3:Bria, P4M: David, P4N:Adi, P5:Leo)
5.1 Beneficial and Harmful Effects
5.2 Digital Divide
5.3 Computing Bias

Week9 - OOs + TOs (P3:Samuel, P4M: Katie, P4N:Ian, P5:None)
5.4 Crowdsourcing
5.5 Legal and Ethical Concerns
5.6 Safe Computing

# data[].attributes.body
Python Database Modeling Sprint 4, 5
Week 4

Goals for Week:
1. Regroup with team after break, continue on with plans as outlined on Scrum Board.
2. Individual Reviews.   Discuss how you built your About Page.
3. Technical challenge.  Focus on improving Frontend (Layouts) and Backend (Search and Database).
4. Information Update. Pages and Jekyll

TPT
Week4 - OOs + TOs (P3:Akhil, P4M: Ethan, P4N:Daniel T, P5:Colin)
3.11 Binary Search
3.12 Calling Procedures
3.13 Developing Procedures

New Assignments this Week

Pages and Jekyll Challenges

TT4 Challenges

M - Stand Up Meetings (Scrum Team and BOF), Teacher Individual Reviews throughout week.

Tu - TPT 4 Student Led
W - Tech Talk 4 Search and Procedures
Th - CCC, live reviews on Projects (Analytics, Tangibles)
F - CCC, live reviews on Projects (Analytics, Tangibles)

Python Database Modeling Sprint 4
Week 5

Goals for Week
M - Stand Up Meetings, Indi Reviews

Tu - TPT 5, Indi Reviews
W - Tech Talk 5
Th - CCC, PBL Reviews
F - CCC, PBL Reviews

# data[].attributes.body
Innovation Sprint 1,2
Week 1

Tech Talks 1,2 Code is on Github; runtime is Here.

Plan for Week(s) - Scrum Masters to obtain Project Approvals.  Individuals interested in success should plan ahead to week after Winter Break, Review Week 3 and work backwards.  BOFs look at material before lectures.

M - Planning meeting between now and tree. Stand Up meetings for Scrum Team.  Form TPT from Student OO's for Tri 2.

Tu - Student Led TPT Schedule

W - CCC,  Design manager BOF.  Tech Talk 1.1, Organizing Templates and Files

Th - CCC, Technical Officer BOF. Tech Talk 1.2 - Accessing data Asynchronously

Th & F - Conduct Scrum Master / Teacher Project Reviews

F - CCC, OOs.  Review ticket Crossover score and TPT and score, focus on fellow BOF.

Points for the Week

see Canvas

Innovation Sprint 1,2
Week 2

Goals for Week:

Individuals deliver About Pages via Runtime Server.   Design layouts required in About Pages this Friday.

Planning Meeting objective.  Make sure you have a plan for a Create Task built into the Project or About Page.

Scrum Boards planned through week after Winter Break.

TPT Units 2.3, 2.4 completed before class tomorrow and will be checked.  Be ready to discuss.

Cross Over planning objective.  Discuss building trainings on your BOF topic into your Wiki (Management policies, Deployment guide/policies, Designer layouts & TO databases/search).  You will discuss Design tomorrow.

M - Stand Up meetings (Scrum Team 10 minutes and BOF 10 minutes)

Tu - See TPT schedule.  After TPT Designer BOF to instruct on layout guidelines within Scrum Team.

W - CCC, Scrum Master to share Create Task plans and weekly tagging to post Winter Break on Scrum Board with Teacher.

Th - Tech Talk 2: Teacher and TO BOF SQLite Database Intro.  Scrum Team (Scrum Master, GitHub Admin, Deployment Manager) perform release day policy training.

F - CCC, About Pages 1.0 Due via Deployed Server due, details on Canvas (Live reviews by Teacher, OOs, TOs)

Points for the Week

see Canvas

# data[].attributes.body
Organization Sprint 0
Week 13

Goals for Week

Pick Teams

Slack Channels

Start GitHub

Brain Writes

Wire Frames

README

Scrum Board

Running Project

Individual Home Pages

Journal TPT

Points for Week, current 4/5.  To get seed from 4/5 to 5/5, setup working environments according to minimal requirements by Fri 11/19.

Scrum Boards and Issue for each individual (.5 to seed).

GitHub plan and commits by each individual (.5 to seed)

Distraction policy in effect immediately (-1 point from seed)

M - Introduction.  Birds of a Feather (BOF) and Technical Officers (TOs).  Pick Teams, establish roles, get busy with git (Scrum Board and Code).  Intro: 0.1, 0.2, 0.4
Tu - Teacher Led talk about Seed point, Project Ideas, Individual Development and CB. Intro: 0.0, 0.3.  TPT 0.0.
W - CCC, BOF Scrum Masters discussion, See Tech Talk 0.0.
Th - CCC, BOF Github Admins discussion, See Tech Talk 0.1
F - CCC, BOF Deployment Admins discussion, See Tech Talk 0.2 and See Deploy Guide. Canvas for Quiz Assignments.

# data[].attributes.body
AP CSP COURSE Intro FOR Trimester 2

Intro 0.0:  Project Ideas

PBL - Look for a real need, Teacher/Student need, Educational Study or Simulation, Campus Club, Campus Interest, Business Interest, Charitable Organization, etc

Starting Objective is to begin a code base.  Longer term vision is to  build skills for a final project in Trimester 3.   IMO, it is much more interesting to work on something that has 3rd party interest and that you can ultimately acquire a sponsor.  This Trimester is to get us ready.

Designs are required and must meet Teacher Approval.  Be sure to pick something that you don't burn out on after a couple of weeks.

As a Concept/Idea in Education Need...  Highlight all 5 Big Ideas from CB.   Make a student site that one Ups college board.   The Web Site covers key topics, but the one Up site includes code and projects.  Essentially, remake that site to be Student Friendly, More Code, and less Video.

# data[].attributes.body
Database Intro Sprint 3
Week 3

Work in Progress WIP reviews Thu.  AP Practice exam.  We are looking for command on roles.

Goals for Week

M - Stand Up Meetings (Scrum Team and BOF as needed). BOF Deployment Tech Talk 3

Tu - TPT 3.

W - CCC

Th - PBL 1.0 Live Reviews, AP MCQ Practice Test Due

F - Elephant Gift and/or Potluck?

Points for the Week

see Canvas

# data[].attributes.headline
Tech Talk 1.2 - Accessing data Asynchronously

# data[].attributes.subject
Tech Talk 1.2 - Accessing data Asynchronously

# data[].attributes.body
Student BOF review.  Technical Officer is responsible.

This Tech Talk will focus on interactions between frontend Javascript and backend Python.  Including the introduction of SQLite databases.

Tools like Ajax, Fetch, or Axios allow loading information between JavaScript and backend to occur without waiting for result, an asynchronously operation.  Another benefit of fetch and JavaScript is to allow a page update without a page refresh.  Together, this will give the feel of professional transitions in the page and at the same time making server/persistent content without pausing the client.

In this example, we will use  and return result from a Search of SQLite data.

Accessing data that is persistent is divided into MVC...

1. Model has a function is where we retreive data.  Model Definition has a Class where we define and store data in a Table (Python/SQLite).  This includes Filtering and returning dictionary data from the Database.  Details on Model definition will be a future Tech Talk.

2. View is where we a form to search the data (HTML/JavaScript).  The Javascript includes a fetch for sending data from User to Backend.  BootStrap infused HTML, JavaScript Fetch, and dynamically building result Container.

3. Control is where we set up routes and direct traffic between Model and View.   Receiving request header, formatting response JSON, and handling success/errors are responsibilities of control.

Runtime is a search box.

Pressing Search button and leaving search box is empty will return all the data.

Entering a string and pressing Search button will look for partial match in database, filter is looking for result in either  name and email.

Result area is under Search Box.  This area is cleared between each search.

Useful tool: Download SQLite3

# data[].attributes.headline
Tech Talk 1.1 - Organizing  Bootstrap Files, Templates layouts, and Sassy

# data[].attributes.subject
Tech Talk 1.1 - Organizing  Bootstrap Files, Templates layouts, and Sassy

# data[].attributes.body
Student BOF review.  Layout and Design  Manager is responsible.

Review Jinja2 and Layouts

Bootstrap starter template,

Society layout.html

head, style, script, body

Society templates

Society statics

Benefits to Blueprint, Society algorithms

The focus is to organizing your files in Python.

A benefit is on grouping py, statics, templates into a local structure and establish clear directory of ownership

Helps to avoid merge conflicts

Logical means of accessing Functions and Statics with url_for, avoids path confusions

Review understanding of Bootstrap

Establishing consistent style across HTML, review starter templates

Bootstrap has it all:  Containers, Grids , Cards,  Navbars etc

Dark Mode Example

Objective is to preserve session properties

Requires Light and Dark design considerations for each page, review "Starters" runtime menu

Introduction to Sassy CSS (SCCS), used to support Dark Mode color actions, custom.sccs

HTML usage of Bootstrap Colors joke.html

Local storage and Java Script

Sassy CSS Installation Requirements

Install node.js

From Terminal in IntelliJ

npm install -g sass

npm install --global less

npm install bootstrap

In .gitignore add lines

node_modules
/node_modules/.package-lock.json
/static/scss/custom.css.map
/package.json
/package-lock.json

In IntelliJ Plugins add "File Watcher"

In IntelliJ Settings Tools-File-Watcher. configure SCSS

See Visual with Page

# data[].attributes.body
This Tech Talk will focus on creating an SQLite Database using SQLAlchemy framework.

Model.  The foundations of database are defining a Table and building Create, Read, Update Delete (CRUD) operations.

A "Table" is a Data Structure within a Database.

A "Table" definition in Python/SQLAlchemy is manifested with a "Class" in Python.

A Class is the combination of many data structures (ie list + dictionary),

A Class has many Functions (see def indents inside Python Class

A Class inherits code and functionality of packages (see class Users(db.Model)).

Review this code to understand concepts so far...

1. Model Defining the Table Class

2. Model Testing and Initial Setup

3. Model Defining function to support CRUD operations

4. Control Methods for Create, Read, Update, Delete or Alternative CRUD API definitions

5. View Here is a runtime showing off some CRUD. All the MVC code is show at the bottom of this page.

To get started with databases, perhaps you can simply try to get some Database Code running in your project.  Then you could try to define a new Table in you database.  After pulling code, you will need to Init your database and table by running the Tester Method.

Flask SQLAlchemy reference

# data[].attributes.body
Intro 0.1: Classroom Roles

Two to Three TOs/OOs in class to Facilitate TPT, TT events.  Coordinating across Team TOs/OOs

Serve as Project Owners in Agile Development, process.   Essentially acting as Sponsor of projects.

Help in setting up and approve projects and ideas.

Assist in planning common or shared code across all Scrum Teams, ie User Database and APIs

Coordination for Unit #1-#5 MCQ reviews.  Trying to make things interesting with individual challenges, engagements, hacks, kahoots, etc.  (very little lecture)

Intro 0.2: Team Roles.  Form Teams, establish key roles for Trimester

Scrum Master.  Ensure roles are assigned.  Build Scrum Board.

GitHub Admin.  Setup Project in Git.  Integrate any starter code from Trimester 1.  Build policies for Fork and Pull requests.

Primary Designer.  Primary Designer and Layout manager.  Organize Jinja2 Enabled Templates, ensure usage of Bootstrap (minimize CSS customization per page).  Establish plan for overrides on each of the User Pages.

Deployment Manager (RPi or AWS).  Deploy Web site.  Establish policy and frequency for updates.  Ensure site is not broken and always alive for reviews.

Technical Officer from Scrum Team.  Works with Teacher, Classroom TOs, and BOF TO's to form TPT lessons and Tech Talk Topics for Trimester.  Also, facilitates learning of Technical Concepts within Scrum Team.

# data[].attributes.body
Teacher Required:
CB Topics: Big Idea 1 - 5
Quiz Plan: Weekly CB Quiz
Test Plan: Periodic CB Tests (First due Dec 17th)

Homework (Live review Friday)
1.1 Collaboration Quiz
1.2 Program Function and Purpose Quiz

Overview of the CB  "Create Task".
https://apcentral.collegeboard.org/pdf/ap-csp-student-task-directions.pdf?course=ap-computer-science-principles
Create Performance Task Programming is a collaborative and creative process that brings ideas to life through the development of software.  You must design and implement a program that might solve a problem, enable innovation, explore personal interests, or express creativity.

# data[].attributes.body
Intro 0.3 Individual Assignment.  Everyone Develops code, here is individual About Us pages requirement.  This can steal of harvest from last term, but must be personalized and managed as your own code.

Page must Extend from Layout and have special customization (color pallet, background, etc)

Picture with Mask that toggles to Picture of Choice (ie pic without mask)

Pull or show data (Web API) with information of interest

Establish link(s) to journal and other key indicators of your work and progress (remember pop quiz)

College Board.  We will be rotating through Big Ideas #1-#5 again.  We will be doing Sections and Quiz's that we did not do before.  Also, we will have discussion and start talking about "Create Task", essentially the CSP PBL project.

Padlet and Canvas will contain weekly assignments

Instruction will be provided on Canvas for how CB items will be graded

TPT will continue, but we will have more involvement and rotation.  Activities should be interactive, very little lecture.

# data[].attributes.headline
Tech Talk 0.0 - README, Scrum Board and GitHub best practices

# data[].attributes.subject
Tech Talk 0.0 - README, Scrum Board and GitHub best practices

# data[].attributes.body
In trimester 2 we want to have majority of our documentation maintained in GitHub itself.  We don't want external slides or documents.  We should try to build entire project history in GitHub.

README. You will have a README file to your repository to tell other people why your project is useful, what they can do with your project, and how they can use it.  Also, README will continue having  Individual quick links and Time Boxed changes per Canvas assignment.  Your project could have other *.md files to cover specific topics, however, for these kind of items you may consider WIKI.

WIKIS.  Wikis provide a place in your repository to lay out the design and high level roadmap of your project.     WIKIS should be capture longer "stories".  Most of the presentations we had in Trimester 1 could be authored in WIKIS. Think about how wikipedia is organized.

Issues.  Use GitHub Issues to track assignment within team, feedback from other teams, or bugs.  There is integration between Issues and Pull requests, when you want to manage you code base more effectively.

Project Board.  Beta Project Board.   There needs to be a view into your Issues that easily identifies status.  Kanban is the Scrum Board style we used.  There are other presentations, your README should present the presentation you use and is comfortable with your team.

BOF-Scrum Masters Discussion : What are your Scrum Board likes/challenges?  Friday Delivery likes/challenges?   How have you started your Scrum Board?  Do you know of great examples of Scrum Team Management you have done or have viewed?  What actions should we take in Tri 2 to get better at management of Issues?

# data[].attributes.attachment_caption
Git is build on the magic of Mathematics, Secure Hash Algorithm (SHA)

# data[].attributes.body
GitHub Admin BOF
Linus Torvalds invented Linux and about 2005 invented Git.  Quotes by Linus:

“Talk is cheap. Show me the code.”

“Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.”

Microsoft isn't evil; they just make really crappy operating systems.

GitHub.com was launched in April 2008 by Tom Preston-Werner, Chris Wanstrath, P. J. Hyett and Scott Chaco.  GitHub is a subsidiary of Microsoft since 2018 (kind of ironic with Git quote above), but GitHub is not Git it helps manage the server or backend.

Git is local and GitHub is in the cloud.  Together they have become industry standards since about 2015.  Formerly in industry we used tools like (ClearCase and Perforce), before the 90s we had home brewed systems.  Kind of like making smart backups of files.

Terms and Concepts

"git clone" makes a local repository (decentralized) from the cloud server (GitHub).

A .git directory contains a local database (see illustration) that keeps track of local changes, "git commit" makes a child of the original parent on the local directory.  Git commits over time are a series of SHA's.

A .gitignore file tells .git to ignore certain files in directory tree (ie .idea)

The "git push" command moves files from local system back to cloud server (GitHub)

Often a merge is required as a decentralized system has many simultaneous contributors.

Git branches and/or forks can be used to push code to  isolated locations to on the server/cloud.  This simply delays the inevitable merge, but has benefit of keeping main branch of project stable.

Pull requests is common process used to merge code from isolated branches to main branch.

In trimester 2, it is required that you have a policy on Contributing Guidelines.  Many student have reflected about problems of merging and managing change.  You need to create a policy to communicate how Scrum Team or Others should contribute to your project.  Here are some resources I expect you to understand...

Pull Requests and Branches.

An alternative to branches is Forks.

IntelliJ Branch Creation

IntelliJ Apply Branches

IntelliJ and Pull Request Video

These question need to be answered in WIKI for you Project.  BOF Github Admins policy document:

How have you started you GitHub project?  Did you create a .gitignore to avoid committing files that don't belong in version control?  Did you make sure NO .idea files are in your GitHub repository.

How do you manage commits to avoid problems?

Have you considered branching techniques with pull requests?

What actions will you  take this Trimester to get better at managing merge or commit problems?

# data[].attributes.body
Intro 0.4:  Ask, Act, Study, Act to Become vs. Agile Development Concepts

Plan/Ask.  Align your team on the “what”, the “when” and the “why”. Track your product roadmap, plan features, build your scrum board, and assign sprint tasks with checklists and flexibility.

Create/Act.  Code socially, get input from peer groups, share designs, review others code, and build a community of practice to work iteratively and improve the quality of your code.

Commit/Study.  Release with confidence, review Pull Requests — release regularly and on time — use process checklists, CI/CD, monitoring, analytics, and automation.

Deliver/Act to Become.  Production incidents happen. Raise issues, refine processes to help  resolve incidents quickly and make sure to they don’t happen again.

Repeat.  Loop over each phase again and again.   Before you go back to planning the next sprint, hold a retrospective meetings to answer questions like…
What went well?
What didn’t go so well?
What have you learned?
What still puzzles you?

# data[].attributes.body
Individual Final (Submission)

CB Performance Task (practice)

Proctored AP MCQ Test

Team Final (Team Reviews)

PBL Project for N@tM

Talk about client recruitment

# data[].attributes.body
JavaScript Simulations Sprint 7, 8
Week 7

Goals for Week

Start Indi Reviews

Home Page

PBL Issues

Points for the Week

Tu - TPT assignment?  Unit 4 or 5

Th - Tech Talk 7

JavaScript Simulations Sprint 7, 8
Week 8

Goals for Week

Finish Indi Reviews

Home Page

PBL Issues

Tu - TPT assignment?  Unit 4 or 5

# data[].attributes.body
Deploying your web application on a web server in a production-like environment is part of your development process.  This is the step that connect you to the Internet.

Deployment contains the following steps...

Obtain Equipment.  (RPi or AWS)

Git setup.  Setting up an environment on deployment host to synchronize changes.

Flask, Python.  This involves setting up a Virtual Environment and Pip packages to run  the Web Application on the deployment host.  This process involves requirement.txt and resolving any dependencies for Web Application.

Service File.  This requires Gunicorn testing and running the Web Server in WSGI standard.  Also, this involves building a Service file to run and keep-alive the Web Application.

Nginx setup.  Build a Reverse Proxy configuration setup directing HTTP(S) requests to Web Application. This setup can support multiple Web Applications.  For instance, you could split your application between Front End and Web APIs.

DNS routing and port forwarding.  This involves a friendly domain name to route to the server hosting the Web Application proxy.   Port forwarding is required when server has private IP and is behind a router.

Certbot (certbot --nginx).  This is certificate setup to enable your Web Application to be secure.

After deployment the steps are simple.

Pull from GitHub

Check or Update Dependencies

Restart Service File

BOF-Deployment Admins Discussion:
Did you deploy last Trimester?  Any success stories?  Do you understand need for deployment?  What do you need to get started?  AWS or RPi?  How frequently do you plan to update your deployment?  Do you plan to deploy from multiple branches or forks?

Recommended Guide
https://csp.nighthawkcodingsociety.com/deploy

Another Guide from Internet
https://www.golinuxcloud.com/flask-gunicorn-nginx/

Baby Steps, not the finish line
https://padlet.com/jmortensen7/pideploy

Flask Official Deployment options
https://flask.palletsprojects.com/en/2.0.x/deploying/index.html

More on Git Setup
https://www.digitalocean.com/community/tutorials/how-to-install-git-on-ubuntu-20-04

More on Virtualenv Setup
https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-programming-environment-on-ubuntu-20-04-quickstart

RPi Student Guide for Java:  https://docs.google.com/presentation/d/1-afmt3XGlzlVqjwS8Ign6y61j-st1VhoFk3uwW3o6Sk/edit#slide=id.gfb5acf7e8b_0_66

AWS Student Guilde for Java: https://docs.google.com/presentation/d/15x_G6vxpZ05hx_99myCcXRXd3vy2AMQRP2sN7mYAAHY/edit?usp=sharing

# data[].attributes.headline
Tech Talk 3 - Deployment - Subdomains and Certbot

# data[].attributes.subject
Tech Talk 3 - Deployment - Subdomains and Certbot

# data[].attributes.body
Deployment has moved to Wiki and includes updates for the below.

Subdomains and multiple APPs
1.  CNAME records (subdomains) should be added to DNS to support multiple apps on same server.  Alternative is to create a new domain and point to same server.
2. Requires a new service for APP running at a different enpoint (new port)
3. Requires a new Nginx configuration, requires subdomain or new domain and direction to endpoint.

Certbot
1. Requires Certbot installation, which has dependencies on Snap
2. Port Forwarding for SSL 443 must be added to router.
3. Using "certbot --nginx" will update Nginx configuration files, this is managed by the tool.