Difference between revisions of "IB Computer Science 1"

From WLCS
(46 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Wednesday - Thursday (4/5/17 - 4/6/17) ==
+
== Friday - Wednesday (6/9/17 - 6/14/17) ==
 
'''Agenda:'''
 
'''Agenda:'''
* Introduction to Objects Review
+
* Turn in final exam exemption slips
** Emoji class walk-through
+
* Turn in any missing assignments
* Object & Class Rules
+
** Completed Breakout
*# Separate classes in separate tabs or files
+
** Flowcharts
*# Capitalize class names (e.g. Ball, Emoji)
+
** IA: Criterion A
*# Remember to indent!
+
* Work on anything productive
*# Order of sections:
+
** You could even finish your summer assignment before the summer!
*#* attributes
+
* Final Exam Review Guide
*#* constructors
+
** Review everything on the [https://docs.google.com/a/apsva.us/document/d/1NTBIKn4uxQmuIKDXWoQDboF_YNkCBaKrz2-gjf3dTxA/edit?usp=sharing Python vs. Java Reference] in your Google Drive
*#* methods
+
** Values, types, variables
*# All class constructors and methods can access attributes
+
*** [[Media:ValuesTypesVariables.ppt]]
*# Use common sense to organize which code happens in which methods (i.e. each method has a specific purpose, and it should only worry about that purpose)
+
** Math operations
* Default constructor vs "specific" constructors
+
** Logical and comparison operations
* Ping w/ Objects
+
*** [[Media:BooleanLogic.ppt]]
*# Convert your Ping game so that it uses objects
+
*** [[Logical operators assignment]]
*# Create a new sketch named PingWithObjects
+
*** [[Comparison operators assignment]]
*# Copy and paste your Ball class into a new tab in the sketch (separate classes should be in separate tabs)
+
** Functions (Methods)
*# Create a new class in a new tab named Paddle
+
*** [[Media:JavaMethods.pptx]]
*# Move the Ping paddle attribute variables to the Paddle class
+
*** function definition
*# Create a default constructor in the Paddle class
+
*** function header
*# Add methods moveLeft() and moveRight() to the Paddle class
+
*** function body
*# Complete and demo the PingWithObjects conversion
+
*** function call
 +
*** function parameters
 +
** if-statements
 +
** if-else statements
 +
** while loops
 +
** for loops
 +
** strings
 +
*** [[Media:JavaStrings_Basic.ppt]]
 +
** arrays
 +
*** [[Media:JavaArrays_Basic.ppt]]
  
== Monday - Tuesday (4/3/17 - 4/4/17) ==
+
== Monday - Thursday (6/5/17 - 6/8/17) ==
 
'''Agenda:'''
 
'''Agenda:'''
* Complete and demo [https://docs.google.com/document/d/1ZoXB12Md1zbG_liXn1yfIDosZ2p9i2ZqqsU4Hx8WV5A/edit?usp=sharing OOP: My First Object]
+
* IB Summer Assignment will be working on IA: Criterion B
* Challenge: Create the Multiple Bouncing Balls using an array of Ball objects
+
** [[IBCS2 Summer Assignment]]
* Ping w/ Objects
+
* Final exam exemption slips due by June 12th (or asap)
*# Convert your Ping game so that it uses objects
+
* Rock-Paper-Scissors Flowchart Assignment
*# Create a new sketch named PingWithObjects
+
** Flowcharts - [[Media:Flowcharts.ppt]]
*# Copy and paste your Ball class into a new tab in the sketch (separate classes should be in separate tabs)
+
** Create a flowchart for the Rock-Paper-Scissors game using [https://www.draw.io/ draw.io]
*# Create a new class in a new tab named Paddle
+
** Submit a pdf of your flowchart via Google Classroom (due Wednesday (6/7/17))  
*# Move the Ping paddle attribute variables to the Paddle class
+
* Complete and demo Breakout
*# Create a default constructor in the Paddle class
+
* Work on Internal Assessment
*# Add methods moveLeft() and moveRight() to the Paddle class
 
*# Complete and demo the PingWithObjects conversion
 
  
== Thursday - Friday (3/30/17 - 3/31/17) ==
+
== Thursday - Friday (6/1/17 - 6/2/17) ==
 
'''Agenda:'''
 
'''Agenda:'''
* Demo!
+
* Complete and demo Breakout
** Pong w/ arrays and multiple balls
+
* Work on Internal Assessment
** Gravity Launcher w/ arrays and multiple balls
 
* Introduction to Object-Oriented Programming (OOP)
 
** History! ... Xerox PARC ... Apple ... Microsoft
 
*** [https://www.youtube.com/watch?v=J33pVRdxWbw Xerox PARC Excerpt from "Triumph of the Nerds"]
 
** Complete  [https://docs.google.com/document/d/1ZoXB12Md1zbG_liXn1yfIDosZ2p9i2ZqqsU4Hx8WV5A/edit?usp=sharing OOP: My First Object]
 
  
== Thursday - Wednesday (3/23/17 - 3/29/17) ==
+
== Tuesday - Wednesday (5/30/17 - 5/31/17) ==
 
'''Agenda:'''
 
'''Agenda:'''
* Complete and demo Pong w/ arrays and multiple balls
+
* Complete and demo Breakout
* Complete and demo Gravity Launcher w/ arrays and multiple balls
+
* Work on Internal Assessment
  
== Tuesday - Wednesday (3/21/17 - 3/22/17) ==
+
== Monday (5/29/17) ==
 +
* Memorial Day
 +
 
 +
== Friday (5/26/17) ==
 
'''Agenda:'''
 
'''Agenda:'''
* Demo missing assignments
+
* Java 20Q Assessment
** [https://docs.google.com/document/d/1RCVlD8xOl4mzuIm2kxQUtyccOOJa_6bBFVa3S57Sj_E/edit?usp=sharing Project: Simple Paint]
+
* Complete Breakout
** [https://docs.google.com/document/d/1xRSA_Ti8l5002jcAftcUtCTdujCojghzoTpUZwJvHQ4/edit?usp=sharing Animation: Bouncing Ball]
+
* Turn in Internal Assessment: Criterion A: Planning
** [https://docs.google.com/document/d/1NyUifJyiIxKupLXLLlbIcLB4SUCB_mLQs4GyhSaMSIw/edit?usp=sharing Project: Ping (1-player Pong)]
+
** E-mail Mr. Bui if you need an extension
** [https://docs.google.com/document/d/1g5aP7hBogJYCDSdURtG0SfG3CY-q7aLtYyGilZaQcSM/edit?usp=sharing Media: Loading & Playing Sounds]
 
* Convert [https://docs.google.com/document/d/1VGe4BcieqEgXfBAW_kA6gDd5a243rIItHGfV9jXLRfo/edit?usp=sharing Project: Pong (Mouse vs Keyboard)] to Java AND use arrays so that there are multiple balls on the screen
 
** You must change the gameplay!  If a ball passes a player's paddle, then give that person a point.  When there are no more balls on the screen, then the player with fewer points wins.
 
** Note: If you do not have the Python code, then just get a copy from somebody who does
 
** key is a char, so you need to use single quotes
 
** hit() function must be edited to accept an input parameter i
 
* Convert [https://docs.google.com/document/d/1wCZWJbwxWv6xqrbuQOKC8jgqdNdVUzSKE4L6UC-yX2s/edit?usp=sharing Animation: Gravity Ball with Mouse Launcher] to Java AND use arrays so that there are multiple balls (of different sizes) launched
 
** Note: If you do not have the Python code, then just get a copy from somebody who does
 
** Challenge: Give each ball a different radius. Correlate the initial energy for each particular ball to the radius
 
  
== Wednesday - Monday (3/15/17 - 3/20/17) ==
+
== Friday - Thursday (5/19/17 - 5/25/17) ==
 
'''Agenda:'''
 
'''Agenda:'''
* Demo missing assignments
+
* Assignments thus far:
** [https://docs.google.com/document/d/1RCVlD8xOl4mzuIm2kxQUtyccOOJa_6bBFVa3S57Sj_E/edit?usp=sharing Project: Simple Paint]
+
** Emoji
** [https://docs.google.com/document/d/1xRSA_Ti8l5002jcAftcUtCTdujCojghzoTpUZwJvHQ4/edit?usp=sharing Animation: Bouncing Ball]
+
** Ping w/ Objects (Classes)
** [https://docs.google.com/document/d/1NyUifJyiIxKupLXLLlbIcLB4SUCB_mLQs4GyhSaMSIw/edit?usp=sharing Project: Ping (1-player Pong)]
+
** Preliminary Breakout (only needs bottom brick collision)
* Demo Java converted [https://docs.google.com/document/d/1g5aP7hBogJYCDSdURtG0SfG3CY-q7aLtYyGilZaQcSM/edit?usp=sharing Media: Loading & Playing Sounds]
+
* Current assignment:
* Arrays in Java (~Lists)
+
** Breakout w/ collisions on left, right, and tops of bricks
** [[Media:JavaArrays_Basic.ppt]]
+
** Multiple lives
** Use of the [] brackets
+
** Game over when there are no more lives
** Explicit declaration
+
** Win screen when there are no more bricks
** Implicit declaration
+
* Internal Assessment: Criterion A: Planning
*** Primitive types
+
** [[Internal Assessment]]
*** Complex types
+
** [[Media:IBCS_InternalAssessmentChecklist.doc]]
** Multiple bouncing balls - create a version of the bouncing balls program in Java that uses arrays and has multiple balls moving on the screen
+
** [http://ibpublishing.ibo.org/live-exist/rest/app/tsm.xql?doc=d_4_comsc_tsm_1201_1_e&part=4&chapter=5 IA Criteria Rubrics]
* Convert [https://docs.google.com/document/d/1VGe4BcieqEgXfBAW_kA6gDd5a243rIItHGfV9jXLRfo/edit?usp=sharing Project: Pong (Mouse vs Keyboard)] to Java AND use arrays so that there are multiple balls on the screen
+
** [https://ibpublishing.ibo.org/live-exist/rest/app/tsm.xql?doc=d_4_comsc_tsm_1201_2_e&part=4&chapter=7 IA Examples]
** You must change the gameplay!  If a ball passes a player's paddle, then give that person a point.  When there are no more balls on the screen, then the player with fewer points wins.
+
** Criterion A Overview - due '''Friday (5/26/17)''' via Google Classroom
** Note: If you do not have the Python code, then just get a copy from somebody who does
+
*** Explicitly state your client
** key is a char, so you need to use single quotes
+
*** Explicitly state your advisor
** hit() function must be edited to accept an input parameter i
+
*** Define and describe the problem or unanswered question (175-250 words)
* Convert [https://docs.google.com/document/d/1wCZWJbwxWv6xqrbuQOKC8jgqdNdVUzSKE4L6UC-yX2s/edit?usp=sharing Animation: Gravity Ball with Mouse Launcher] to Java AND use arrays so that there are multiple balls (of different sizes) launched
+
*** Explicitly reference to documentation or evidence that a client was consulted (e.g. interview notes, transcription, or e-mail thread)
** Note: If you do not have the Python code, then just get a copy from somebody who does
+
*** Justify your proposed product (175-250 words)
 +
*** List (bulleted sentences/phrases) your success criteria (functionality requirements)
 +
* Workplace Readiness Skills Assessment - '''Date TBD'''
 +
** Common-sense workplace questions
 +
** 1 hour - 100 multiple choice
 +
** [https://www.quia.com/quiz/1865016.html Practice WRS Test]
  
== Tuesday (3/14/17) ==
+
== Monday - Thursday (5/15/17 - 5/18/17) ==
* Winter Storm Stella Snow Day
+
'''Agenda:'''
 +
* Complete the [http://nova.mce.cc/ NVCC Dual Enrollment Evaluation]
 +
* Complete [https://docs.google.com/forms/d/1dCcfJnCaczrBzeQoagJsZMZxidRFEdI-s4E6h_DJqAM/viewform End-of-Course Survey]
 +
** Summary results will be shown when all students have finished
 +
* Complete and demonstrate the preliminary Breakout game with the Brick[] array
 +
** Displays bricks, paddle, and ball
 +
** Ball collides with both paddles and bottom of bricks
 +
** Bricks disappear upon collision
 +
* Once you have completed and demonstrated the preliminary Breakout game, continue implementing the following features:
 +
** Collisions with left, right, and tops of bricks
 +
** Multiple lives
 +
** Game over when there are no more lives
 +
** Win screen when there are no more bricks
  
== Friday - Monday (3/10/17 - 3/13/17) ==
+
== Thursday - Friday (5/11/17 - 5/12/17) ==
 
'''Agenda:'''
 
'''Agenda:'''
* Job opportunity w/ Mrs. Carolyn Carlson (non-profit consulting)
+
* Complete the [http://nova.mce.cc/ NVCC Dual Enrollment Evaluation]
* Convert and demo your Python code for the following programs to Java:
+
* Complete and demonstrate the preliminary Breakout game with the Brick[] array
** [https://docs.google.com/document/d/1RCVlD8xOl4mzuIm2kxQUtyccOOJa_6bBFVa3S57Sj_E/edit?usp=sharing Project: Simple Paint]
+
** Displays bricks, paddle, and ball
** [https://docs.google.com/document/d/1xRSA_Ti8l5002jcAftcUtCTdujCojghzoTpUZwJvHQ4/edit?usp=sharing Animation: Bouncing Ball]
+
** Ball collides with both paddles and bricks
** [https://docs.google.com/document/d/1NyUifJyiIxKupLXLLlbIcLB4SUCB_mLQs4GyhSaMSIw/edit?usp=sharing Project: Ping (1-player Pong)]
+
** Bricks disappear upon collision
* Complex Java Types
 
** Declaration of complex types and objects
 
** Object instantiation w/ '''new''' keyword
 
** Convert as a class:  [https://docs.google.com/document/d/13zLTnm_mxURSFxEWJ24MUBOAK1Y6jbfk8NxL-wS_U7g/edit?usp=sharing Media: Loading & Displaying Images]
 
** Convert yourself: [https://docs.google.com/document/d/1g5aP7hBogJYCDSdURtG0SfG3CY-q7aLtYyGilZaQcSM/edit?usp=sharing Media: Loading & Playing Sounds]
 
  
== Wednesday - Thursday (3/8/17 - 3/9/17) ==
+
== Monday - Wednesday (5/8/17 - 5/10/17) ==
 
'''Agenda:'''
 
'''Agenda:'''
* [http://arlingtonva.libcal.com/event/3006500 Teen Tech Help @ Central Library, Thursday (3/9/17), 3:30-5pm]
+
* Complete the preliminary Breakout game with the Brick[] array
* Job opportunity w/ Mrs. Carolyn Carlson (non-profit consulting)
 
* Python -> Java Review
 
** Add looping (while, for) to Java notes
 
* Convert your Python code for the following programs to Java:
 
**[https://docs.google.com/document/d/1RCVlD8xOl4mzuIm2kxQUtyccOOJa_6bBFVa3S57Sj_E/edit?usp=sharing Project: Simple Paint]
 
** [https://docs.google.com/document/d/1xRSA_Ti8l5002jcAftcUtCTdujCojghzoTpUZwJvHQ4/edit?usp=sharing Animation: Bouncing Ball]
 
** [https://docs.google.com/document/d/1NyUifJyiIxKupLXLLlbIcLB4SUCB_mLQs4GyhSaMSIw/edit?usp=sharing Project: Ping (1-player Pong)]
 
** [https://docs.google.com/document/d/13zLTnm_mxURSFxEWJ24MUBOAK1Y6jbfk8NxL-wS_U7g/edit?usp=sharing Media: Loading & Displaying Images]
 
*** Hint: Can you determine the type names for the image variables?
 
** [https://docs.google.com/document/d/1g5aP7hBogJYCDSdURtG0SfG3CY-q7aLtYyGilZaQcSM/edit?usp=sharing Media: Loading & Playing Sounds]
 
*** Hint: Can you determine the type names for the sound variables?
 
  
== Monday - Tuesday (3/6/17 - 3/7/17) ==
+
== Thursday - Friday (5/4/17 - 5/5/17) ==
 
'''Agenda:'''
 
'''Agenda:'''
* [http://arlingtonva.libcal.com/event/3006500 Teen Tech Help @ Central Library, Thursday (3/9/17), 3:30-5pm]
+
* Interim grades are posting. Assignments thus far:
* Job opportunity w/ Mrs. Carolyn Carlson (non-profit consulting)
+
** Emoji
* Python -> Java
+
** Ping w/ Classes/Objects
** Python vs. Java Reference
+
** Breakout/BrickBreaker Warmup
** Java syntax differences
+
** Preliminary Breakout w/ Brick[] (array)
* Convert the following Processing labs from Python to Java
+
* Work on Breakout w/ Brick[] array
** [https://docs.google.com/document/d/1-TyjK48PtO_dgBDLRxKOk8zvOReC_A5196skWzCI0wk/edit?usp=sharing Processing Lab 1: My First Sketch]
 
** [https://docs.google.com/document/d/1Rlt_UvfeGlMgN3upOR4rF9-M9w72CfH3aJbot_6_Tk0/edit?usp=sharing Processing House Assignment]
 
** [https://docs.google.com/document/d/1yxestu4zbLljylbwmSUnskOcwiTnwf-wOTFvyHF1xoo/edit?usp=sharing Processing My First Animation]
 
** [https://docs.google.com/document/d/1RCVlD8xOl4mzuIm2kxQUtyccOOJa_6bBFVa3S57Sj_E/edit?usp=sharing Processing Project: Simple Paint]
 
*** You will need to complete and demo Simple Paint's conversion for credit
 
** [https://docs.google.com/document/d/1xRSA_Ti8l5002jcAftcUtCTdujCojghzoTpUZwJvHQ4/edit?usp=sharing Animation: Bouncing Ball]
 
*** You will need to complete and demo Bouncing Ball's conversion for credit
 
  
== Wednesday - Friday (3/1/17 - 3/3/17) ==
+
== Tuesday - Wednesday (5/2/17 - 5/3/17) ==
 
'''Agenda:'''
 
'''Agenda:'''
* [http://arlingtonva.libcal.com/event/3006500 Teen Tech Help @ Central Library, Thursday (3/9/17), 3:30-5pm]
+
* What you should have as of now:
** Volunteer to help adults solve their tech problems
+
** A BrickClassTest that defines a Brick class and declares and sets up a Brick[] (array)
** Easy service hours!
+
** The draw() should loop through the Brick[] and display each brick
** Mr. Bui will provide pizza
+
* Today, you should:
* Job opportunity w/ Mrs. Carolyn Carlson (non-profit consulting)
+
*# Create a new sketch named BrickBreaker or Breakout
** Part-time paid opportunity through her firm
+
*# Copy over the Brick class and its setup and display code
** Need for MS Excel skills, with occasional Adobe Photoshop
+
*# Copy over your Ball and Paddle from Ping
** Prepare a resume and e-mail it to Mr. Bui to apply.  He will forward all resumes to Mrs. Carlson
+
*# Go through the code and clean it up, making any necessary changes
* File Reading/Writing (Input/Output) Review:
+
*# Add a new function named checkBrickBottomCollision(Brick br, Ball ba)
** [https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files Python File Methods/Functions]
+
*#* It should check if a Ball ba collides with a Brick br's bottom edge, return true and false accordingly
** [https://docs.python.org/3.6/library/stdtypes.html#string-methods Python String Methods/Functions]
+
* Demonstrate your preliminary BrickBreaker/Breakout game for credit
 
 
* Complete the File R/W (I/O) Exercises:
 
*# Read a file with first and last names of people. Extract all their initials, such that first and last initials are combined per person (Paul Bui -> PB). Write/Output that list of initials to a file
 
*# Write a program that generates a textfile with 10000 random numbers from 0-100
 
*# Read a file with 10000 random numbers from 0 to 100.  Print out the frequency of each of the numbers (Hint: Use a list to track the frequencies)
 
  
 
== Archives ==
 
== Archives ==
 +
* [[IBCS1 - 1617 - April]]
 +
* [[IBCS1 - 1617 - March]]
 
* [[IBCS1 - 1617 - February]]
 
* [[IBCS1 - 1617 - February]]
 
* [[IBCS1 - 1617 - January]]
 
* [[IBCS1 - 1617 - January]]

Revision as of 08:44, 12 June 2017

Friday - Wednesday (6/9/17 - 6/14/17)

Agenda:

Monday - Thursday (6/5/17 - 6/8/17)

Agenda:

  • IB Summer Assignment will be working on IA: Criterion B
  • Final exam exemption slips due by June 12th (or asap)
  • Rock-Paper-Scissors Flowchart Assignment
    • Flowcharts - Media:Flowcharts.ppt
    • Create a flowchart for the Rock-Paper-Scissors game using draw.io
    • Submit a pdf of your flowchart via Google Classroom (due Wednesday (6/7/17))
  • Complete and demo Breakout
  • Work on Internal Assessment

Thursday - Friday (6/1/17 - 6/2/17)

Agenda:

  • Complete and demo Breakout
  • Work on Internal Assessment

Tuesday - Wednesday (5/30/17 - 5/31/17)

Agenda:

  • Complete and demo Breakout
  • Work on Internal Assessment

Monday (5/29/17)

  • Memorial Day

Friday (5/26/17)

Agenda:

  • Java 20Q Assessment
  • Complete Breakout
  • Turn in Internal Assessment: Criterion A: Planning
    • E-mail Mr. Bui if you need an extension

Friday - Thursday (5/19/17 - 5/25/17)

Agenda:

  • Assignments thus far:
    • Emoji
    • Ping w/ Objects (Classes)
    • Preliminary Breakout (only needs bottom brick collision)
  • Current assignment:
    • Breakout w/ collisions on left, right, and tops of bricks
    • Multiple lives
    • Game over when there are no more lives
    • Win screen when there are no more bricks
  • Internal Assessment: Criterion A: Planning
    • Internal Assessment
    • Media:IBCS_InternalAssessmentChecklist.doc
    • IA Criteria Rubrics
    • IA Examples
    • Criterion A Overview - due Friday (5/26/17) via Google Classroom
      • Explicitly state your client
      • Explicitly state your advisor
      • Define and describe the problem or unanswered question (175-250 words)
      • Explicitly reference to documentation or evidence that a client was consulted (e.g. interview notes, transcription, or e-mail thread)
      • Justify your proposed product (175-250 words)
      • List (bulleted sentences/phrases) your success criteria (functionality requirements)
  • Workplace Readiness Skills Assessment - Date TBD

Monday - Thursday (5/15/17 - 5/18/17)

Agenda:

  • Complete the NVCC Dual Enrollment Evaluation
  • Complete End-of-Course Survey
    • Summary results will be shown when all students have finished
  • Complete and demonstrate the preliminary Breakout game with the Brick[] array
    • Displays bricks, paddle, and ball
    • Ball collides with both paddles and bottom of bricks
    • Bricks disappear upon collision
  • Once you have completed and demonstrated the preliminary Breakout game, continue implementing the following features:
    • Collisions with left, right, and tops of bricks
    • Multiple lives
    • Game over when there are no more lives
    • Win screen when there are no more bricks

Thursday - Friday (5/11/17 - 5/12/17)

Agenda:

  • Complete the NVCC Dual Enrollment Evaluation
  • Complete and demonstrate the preliminary Breakout game with the Brick[] array
    • Displays bricks, paddle, and ball
    • Ball collides with both paddles and bricks
    • Bricks disappear upon collision

Monday - Wednesday (5/8/17 - 5/10/17)

Agenda:

  • Complete the preliminary Breakout game with the Brick[] array

Thursday - Friday (5/4/17 - 5/5/17)

Agenda:

  • Interim grades are posting. Assignments thus far:
    • Emoji
    • Ping w/ Classes/Objects
    • Breakout/BrickBreaker Warmup
    • Preliminary Breakout w/ Brick[] (array)
  • Work on Breakout w/ Brick[] array

Tuesday - Wednesday (5/2/17 - 5/3/17)

Agenda:

  • What you should have as of now:
    • A BrickClassTest that defines a Brick class and declares and sets up a Brick[] (array)
    • The draw() should loop through the Brick[] and display each brick
  • Today, you should:
    1. Create a new sketch named BrickBreaker or Breakout
    2. Copy over the Brick class and its setup and display code
    3. Copy over your Ball and Paddle from Ping
    4. Go through the code and clean it up, making any necessary changes
    5. Add a new function named checkBrickBottomCollision(Brick br, Ball ba)
      • It should check if a Ball ba collides with a Brick br's bottom edge, return true and false accordingly
  • Demonstrate your preliminary BrickBreaker/Breakout game for credit

Archives