Link
Search
Menu
Expand
Document
CS156
CS156
Topics
APIs
Agile
Agile: Acceptance Criteria
Agile: Estimates
Agile: Retros
Agile: Standups
Agile: Team Norms
Agile: User Stories
Ant
Ant: Comparing files
Ant: Properties
Antipatterns
Antipatterns: inheritance
Applications Programming
Bug Reports
CI
CSIL
CSIL: Java 11
CSIL: Mount CSIL drive Via MacOS
CSIL: Mount CSIL drive Via Windows
CSIL: Remote Host Id Changed
CSIL: Via MacOS
CSIL: browser from command line
CSIL: disk quota and file quota issues
CSIL: git configuration
CSIL: ssh port forwarding
CSIL: using public/private key
CSIL: via ssh from Linux
CSIL: via ssh from Windows
CSV files
Chromatic
Chromatic: Disable UI Review
Chromatic: Yellow Circle
Code Reviews
Code Reviews: Commented Out Code
Code Reviews: GitHub
Code Reviews: Reviewing a merged PR
Code Smells
Code Style
Code Style: astyle
Code Style: astyle
Codecov
Codecov: GitHub Actions
Codecov: Transfering Repos
Codecov: Troubleshooting
Conventions
Conventions: Branch Names
Conventions: Commit Messages
Conventions: Tags
Course Policies
Course Policies: Answer Keys
Data
Databases
Design Patterns
Design Patterns: Strategy
Docker
Dokku
Deploying a Simple App
Logging In
Deploying an App
Getting Started
Deploying an App from a private repo
Config Vars Frontend
Dokku: Deploy Problems
Dokku: Postgres Database: Backup/Restore
Dokku: Postgres Database: Command Line
Enabling HTTPS
Environment Variables
Logs
MongoDB Database
Postgres Database
Preparing Your App
Redeploy App
Staff Info
Enviroment Variables
Eslint
Formatting
Gauchospace
Gauchospace: Clickable URLs
Gauchospace: Defining Groups:
Git
git: .gitignore files
git: basic workflow
git: cherry-pick
git: clean
git: cloning your first repo
git: commit messages
git: configuration
git: copy branch to new repo
git: feature branch workflow
git: fixup commit
git: git/github troubleshooting
git: merge conflicts
git: overview
git: pair repo
git: pull rebase main
GitHub
Graphql: GitHub Explorer
Local Storage: Testing
github.com: creating private repos under an organization
github.ucsb.edu: creating private repos under an organization
github: GitHub Pages
github: REMOTE HOST IDENTIFICATION CHANGED
github: actions
github: actions self hosted runners
github: adding collaborators
github: api
github: issues
github: keyboard shortcuts
github: markdown
github: merging PRs
github: pro tips
github: pull requests
github: using ssh keys
github: verified badge on commits
github: wrong starter
Github Actions
Github Actions: Workflow 02
Github Actions: Workflow 04
Github Actions: Workflow 82
Gradescope
Gradescope: Organization Access
Gradescope: Pair/Group Submission
Gradescope: Regrade Requests
Gradescope: Student Self-Submission
Gradescope: Zip Submission
Gradle
Heroku
Heroku: Alternatives
Heroku: Billing and Quotas
Heroku: CLI
Heroku: Tips
Heroku: Troubleshooting
Independent Study
JEnv
JSON
JSON: Jackson
JUnit
JUnit: Hamcrest Matcher style
JUnit: Mocking System.out
Java
Java: == vs. .equals(), and hashCode()
Java: Annotations
Java: ArrayList to array
Java: Codacy
Java: Command Line Arguments
Java: Garbage Collection
Java: Garbage Collection: Under the Hood
Java: HttpURLConnection
Java: Installing
Java: JAR files
Java: JVM
Java: Lambda Expressions
Java: Overriding vs. Overloading
Java: Plaform Independent Newlines
Java: Sorting
Java: Streams in Java 8
Java: Unchecked Operations
Java: Versions
Java: Web Applications
Java: static analysis
JavaFX
javafx: XQuartz on Mac
JavaScript
JavaScript: Destructuring
Javadoc
Javadoc: Legacy Code Projects
javadoc: publishing to github pages from a private repo
javadoc: publishing to github pages from a private repo (the old way)
javadoc: publishing to github pages from a public repo
Kanban
Kanban: Add Column
Kanban: Change Default View
Legacy Code
Legacy Code: Courses Search
Legacy Code: Gauchoride
Legacy Code: Happy Cows
Legacy Code: Organic
Legacy Code: Projects
Legacy Code: Roles
Legacy Code: Setup
Legacy Code: Staff Epic Planning
Legacy Code: Terminal Windows
Liquibase
liquibase: Waiting for changelog lock
liquibase: adding a table
Local Storage
Log4J
Log4J: SparkJava
Log4J: Spring Boot
Lombok:
MacOS
MacOS: Common Errors
MacOS: Homebrew
Markdown
Maven
Maven: Adding custom jar dependency
Maven: Adding custom jar dependency
Maven: Convert Ant to Maven
Maven: FAQ
Maven: Hello World
Maven: Installing
Maven: Javadoc
Maven: Managing Versions
Maven: Plugins
Maven: Plugins
Maven: Pom.xml Order
Maven: Profiles
Maven: Skip Tests
Maven: Testing
Maven: Wrapper
Maven: Xlint options
Maven: vs Ant
MongoDB
MongoDB: New Database
MongoDB: SSL certificate
MongoDB: Spring Boot - Basic Collection
MongoDB: Spring Boot - Nested Document
MongoDB: Spring Properties
MongoDB: Staff Setup
MongoDB.com
Node
Node: Linux
Node: MacOS
Node: Windows
Node: npm
Node: nvm
Node: package-lock.json merge conflicts
OAuth
Google: Create Developer Project
Google: OAuth Consent Screen
OAuth: Authorizing GitHub Third Party Apps
OAuth: GitHub Setup
OAuth: Google Setup
OAuth: Troubleshooting
OOP
PIT Mutation Testing
Port Numbers
Publishing
Pull Requests
Pull Requests: Draft PRs
Pull Requests: Labels
Pull Requests: Simplifying
Pull Requests: Storybook Links
Pull Requests: excessive whitespace changes
Pull Requests: package-lock.json
Pull Requests: unwanted files
Pulse Secure
REST
React
React: Create React App
React: Introduction
React: Page Components
React: Patterns
React: Router
React: Spring Boot
React: Storybook
React: UseSWR
React: react-hook-form
Refactoring
Render
Deploying a public repo to Render
Deploying any repo to Render
Set Environment Variables
SQL
SQL: Liquibase
SQL: Postgres
SQL: Queries
Scrum
Selenium
Selenium: Driver Setup
Semantic Versioning
Slack
Sockets
Spring Boot
Spring Boot: Actuator
Spring Boot: Application Properties
Spring Boot: CSV
Spring Boot: ControllerAdvice
Spring Boot: Database
Spring Boot: Database Migrations
Spring Boot: Heroku
Spring Boot: Logging
Spring Boot: OAuth
Spring Boot: POST and CSRF
Spring Boot: Postgres
Spring Boot: Profiles
Spring Boot: RestTemplate
Spring Boot: SQL
Spring Boot: Secrets
Spring Boot: Security
Spring Boot: Sessions
Spring Boot: Testing
Spring Boot: VS Code
Spring/React
Spring/React: Basic CRUD operations
Spring/React: Directory Structure
Spring/React: Future Work
Spring/React: Github Actions
Spring/React: Migrating to Spring 3
Spring/React: Practices
Spring/React: Testing Pyramid
Spring/React: package-lock.json Merge Conflicts
Storybook
Mocking APIs
Setting up
Stryker
Stryker: Excluding Code
Stryker: console.log surviving mutants
Stryker: html attribute surviving mutants
Swagger
Swagger: SpringFox to Springdoc
Swing
Teamwork
Test Driven Development (TDD)
Testing
Testing: Articles
Testing: Coverage
Testing: Integration and End-to-End Testing
Testing: JUnit
Testing: Jacoco
Testing: Jacoco via Maven
Testing: Jest Testing
Testing: Maven Tips
Testing: Mocking
Testing: Pitest
Testing: Pyramid
Testing: React
Testing: Spring Boot HTMLUnit
Testing: npm test
Thymeleaf
Toasts
Toolchain
UCSB CS Github Linker
UML
Unix (and Linux)
User Stories
VS Code
vscode: CR/LF
vscode: Extensions
Vim
vim: basic eight
vim: customization
Webapps
Webapps vs. Websites
Windows
Windows: WSL
YAML
graphql
Past Offerings
Textbooks
HFJ3
HFJ3: Chapter 1
HFJ3: Chapter 2
HFJ3: Chapter 3
HFJ3: Chapter 4
HFJ3: Chapter 5
JN7
JN7: Chapter 1
JN8
JN8: Chapter 1
Tutorials
Student
Student: ex01
Student: ex02
Student: ex03
Student: ex04
Student: ex05
Student: ex06
Student: ex07
Student: ex08
Student: ex09
Student: ex10
Student: ex11
Student: ex12
Student: ex13
Student: ex14
Student: ex15
Student: ex16
Student: ex17
F24
github
S24
earlier offerings
cs156 docs repo
Canvas
Topics
JavaScript
JavaScript
JavaScript tutorials
W3Schools JavaScript Tutorial
10 JavaScript Concepts for React Beginners
JavaScript tutorials from MDN
Table of contents
JavaScript: Destructuring