Difference between revisions of "IB Computer Science 1"

From WLCS
 
(820 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Wednesday - Thursday (4/5/17 - 4/6/17) ==
+
== [[IBCS1 - Archives]] ==
'''Agenda:'''
 
* Introduction to Objects Review
 
** Emoji class walk-through
 
* Object & Class Rules
 
*# Separate classes in separate tabs or files
 
*# Capitalize class names (e.g. Ball, Emoji)
 
*# Remember to indent!
 
*# Order of sections:
 
*#* attributes
 
*#* constructors
 
*#* methods
 
*# All class constructors and methods can access attributes
 
*# 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)
 
* Default constructor vs "specific" constructors
 
** [https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html Oracle Java Constructor Tutorial]
 
* Ping w/ Objects
 
*# Convert your Ping game so that it uses objects
 
*# Create a new sketch named PingWithObjects
 
*# Copy and paste your Ball class into a new tab in the sketch (separate classes should be in separate tabs)
 
*# Create a new class in a new tab named Paddle
 
*# Move the Ping paddle attribute variables to the Paddle class
 
*# Create a default constructor in the Paddle class
 
*# Add methods moveLeft() and moveRight() to the Paddle class
 
*# Complete and demo the PingWithObjects conversion
 
 
 
== Monday - Tuesday (4/3/17 - 4/4/17) ==
 
'''Agenda:'''
 
* Complete and demo [https://docs.google.com/document/d/1ZoXB12Md1zbG_liXn1yfIDosZ2p9i2ZqqsU4Hx8WV5A/edit?usp=sharing OOP: My First Object]
 
* Challenge: Create the Multiple Bouncing Balls using an array of Ball objects
 
* Ping w/ Objects
 
*# Convert your Ping game so that it uses objects
 
*# Create a new sketch named PingWithObjects
 
*# Copy and paste your Ball class into a new tab in the sketch (separate classes should be in separate tabs)
 
*# Create a new class in a new tab named Paddle
 
*# Move the Ping paddle attribute variables to the Paddle class
 
*# Create a default constructor in the Paddle class
 
*# Add methods moveLeft() and moveRight() to the Paddle class
 
*# Complete and demo the PingWithObjects conversion
 
 
 
== Thursday - Friday (3/30/17 - 3/31/17) ==
 
'''Agenda:'''
 
* Demo!
 
** Pong w/ arrays and multiple balls
 
** 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) ==
 
'''Agenda:'''
 
* Complete and demo Pong w/ arrays and multiple balls
 
* Complete and demo Gravity Launcher w/ arrays and multiple balls
 
 
 
== Tuesday - Wednesday (3/21/17 - 3/22/17) ==
 
'''Agenda:'''
 
* Demo missing assignments
 
** [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/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) ==
 
'''Agenda:'''
 
* Demo missing assignments
 
** [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)]
 
* Demo Java converted [https://docs.google.com/document/d/1g5aP7hBogJYCDSdURtG0SfG3CY-q7aLtYyGilZaQcSM/edit?usp=sharing Media: Loading & Playing Sounds]
 
* Arrays in Java (~Lists)
 
** [[Media:JavaArrays_Basic.ppt]]
 
** Use of the [] brackets
 
** Explicit declaration
 
** Implicit declaration
 
*** Primitive types
 
*** Complex types
 
** Multiple bouncing balls - create a version of the bouncing balls program in Java that uses arrays and has multiple balls moving on the screen
 
* 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
 
 
 
== Tuesday (3/14/17) ==
 
* Winter Storm Stella Snow Day
 
 
 
== Friday - Monday (3/10/17 - 3/13/17) ==
 
'''Agenda:'''
 
* Job opportunity w/ Mrs. Carolyn Carlson (non-profit consulting)
 
* Convert and demo 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)]
 
* 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) ==
 
'''Agenda:'''
 
* [http://arlingtonva.libcal.com/event/3006500 Teen Tech Help @ Central Library, Thursday (3/9/17), 3:30-5pm]
 
* 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) ==
 
'''Agenda:'''
 
* [http://arlingtonva.libcal.com/event/3006500 Teen Tech Help @ Central Library, Thursday (3/9/17), 3:30-5pm]
 
* Job opportunity w/ Mrs. Carolyn Carlson (non-profit consulting)
 
* Python -> Java
 
** Python vs. Java Reference
 
** Java syntax differences
 
* Convert the following Processing labs from Python to Java
 
** [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) ==
 
'''Agenda:'''
 
* [http://arlingtonva.libcal.com/event/3006500 Teen Tech Help @ Central Library, Thursday (3/9/17), 3:30-5pm]
 
** Volunteer to help adults solve their tech problems
 
** Easy service hours!
 
** Mr. Bui will provide pizza
 
* Job opportunity w/ Mrs. Carolyn Carlson (non-profit consulting)
 
** Part-time paid opportunity through her firm
 
** Need for MS Excel skills, with occasional Adobe Photoshop
 
** Prepare a resume and e-mail it to Mr. Bui to apply.  He will forward all resumes to Mrs. Carlson
 
* File Reading/Writing (Input/Output) Review:
 
** [https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files Python File Methods/Functions]
 
** [https://docs.python.org/3.6/library/stdtypes.html#string-methods Python String Methods/Functions]
 
 
 
* 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 ==
 
* [[IBCS1 - 1617 - February]]
 
* [[IBCS1 - 1617 - January]]
 
* [[IBCS1 - 1617 - December]]
 
* [[IBCS1 - 1617 - November]]
 
* [[IBCS1 - 1617 - October]]
 
* [[IBCS1 - 1617 - September]]
 
* [[IBCS1 - 1516]]
 

Latest revision as of 08:28, 13 September 2023