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

Goals for Week(s) - Scrum Masters to obtain Project Approvals.  Individuals interested in success should plan ahead to week after Winter Break.

M - Planning meeting between now and week after Tree.  Stand Up meetings (Scrum Team and BOF).  Form TPT from Student Led OO's and TOs

Tu - Student Led TPT

W - CCC, Design manager BOF Tech Talk 1.1

Th - CCC, Technical Officer BOF, Tech Talk 1.2, Async Search Project

Th & F - Conduct Scrum Master / Teacher Project Reviews

F - CCC.  Review ticket Crossover score and TPT and score, focus on fellow BOF.  MOtD: Designers & TOs need to share their Tech Talks with the rest of the team.  Common themes should be built into Home Pages next Friday.

Points for the Week

see Canvas Week 1 - Project Approval

Innovation Sprint 1,2
Week 2

Goals for Week:

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

Scrum Boards planned through week after Winter Break.

FRQ #2 due on About Page and reviewed in class tomorrow

Cross Over planning objective.  Discuss building trainings on your BOF topic in Wiki (Management policies, Deployment guide/policies, Designer layouts & TO databases/search)

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, Deployment Manager BOF, Tech Talk 2.1

Th - CCC,  Technical Officer BOF, Tech Talk 2.. 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
TPT requirements before Tree
P1 OO's - Adi, Natashia, Raq
P2 OO's - Alvin, Raadwam. Rishi, Ishan

Week 0
No TPT
Week 1
- Start Unit #2 FRQ
Week 2
- Unit #2 FRQ due and online (TO P1:Sarah, P2:Arnav)
- Start Unit #3 FRQ
Week 3
- AP 2014 Practice Test Due
- Unit #3 FRQ due and online (TO P1:Yajat, P2:Brayden)
- Start Unit #4 FRQ

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

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

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

Intentions with View and Thymeleaf and Layouts

Bootstrap starter template

layout.html

Establishing consistent style across HTML, review starter templates

Containers, Grids , Cards,  Navbars

head, style, script, body

binary.html example and demo

Dark Mode Example

The Society standard requires Light and Dark design considerations for each page, review runtime menu

Introduction to Sassy CSS (SCCS), this is used to support Dark Mode independent color overrides of Bootstrap, custom.sccs

Local storage and Java Script

Sassy CSS Installation Requirements

Install node.js

From Terminal in IntelliJ, MacOs requires "sudo" on 1st two commands

npm install -g sass

npm install --global less

npm install bootstrap

In .gitignore add lines

node_modules
/node_modules/.package-lock.json
/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
AP CSA COURSE Into 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 (Brain Write, Wire Frame, Concept).   It would be great if you tried to use the GitHub Wiki to record these items.

Be sure to pick something that you don't burn out on after a couple of weeks.

Teacher Project Interests

PBL. Concept/Idea in CSA Education (Easy) ...

Highlight all 10 Units from CB.

Remake CB site to be Student Friendly, More Code, and less Video.

The Web Site covers key topics from CB, also include PBL, should be interactive.  The visuals should teach as much as the code behind the visuals.

FRQs could be challenges or hack-a-thon activities that would enhance TPT sessions.

PBL. Concept/Idea Classroom Management, TODO (Easy/Medium) ...

Build data for a series of classroom needs

User Table and Passwords, single source for all projects to minimize duplication of data

Access through accounts RESTful API

User Setting and Attributes for students

GitHUB ID

All GitHub location for user through Year (Tri 1,2,3)

All Slack channels through Year (Tri 1,2,3)Period through year

Roles for User through Year

Association of Users to work (TODO and resolution)

Scrum Teams (build off my example)

User to Canvas assignments (lookup)

Canvas assignments to Tangibles

GitHub commits

Runtime

Ability to Comment on assignments

Backup of Data to JSON

Restore Data from JSON

Tech + PBL. Concept/Idea React, this needs a project like above but you build it with a different Frontend (Medium) ...

React frontend with Java Backend

Key is to build RESTful API, database and all persistent services in Java

Admin Web application to should be in Java, Spring, Thymeleaf

In 20 minutes... https://www.split.io/blog/tutorial-spring-boot-react/

How to... https://medium.com/bb-tutorials-and-thoughts/how-to-develop-and-build-react-app-with-java-backend-c1e6c5c93ae

Intense, but from authority... https://spring.io/guides/tutorials/react-and-spring-data-rest/

Tech + PBL. Concept/Idea iPhone, two coding languages two IDEs, this will need a project IDEA (Hard)  ...

Swift project with Java Backend

XCode IDE for Swift IPhone project

Java and IntelliJ for Backend project

Key is to build RESTful API, database and all persistent services in Java

Admin Web application to mimic phone services perform maintenance should be in Java, Spring, Thymeleaf

Getting started ... https://medium.com/@nutanbhogendrasharma/consume-rest-api-in-swiftui-ios-mobile-app-b3c5d6ecf401

Comparing backend frameworks ... https://medium.com/comsystoreply/https-medium-com-max-comsysto-comparing-backend-frameworks-written-in-java-swift-and-go-70acd07d3a8a

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

Goals for Week

Pick Teams

Slack Channel

Brain Writes

Wire Frames

Start GitHub

README

Scrum Board

Running Project

Individual Home Pages

Journal and TPT work

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

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 - Teacher Led, Course, Goals, Introduction to Sprint.  Birds of a Feather (BOF) and Operation Officers (OOs).  Pick Teams, establish roles, get busy with git (Scrum Board and Code).  See Intro 0.1, 0.2, 0.4.
Tu - Teacher Led , Discuss Seed Points, Project Ideas, Individual coding, and CB FRQs.  Look ahead for your BOF day.  See Intro 0.0, 0.3 and Tech Talk 0.1.
W - CCC, Scrum Masters BOF on Scrum Boards and Issue for each individual (.5 to seed). See Tech Talk 0.2
Th - CCC, GitHub Admin BOF on GitHub plan and commits by each individual (.5 to seed). See Tech Talk 0.3
F - CCC, Deployment Admins BOF.  Start conversation on deployment.  See Tech Talk 0.4 See Deployment Plan

# data[].attributes.body
AP CSA Roles FOR Trimester 2

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-#10 FRQ 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 Thymeleaf 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.headline
Tech Talk 0.1 - CB Topics and Practice Testing 

# data[].attributes.subject
Tech Talk 0.1 - CB Topics and Practice Testing 

# data[].attributes.body
College Board.  FRQs Unit #2 - #10.  Assignments have been made.

Units #2-#10, due on Weeks #2-#10 respectively

The FRQ Unit for the week is DUE at the beginning of class on TPT day.  For instance, Unit #2 is due on Tue of Week #2.

FRQs need to be incorporated into Web Site and be Online at each due date.  Code needs to run and a link to GitHub should be on the runtime screen.  How we grade is TBD and can change week to week.

Grading will NOT be occur on CB website.  There is NO reason to submit these on CB.  FRQs will be reviewed through your PBL project.  "This may cause github and deploy challenges, WORK IT OUT!

Each FRQ Unit is considered as an individuals homework.  Tuesday in class is the only time that your FRQ should take priority over your PBL.

Student led TPT will continue, but we will have more involvement, activities and rotation.  Activities should be interactive, very little lecture.  Rotations will be graded.

A practice Exam is Due Dec 17th

2014 FRQ, it is really important to understand FRQ style of questions.  Their are 4 questions of 4 types, you need to know this in order to PREP effectively. Technical Officers need to look this up ASAP! This information should be discussed at BOF and then shared with teams.

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

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

# data[].attributes.body
Scrum Master BOF
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 hav 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.

These question need to be answered through a WIKI in your project.  BOF Scrum Masters questions :

What are your Scrum Board likes/challenges?

What are Friday/Monday Delivery likes/challenges?

What style will you use when start your Scrum Board

How will you handle issues that come up on you Scrum Board?  Issues from Teacher or Crossover?

Do you know of great examples of improvement you have observed from Twitter posts?  Scrum Team you observed?  Comment that were made on your former projects?

What actions should we take in Tri 2 to get better at management of Issues?

# 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 Java.  Including the use  of SQLite databases.

Tools like Ajax, Fetch, or Axios allow loading information between JavaScript and backend to occur without waiting for result, asynchronously and without page refresh.  This will give the feel of professional transitions and allow for access to server/persistent content without pausing 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 , Model Part 2 is where we gather data. (Java/SQLite).  This includes Filtering and returning LIST a custom JPA query.  Like type query requires special syntax.

2. View is where we display the data (HTML/JavaScript).  This includes 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 entity, handling success/errors and returning response entity 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 2.1 - Deployment - Subdomains and Certbot

# data[].attributes.subject
Tech Talk 2.1 - 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.

# data[].attributes.headline
Tech Talk 2.2 - Database Review and One to One

# data[].attributes.subject
Tech Talk 2.2 - Database Review and One to One

# data[].attributes.body
Review on SQLite Database.   A Database provides persistent storage for your application.

Model.  One to One allows relationship between tables.
View.  HTML Select allows Person List to be used as input.
Control.  Person list are shared with Scrum Modification Form.  Access to attributes in Person Table allows for One to One information access.

Checks for Scrum Team members when person is deleted (Person Delete calls  Scrum Team check)

Looking at Scrum Team table.  Person ID's are saved in Columns from Model above.  JPA does work to point or reference specific data.

sqlite> .tables
hibernate_sequence  person              scrum_team
sqlite> select * from scrum_team;
62|Team 1|5|7|11|15|3

# data[].attributes.body
Model 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 by Teacher.  Review About Pages and FRQ2, FRQ3 with students in Class.

Points for the Week: 3, 4, 5
1. Daily reviews...  Teacher will be daily observing: attendance, activity, individual questions, work habits, tutorial if behind.
2. Individual Runtime review on FRQs progress/quality.
3. Team Runtime review and Feature progress/quality.
4. Individual Analytics, FRQs, and About page.
5. Team Analytics, Issues and Tangibles

M - Standup planning meeting for 2 weeks. Teacher Individual Reviews throughout week.
Tu - TPT, FRQ4 by Students
W - TT4 Review String Ops and FRQ2 plus Challenge
Th - CCC, live reviews on Projects (Analytics, Tangibles)
F - CCC, live reviews on Projects (Analytics, Tangibles)

Model Sprint 4, 5
Week 5

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
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 use a Layout and have special customization (color pallet, background, etc)

Picture with Mask that toggles to Picture of Choice (ie pic without mask). Perhaps ASCII art.

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

Establish link(s) to journal and other key indicators of your work and progress on your home page (remember Tri 1 pop quiz)

Store and Retrieve Data, ie simple comment database OR add links from previous bullet dynamically.

# 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.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
Deploying your web application on a web server in a production-like environment is part of your development process.  This is the step that connects you to the Internet.

Deployment contains the following steps...

Obtain equipment (RPi or AWS).

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

Java.  Building and running the Web Application on the deployment host.  This involves resolving any dependencies for Web Application.

Service File.  This involves starting and keeping Java Web Application  running.

Nginx File.  This is the Reverse Proxy configuration setup directing HTTP(S) requests to Web Application. This setup can support multiple Web Applications.

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

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

After initial deployment the steps are simple.

Pull from GitHub

Rebuild Java Application

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://csa.nighthawkcodingsociety.com/course/deploy

Another Guide showing a Gradle environment, plus similar final steps...
https://help.clouding.io/hc/en-us/articles/360010806999-How-to-Deploy-Spring-Boot-Application-with-Nginx-on-Ubuntu-18-04

Spring IO official reference
https://docs.spring.io/spring-boot/docs/current/reference/html/deployment.html#deployment

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

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

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

Goals for Week

M - Stand Up Meetings (Scrum Team and BOF)

Tu - TPT 3, After TPT TO's to train teams on Database and Search.

W - CCC, Deployment Manager Runtime Reviews and Questions

Th - PBL 1.0 Live Reviews

F - PBL 1.0 Live Reviews cont.  Elephant Gift or Potluck?  , AP Practice Test Due

Points for the Week

see Canvas Week 3

All 5 BOFs illustrate deliverables

# data[].attributes.body
TPT requirements after Tree

Week #4
Unit #4 FRQ due and online (TO P1:Bryant, P2:Calvin)
Week #5
Unit #5 FRQ due and online (TO P1:Adi: P2: Navodit)
Week #6
Unit #6 FRQ due and online (TO P1:Dane, P2: Komay)
Week #7
Unit #7 FRQ due and online (TO P1:Dillan, P2: Michael)
Week #8
Unit #8 FRQ due and online (TO P1:Dhruv, P2: Rohan K)
Week #9
Unit #9 FRQ due and online (TO P1:Aman, Adriti)
Week #10
Unit #10 FRQ due and online (TO P1:Sarah, Arnav)

# data[].attributes.headline
Tech Talk 6 - Using RESTful APIs with HTML and JavaScript

# data[].attributes.subject
Tech Talk 6 - Using RESTful APIs with HTML and JavaScript

# data[].attributes.body
More depth on RESTful APIs and JavaScript Fetch...

Background Processes, keeping page updated

Navbar updates (weather, stock)

Navbar actions (search)