# data[].attributes.body
id: 533 760 1540
password: X3Z5kf

# data[].attributes.attachment_link.readable_text
Welcome to CSAwesome! It's time to start your journey to learn how to program with Java. A shortcut way to get to this site is to type in the url: course.csawesome.org

CSAwesome is a College Board endorsed curriculum for AP Computer Science A, an introductory college-level computer programming course in Java. If you are a teacher using this curriculum, please join the teaching CSAwesome group which will give you access to teacher resources at csawesome.org.

To make sure the site saves your answers on questions, please click on the person icon at the top to register or login to your Runestone course. As you complete lessons, click the "Mark as completed" button at the bottom. Enjoy the journey!

ATTENTION high school women of color taking AP CSA or CSP: if you identify as female and as Black, Hispanic/Latina, and/or Native American, apply to participate in Sisters Rise Up. The goal of Sisters Rise Up is to help you succeed in your AP Computer Science course and on the exam. They offer one-hour help sessions several times a week and once a month special help sessions often with guest speakers from computing. If you enroll in Sisters Rise Up and send in your AP CS exam score by the end of August, you will be sent a gift card for $100. See the flyer and apply at https://tinyurl.com/55z7tyb9.

ATTENTION high school women, genderqueer, and non-binary technologists: Apply Sept. 1st until Oct. 20th for the NCWIT Award for Aspirations in Computing to be recognized for all that you do (or want to do) in technology. Visit http://www.aspirations.org/AiCHSAward for details.
CSAwesome Units:
Table of Contents

Index

If you see errors or bugs, please report them with this errors form. If you are a teacher who is interested in CSAwesome PDs or community, please fill out this PD interest form and join the teaching CSAwesome group which will give you access to lesson plans at csawesome.org.

(last revised 8/25/2023)

© Copyright 2014-2023 Barb Ericson, Univ. Michigan; 2019-2023 Beryl Hoffman, Elms College; 2023 Peter Seibel, Berkeley High School. All rights reserved.

Created using Runestone.

You have attempted of activities on this page

# data[].attributes.attachment_link.description
Welcome to CSAwesome! It's time to start your journey to learn how to program with Java. A shortcut way to get to this site is to type in the url: course.csawesome.org CSAwesome is a College Board endorsed curriculum for AP Computer Science A, an introductory college-level computer programming course in Java.

# data[].attributes.body
Mar 3 - Initial Assessment

Session 1
Mar 5 - Basics(1): Address, Type, Debugging Code
Mar 10 - Basics(2): Operators
Mar 12 - OOP(1): class, object, reference
Mar 17 - OOP(2): anatomy of a class
Mar 19 - OOP(3): inheritance and polymorphism
Mar 24 - OOP Multiple-Choice Exercise
Mar 26 - Inheritance and Polymorphism
Apr 5 - Code writing (FRQ 2022-1)
Apr 7 - Review Exercise + ArrayList
Apr 9 - Review Exercise + Sorting

Session 2
Apr 14 - String and String methods
Apr 18 - Sampled MC Test
Apr 23 - Array MC Problems + Code Writing (FRQ 2022-2)
Apr 26 - Code Writing (FRQ 2022-3)
Apr 28 - Code Writing (FRQ 2022-4a)

Plan
[self-paced] Apr 29- MCQ Mock Test
Apr 30 (Sun, 2:30pm) - MCQ Analysis, FRQ2022-4b
May 1 (3.5 hours) - Algorithm-related MCQ and Code writing
May 2 (3.5 hours) - Full-length Mock Test + Analysis

# data[].attributes.body
-Data types: different data types such as int, double and boolean. How much space they take up
-Data types vs objects
-External storage & RAM
-Bit wise representation
-Process of writing code, checking key information and debugging

# data[].attributes.body
-Clarification of Array lists
-ASCII related topics
-operator types and precedence
-special cases in operators such as short circuit (the rule of &&) and type conversion (such as int to double or likewise)
-AP preconditions

# data[].attributes.body
-Learning about objects. Objects have status(data) and behavior (interface).
-Object --> class, method and instance variable. These can be public or private.
-Definition of static (not belonging to a specific object)
-The difference between object and class
-Definition of instance and attribute
-Learning about constructors
-Specific code for writing an object

# data[].attributes.body
-How to use and read methods (putting together the information learned in previous classes)
-Reviewed "this" and "ToString"
-Accessor/Mutator methods
-How to call a method
-voids do nut return anything
-Specific words like overload

# data[].attributes.body
-Overload (repeating names)
-Inheritance (when a class extends another class, the latter taking up some of the values of the former)
-how and when to use "super"
-the purpose of constructors
-Polymorphism (only exists when inheritance and override exists)
-ToStrings

# data[].attributes.body
-Review of ToString() and the definition of "static"
-If constructors don't exist, all primitive types have a default value
-Pass by values
-One java file can only have one public class
-Definition of Scope
-Stack
-Clarifications on how to correctly look at multiple choice questions

# data[].attributes.body
-Stack - 后到先出
-Java is case sensitive (check spellings)
-review of "super" (has the be in the first line)
-overriding and overloading
-Downcasting

# data[].attributes.body
-How to read and analyze AP free response questions
-Answering techniques for FR questions:
-sometimes instead of creating, it's better to update (makes response shorter and easier to read)
-when you write code in a loop, this code is the same every time it's performed (repeated)

# data[].attributes.body
-Review of enhanced for loop and ToString()
-How to create an array + the functions that can be used with arrays (ex: index, length)
-Integer.MIN/MAX_VALUE
-How to test your values (use one even, one odd and zero)
-Arraylists, how to create and use the functions (ex: set, add, get, etc.)

# data[].attributes.body
-concept of composition
-how to look at multiple choice problems: find the relationships between points mentioned (ex: between classes)
-review of polymorphism
-Errors: ConcurrentModificationException
-post conditions in java
-Ascending/Descending order
-Computational complexity; selection & insertion sorting

# data[].attributes.body
-Functions and usage of strings
-Ex: indexOf, compareTo, etc.
-Substrings
-Java quick reference sheet
-Strings are immutable (all accessors)

# data[].attributes.body
-correction of "super" misconception--only needs to be in the first line for constructors
-practicing answering techniques (look at the time after every set period of time)
-math.random review

# data[].attributes.body
-Different types of questions in AP test (ex: general questions, definition questions)
-Learn to find patterns in complicated problems (ex: recursion) by bringing in small numbers like 1 and 2 etc.
-Review of Array
-Code writing practice - double check response questions to find hidden information in case missed

# data[].attributes.body
-Code writing techniques (enhanced for loop review)
-How to look at complicated questions (Interlanguage)
-Arraylist & Array writing

# data[].attributes.body
-Problem decomposition ( taking complicated questions and breaking them down into smaller parts. Ex: two dimensional arrays in FRQ questions)

# data[].attributes.body
-Writing arrays (being more familiar with the for loops)
-How to take care of multiple choice questions faster
-Big programs are prone to have bugs
-"break" and "return"

# data[].attributes.body
-2 dimensional arrays (how to write, how they work etc.)
-FRQ code writing practice: how to distribute time between the four questions
-the difference between array and arraylist review (arraylist uses set)

# data[].attributes.body
Mock Test Drills

What was especially well done:

MCQ - you were able to look at all problems and have an overall picture.

MCQ - problems with longer code no longer intimidate you.

FRQ - when facing unfamiliar settings, you were quite resilient and confident

# data[].attributes.body
-AP CSP Preview with examples of Creative Development tasks

# data[].attributes.body
-Looked at FRQ question from AP-CSA test
-Downloaded VSP
-Learned basics of Atcoder and attempted to participate in one of the questions

# data[].attributes.body
Today we had a bridge-the-gap lesson about computer science principles. We first reviewed the big ideas and then worked on sampled exam problems, with focus on the part that is not overlapping with AP CS A.

We talked about phishing, digital divide, multi-factor authentication, metadata and data privacy, RSS, parallelisms in computing. Hope this helps to bridge the gap between the big ideas and real-life experiences.

Enjoy the debate training camp!

# data[].attributes.body
* Discussion of Course Load. This year AP English LC + AP Macroecon + AP CS A/P + Biology / English / Precalculus.

* Review of FRQ 2023 - 3(a). You remembered a lot!

* Course plan (to revisit in Oct):
** Oct - Jan: AP CSP (with Python), starting with 2 lectures / week
** Feb - May: AP CSA

# data[].attributes.body
AP CSP Overview

Updates on creative performance tasks

Finish sample questions

Course logistics

# data[].attributes.body
-Diagnosis test practice

-learning about the different types of MCQs in CSP

-The bit system

-Using common sense in certain questions

# data[].attributes.body
-Backup / Privacy (Most important part!!)

-Definition of metadata (small pieces of information that does not include content) and practice related to

-ETL process (extract -> transform -> load)

-Asymmetric Encryption

# data[].attributes.body
-Digital data (can be collapsed into 0s and 1s) vs Analog Data [can be compared to continuous / discrete math]

-做题技巧--how long to focus on a question

-Abstractions in CSP (ex: x mod 2)

# data[].attributes.body
-Modularization

-Programming library (pre-written code)

-Sequential search (search 1 by 1)

-Binary search (only words for sorted) start at half and narrow down (left+right/2)

-For worst case scenario, sequential search (n) and binary search (log n+1 which is faster)

-Coding review and practice

# data[].attributes.body
-The internet transfers data between end hosts

-interoperability of the internet

-Data (Payload & header)

-Network resources are shared between end hosts--Packages vs Circuits, Reservations vs best effort

-the concept of HTTP, IP, TCP etc

# data[].attributes.body
-Tim Berners-Lee (inventor of world wide web, html, url and http)

-Digital divide

-Asymmetric encryption, public & private key

-mentions of commercial use, creative commons license

-Coding review

# data[].attributes.body
-Definition of program, program statement and code segments

-Development process overview of the creative task

-Coding practice and review

# data[].attributes.body
-coding project practice

-Looking at the task from a project / creative performance point of view

-Dividing the code into sections: input, procedure, output

-Testing tips: use System.out.print to identify mistakes and fix them

-Important: understand the task properly before starting to avoid unnecessary trouble

# data[].attributes.body
-Code optimization process (testing)

-Practice answering project questions

-Adding user instructions--using appropriate wording for the target audience

# data[].attributes.body
-Detailed overview of the creative project guidelines and question types

-10 questions from the Official 2018 CSP test, review of concepts & 做题方法

-Iterations, logic/relational operators and other definition checks

# data[].attributes.body
-Running creative project & uploading, the process of finishing up / final checking

-10 Practice test questions

# data[].attributes.body
-Running creative project & uploading, the process of finishing up / final checking

-10 Practice test questions

# data[].attributes.body
-Binary encoding

-进制转换（十六进制，二进制）etc, bit system

-Review of "and", "or", and related boolean terminology

-Defintion of "undecideable problem"

# data[].attributes.body
Symmetric / Asymmetric Encryption ( one lock vs two locks, public and private keys)

Lossy / lossless transformation small review

Review of scattered terms

Abstractions (prodcedural and data abstractions)

# data[].attributes.body
-Test techniques ( reading options first, reading from botton to top, etc )

-Binary addition

-Definition of documenting programs

-Sequencing, Selection, Iteration

-Unferflow / Overflow / Roundoff error

# data[].attributes.body
Logic, Syntax and Runtime errors

How to describe a code segment, creative project FRQ practice and answering techniques

Infinite Loops (avoid runtime error)

Logic Operators vs Relational Operators

Importance: Input and Output

# data[].attributes.body
-Introduction to competitive programming

-A simulation problem

# data[].attributes.body
-Coding practice

-analyzing question prompts, listing different solutions to solve instead of just one

-Review of string usage, charAt (i)

-Testing with number examples provided through coding progress

# data[].attributes.body
-Coding practice (Mixing milk)

-Finding / testing out patterns in the question

-How to store input

-Equilibrium, series