Difference between revisions of "IB Computer Science II"

From WLCS
(Redirected page to IB Computer Science 2)
 
(42 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Monday (3/15/10) ==
+
#REDIRECT [[IB Computer Science 2]]
* Dossier - Conclusion due today
 
* Dossier - User Manual (User Documentation) due Wednesday (3/17/10)
 
* COMPLETED Dossier due next Tuesday (3/23/10)
 
 
 
== Tuesday - Thursday (3/9/10 - 3/11/10) ==
 
'''Warmup:'''
 
* An automated robot is used to cut shapes from steel sheets. If the robot's cutting blade becomes both hot and blunt the robot must stop so that the blade can cool and be resharpened. Sensors S1 (hot state) and S2 (blunt state) are attached to the blade to detect these states. Water from a container is used to keep the blade cool during cutting. If the water level falls below a certain point a sensor S3 detects this state and the robot stops irrespective of the other states. A logic circuit is required to control the robot so that it stops cutting when the appropriate states occur.
 
* Create the Boolean table that represents the above logic
 
 
 
'''Agenda:'''
 
* Turn in Dossier - Test Output
 
* Complete Dossiers!...NOW
 
* Dossier - Conclusion due Monday (3/15/10)
 
** [[Media:CriterionB3_conclusion.doc]]
 
 
 
== Friday (3/5/10) ==
 
* Work on your dossiers like crazy.
 
* ALL screenshots with captions are due next Tuesday (3/9/10)
 
** [[Media:CriterionB3_testOutput.doc]]
 
 
 
== Wednesday (3/3/10) ==
 
'''Warmup:'''
 
* Gate diagrams
 
 
 
'''Agenda:'''
 
* What the heck is a transistor?
 
* Handling Errors with try & catch
 
** [[Media:TryCatchDemo.java]]
 
* ALL screenshots with captions are due next Tuesday (3/9/10)
 
** [[Media:CriterionB3_testOutput.doc]]
 
 
 
== Monday (3/1/10) ==
 
'''Warmup:'''
 
* Draw the gate diagram for Z = A+B*C
 
* Draw the gate diagram for Z = AB + B'C
 
* Draw the gate diagram for Z = (A+B)'C
 
 
 
'''Agenda:'''
 
* Turn in your Success of Program
 
* Introduction to Logic Gates
 
* ALL screenshots with captions are due next Tuesday (3/9/10)
 
** [[Media:CriterionB3_testOutput.doc]]
 
 
 
== Thursday (2/25/10) ==
 
'''Agenda:'''
 
* Boolean expressions quiz
 
* Turn in Usability and Handling Errors sections
 
* Extra Credit: Sign up and help out with [http://tatalonline.blogspot.com/ Gotta Gadget]
 
** March 9 from 4:30-6:30 at Central Library
 
* Work on dossier - File I/O
 
* Dossier - Success of Program due Monday (3/1/10)
 
** [[Media:CriterionB3_successOfProgram.doc]]
 
 
 
== Tuesday (2/23/10) ==
 
'''Warmup:'''
 
* Add the two binary numbers together 00001111 and 00010101
 
* Write out the 8-bit sign magnitude binary representation of -5?
 
* Write out the 8-bit sign magnitude binary representation of -25?
 
 
 
'''Agenda:'''
 
* Review Boolean expressions
 
* On non-scratch paper, complete the [[Boolean expression exercises]]
 
* Go over #1-5
 
* Go over #6-10
 
* Go over #11-15
 
* Quiz on Boolean expressions Thursday (2/25/10)
 
* Dossier - Usability & Handling Errors due Thursday (2/25/10)
 
 
 
== Friday (2/19/10) ==
 
'''Warmup:'''
 
* Cram for Quiz
 
 
 
'''Agenda:'''
 
* [[Media:AnalogDigital.ppt]] and [[Media:Errors.ppt]] quiz
 
* Return dossiers
 
* Saturday workshop
 
* Review and work on dossiers
 
 
 
== Wednesday (2/17/10) ==
 
'''Warmup:'''
 
* Convert the following 8-bit 2s complement numbers to decimal
 
** 01101101
 
** 11110101
 
* Add the above numbers in binary
 
 
 
'''Agenda:'''
 
* [[Media:AnalogDigital.ppt]] and [[Media:Errors.ppt]] quiz on Friday (2/19/10)
 
* Introduction to Boolean Logic
 
** [[Media:BooleanLogic.ppt]]
 
* Simplifying Boolean Expressions
 
** [[Media:SimplifyingBooleanExpressions.ppt]]
 
 
 
== Tuesday (2/2/10) ==
 
'''Warmup:'''
 
* Go to the [http://www.nsf.gov/about/ About NSF] page and read it
 
 
 
'''Agenda:'''
 
* Turn in permission slips
 
* Thursday:
 
** Come to class
 
** Bring a photo ID
 
** Wear professional attire
 
* Good Programming Style
 
** [[Media:CriterionC1_goodProgrammingStyle.doc]]
 
** Open up ALL of your Dossier java files
 
** You will clean up your code by going through the checklist
 
* Usability
 
** [[Media:CriterionB3_usability.doc]]
 
 
 
== Friday (1/29/10) ==
 
* Take out all Dossier materials
 
* We will go through each section of the checklist
 
* Turn in all materials with checklist to Mr. Bui
 
* Using MSWord to create professional-looking documents
 
 
 
== Wednesday (1/27/10) ==
 
'''Warmup:'''
 
* Why are digital signals "better" than analog signals?
 
* How many bits are in a byte?
 
* How many bytes are in a KB, MB, GB, TB?
 
 
 
'''Agenda:'''
 
* NSF Field Trip! - Thursday (2/4/10)
 
* Errors!
 
** [[Media:Errors.ppt]]
 
* Dossier - Modular Organization due Friday (1/29/10)
 
** [[Media:CriterionB3_modularOrganization.doc]]
 
* BRING ALL YOUR DOSSIER MATERIALS ON FRIDAY
 
* File Input/Output - reading and writing to files
 
** [[Media:RAFWriteDemo.java]]
 
** [[Media:RAFReadDemo.java]]
 
* Add writing to file to your LinkedList class
 
*# Add a method named saveToFile(String filename)
 
*# Open the filename for writing using RandomAccessFile
 
*# writeUTF() the number of nodes or size of your LinkedList
 
*# Create a loop that traverses the LinkedList and writeUTF() all of the nodes' data
 
* If you want to add writing to file to a BinaryTree, then you must create recursive saveToFile() and saveToFileSubtree() methods that look like print() and printSubtree()
 
 
 
== Monday (1/25/10) ==
 
'''Warmup:'''
 
* Write down a list of ALL your classes
 
* Draw a class hierarchy diagram that shows "has-a" relationships
 
 
 
'''Warmup:'''
 
* Dossier - Modular Organization due Friday (1/29/10)
 
** [[Media:CriterionB3_modularOrganization.doc]]
 
* BRING ALL YOUR DOSSIER MATERIALS ON FRIDAY
 
* File Input/Output - reading and writing to files
 
** [[Media:RAFWriteDemo.java]]
 
** [[Media:RAFReadDemo.java]]
 
* Add writing to file to your LinkedList class
 
*# Add a method named saveToFile(String filename)
 
*# Open the filename for writing using RandomAccessFile
 
*# writeUTF() the number of nodes or size of your LinkedList
 
*# Create a loop that traverses the LinkedList and writeUTF() all of the nodes' data
 
* If you want to add writing to file to a BinaryTree, then you must create recursive saveToFile() and saveToFileSubtree() methods that look like print() and printSubtree()
 
 
 
== Friday - Thursday (1/15/10 - 1/21/10) ==
 
* Work on completing Dossier code
 
 
 
== Wednesday (1/13/10) ==
 
'''Warmup:'''
 
* List and describe the three types of test data
 
* Look online and find out how many symbols are represented in ASCII
 
** How many bits does the computer use for ASCII?
 
 
 
'''Agenda:'''
 
* Sign magnitude review
 
* Introduction to 2's complement
 
** [[Media:NegBinary2sComp.ppt]]
 
* Binary addition review
 
* Binary subtraction
 
* So what the heck does '''digital''' mean?
 
** [[Media:AnalogDigital.ppt]]
 
 
 
== Monday (1/11/010) ==
 
* 2nd Quarter Exam
 
 
 
== Thursday (1/7/10) ==
 
'''Warmup:'''
 
* What base is hexadecimal?
 
* List the symbols used in hexadecimal
 
* Convert 45 to binary and hexadecimal
 
* Convert binary 101011101001 to hexadecimal
 
 
 
'''Agenda:'''
 
* 2nd Quarter Exam will be next Monday (1/11/10) <- Binary 30!
 
** Basic Java programming
 
** Stacks
 
** Queues
 
** Linked Lists
 
** Binary Trees
 
** Software Development
 
** Big-O algorithm evaluation
 
** Binary
 
** Hexadecimal
 
** Binary Addition
 
** Sign-Magnitude Negative Binary Numbers (?)
 
* Turn in late Dossier: Algorithms section & peer review
 
* Dossier update meetings
 
* [[Media:BinaryAddition.ppt]]
 
* [[Media:NegBinarySignMag.ppt]]
 
* Work on Dossier!  Code should be nearing completion at the end of next week
 
 
 
== Tuesday (1/5/10) ==
 
'''Warmup:'''
 
* Convert the following binary numbers to decimal:
 
** 0001
 
** 0011011
 
** 010101
 
* Convert the following decimal numbers to binary:
 
** 3
 
** 63
 
** 14
 
* List all the Big O complexities (Hint: O(1) is constant time)
 
 
 
'''Agenda:'''
 
* Three-word winter break update
 
* 2nd Quarter Exam will be next Monday (1/11/10) <- Binary 30!
 
* Turn in Dossier: Algorithms section & peer review
 
* Dossier update meetings
 
* Introduction to Hexadecimal
 
** [[Media:Hexadecimal.ppt]]
 
* Work on dossier!
 
 
 
== Thursday (12/17/09) ==
 
'''Warmup:'''
 
* [[Big O Practice Problems]]
 
 
 
'''Agenda:'''
 
* Binary Quiz!
 
* Dossier progress check!
 
* LLAddressBook? BTAddressBook?
 
* Dossier - Algorithms
 
** [[Media:CriterionB2_algorithms.doc]]
 
* Work on dossier!
 
 
 
== Tuesday (12/15/09) ==
 
'''Agenda:'''
 
* LLAddressBook? BTAddressBook?
 
* Makeup Software Development Quiz
 
* Algorithm Evaluation - Big O! - [[Media:AlgorithmEvaluation.ppt]]
 
* Introduction to Binary - [[Media:Binary.ppt]]
 
* Introduction to Binary #2 - [[Media:Binary2.ppt]]
 
* Binary Games
 
** [http://britton.disted.camosun.bc.ca/binary.swf Binary Game #1]
 
** [http://forums.cisco.com/CertCom/game/binary_game_page.htm Binary Game #2]
 
* Binary Quiz on Thursday (12/17/09)
 
* Dossier Progress Check on Thursday (12/17/09)
 
** You will demo / present completion of the following components in your dossier:
 
*** Basic container class (e.g. Contact)
 
*** Node class (e.g. ContactLLNode or ContactBTNode)
 
*** Partial completion of your major data structure (e.g. ContactLL or ContactBT)
 
 
 
== Friday (12/11/09) ==
 
'''Warmup:'''
 
* Finish cramming for software development quiz
 
 
 
'''Agenda:'''
 
* Software Development Quiz!  Yay!
 
 
 
== Wednesday (12/9/09) ==
 
'''Warmup:'''
 
* List the stages of the software development life cycle
 
* List 3 different methods of data collection for the Analysis stage
 
 
 
'''Agenda:'''
 
* Proper coding style
 
** Program header at the very top
 
*** the program name
 
*** author, date, school
 
*** computer used, IDE used, purpose
 
** Proper indentation
 
** Proper line-wrapping (how to deal with LONG lines of code)
 
* Demo missing work
 
* Recursion Review
 
** [[Media:Recursion.ppt]]
 
* Software systems life cycle & software development
 
** [[Media:SoftwareDevelopment.ppt]]
 
* Work on the programming for your dossier
 
 
 
'''Homework:'''
 
* Software development quiz on Friday (12/11/09)
 
 
 
== Monday (12/7/09) ==
 
'''Warmup:'''
 
* Illustrate the binary tree that is created when you insert the following values:
 
** 24, 75, 4, 12, 98, 33, 0
 
* Illustrate the binary tree that is created when you insert the following values:
 
** Newman, Braden, Hines, Rawoot, Whelan, Luoma-Overstreet, Anderson, Apseloff
 
 
 
'''Agenda:'''
 
* Demo missing work
 
* Software systems life cycle & software development
 
** [[Media:SoftwareDevelopment.ppt]]
 
* Work on the programming for your dossier
 
 
 
'''Homework:'''
 
* Software development quiz on Friday (12/11/09)
 
 
 
== Tuesday - Thursday (12/1/09 - 12/3/09) ==
 
'''Warmup:'''
 
* Prepare to demo your BTAddressBook
 
 
 
'''Agenda:'''
 
* BTAddressBook demos
 
* Recursion Review
 
** [[Media:Recursion.ppt]]
 
* Dossier Review - Data Structures section
 
* Dossier Programming - use this time in class to begin programming the classes you will use in your dossier
 
** Create your basic container classes (e.g. Person, Schedule, Book, Order, Ticket, etc.).  They should contain the following:
 
*** private attributes
 
*** default constructor
 
*** specific constructor
 
*** setters
 
*** getters
 
** Create any classes that may contain these other classes (e.g. Library, AddressBook, etc.)
 
** Using your prototype solution as a guide, you should begin creating the main menu system for your dossier.
 
 
 
'''Homework:'''
 
* Dossier - Data Structures rough draft - due (Thursday 12/3/09)
 
 
 
== Tuesday (11/24/09) ==
 
'''Agenda:'''
 
* Dossier - Data Structures
 
* [[Media:CriterionB1_dataStructures.doc]]
 
* Demo your LinkedList AddressBook
 
* Create 3 new classes called ContactBinaryTreeNode, ContactBinaryTree, and ContactBTTestMain
 
** [[Media:BinaryTreeNode.java]]
 
** [[Media:BinaryTree.java]]
 
** [[Media:BinaryTreeTestMain.java]]
 
* Convert the 3 given binary tree classes to use Contacts instead of ints
 
* Create and demo a BinaryTreeAddressBook
 
 
 
'''Homework:'''
 
* Demo BinaryTreeAddressBook - due (Tuesday 12/1/09)
 
* Dossier - Data Structures rough draft - due (Thursday 12/3/09)
 
 
 
== Friday (11/20/09) ==
 
'''Agenda:'''
 
* Demo your LinkedList AddressBook.  It should be able to do the following:
 
** add a Contact
 
** print list of Contacts
 
** find a Contact
 
** sort list of Contacts
 
* Re-Introduction to Binary Tree
 
** [[Media:BinaryTreeNode.java]]
 
** [[Media:BinaryTree.java]]
 
** [[Media:BinaryTreeTestMain.java]]
 
* Create 3 new classes called ContactBTNode, ContactBinaryTree, and ContactBTTestMain
 
* Convert the 3 given binary tree classes to use Contacts instead of ints
 
 
 
== Wednesday (11/18/09) ==
 
'''Warmup:'''
 
* What is the algorithm for a linear search?
 
* What is the algorithm for a selection sort?
 
* What is the algorithm for a bubble sort?
 
 
 
'''Agenda:'''
 
* int find(String fn, String ln) in the ContactLinkedList
 
** Add the find() option to your AddressBookMain and AddressBook
 
** find() in the AddressBook should use the ContactLinkedList's find() and then ContactLinkedList's getContact()
 
* void selectionSort() in the ContactLinkedList
 
* You should move the bubbleSort() into the ContactLinkedList and complete the method yourself
 
* Removing a Contact
 
** Add a remove option to your AddressBookMain
 
** Create a remove(String fn, String ln) method in your AddressBook
 
** In the method, use the ContactLinkedList's find() method to get the index of the Contact
 
** Check if the index is valid (not the error code), and if so, then use the ContactLinkedList's remove() method using that index
 
* Demo a completely working AddressBook
 
 
 
== Monday (11/16/09) ==
 
'''Warmup:'''
 
* Open your Contact class and review the code
 
 
 
'''Agenda:'''
 
* Contact class review as a class
 
* Create a new class from your Node class and called ContactNode
 
** Do this as a class...quickly
 
* Create a new class called ContactLinkedList
 
** Do this as a class...quickly
 
* Convert your LinkedList to use ContactNode and call it ContactLinkedList
 
** Go through one or two examples as a class
 
* Be sure to test your ContactLinkedList
 
* AddressBook class review as a class
 
* Convert your AddressBook to use ContactLinkedList instead of an array
 
** Comment out the parts for find(), selectionSort(), and bubbleSort().  We will convert these later
 
** Be sure to test your AddressBook with LOTS of contacts
 
 
 
'''Homework:'''
 
* Complete the AddressBook conversion over to ContactLinkedList by Wednesday (11/18/09)
 
* Be ready to demo your AddressBookMain
 
 
 
== Thursday (11/12/09) ==
 
'''Agenda:'''
 
* Abstract data types review
 
* Introduction to Binary Tree
 
** [[Media:BinaryTreeNode.java]]
 
** [[Media:BinaryTree.java]]
 
** [[Media:BinaryTreeTestMain.java]]
 
* Demo your LinkedList
 
* Contact class review
 
* Create a new class from your Node class and called ContactNode
 
* Create a new class called ContactLinkedList
 
* Convert your LinkedList to use ContactNode and call it ContactLinkedList
 
* Be sure to test your ContactLinkedList
 
* AddressBook class review
 
* Convert your AddressBook to use ContactLinkedList instead of array
 
** Comment out the methods for find(), selectionSort(), and bubbleSort().  We will convert these later
 
** Be sure to test your AddressBook with LOTS of contacts
 
 
 
== Monday (11/9/09) ==
 
'''Agenda:'''
 
* Turn in homework
 
* Demo DynamicQueue
 
* Introduction to Linked Lists
 
** [[Media:LinkedList.java]]
 
** Attributes: head, tail, size
 
** Constructors: default
 
** Methods:
 
*** isEmpty() - returns true if the LinkedList is empty, and false otherwise
 
*** void add(int num) - adds a new Node with num at the end of the LinkedList
 
*** void add(int num, int index) - adds a new Node with num at the index specified
 
**** There are FIVE different scenarios when you add a Node
 
**** DRAW the before-and-after pictures for all FIVE secenarios
 
*** int remove(int index) - removes the index-th Node and returns its data
 
**** There are SIX different scenarios when you remove a Node
 
*** print() - traverses the LinkedList and prints out each Node's data
 
** Create a main method to test out all the methods and scenarios of LinedList
 
 
 
'''Homework:'''
 
* Complete the LinkedList class and all its methods by the beginning of class on Thursday (11/12/09)
 
* Mr. Bui will give you his LinkedListMain on Thursday to test
 
 
 
== Thursday (11/5/09) ==
 
'''Warmup:'''
 
* Draw the before-and-after pictures for adding a Node to an empty Queue (be sure to use head and tail!)
 
* Draw the before and after pictures for adding a Node to a non-empty Queue
 
* Draw the before-and-after pictures for removing a Node from an empty Queue
 
* Draw the before and after pictures for removing a Node from a non-empty Queue
 
 
 
'''Agenda:'''
 
* Return 1st Quarter Exams
 
* Dynamically-sized Queues
 
** Create a new class called DynamicQueue
 
*** [[Media:DynamicQueue.java]]
 
** Test out your DynamicQueue using the original QueueMain file
 
* Introduction to Linked Lists
 
** [[Media:LinkedList.java]]
 
** Attributes: head, tail, size
 
** Constructors: default
 
** Methods:
 
*** isEmpty() - returns true if the LinkedList is empty, and false otherwise
 
*** void add(int num) - adds a new Node with num at the end of the LinkedList
 
*** void add(int num, int index) - adds a new Node with num at the index specified
 
**** There are FIVE different scenarios when you add a Node
 
**** DRAW the before-and-after pictures for all FIVE secenarios
 
*** int remove(int index) - removes the index-th Node and returns its data
 
**** There are SIX different scenarios when you remove a Node
 
*** print() - traverses the LinkedList and prints out each Node's data
 
 
 
'''Homework:'''
 
* Complete DynamicQueue!
 
* Draw the before-and-after diagrams (all SIX scenarios) for the LinkedList's remove() method
 
 
 
== Monday (11/2/09) ==
 
'''Warmup:'''
 
* Assume that you have allocated memory for a new int array of 10000 elements.  An int is 32-bits in size, and there are 8-bits in 1 byte.  How many bytes of memory are you taking up?
 
* If there are 1024 bytes in a kilobyte, how many kilobytes are you taking up?
 
 
 
'''Agenda:'''
 
* Dynamically-sized Stacks
 
** Create a new class called DynamicStack
 
*** [[Media:DynamicStack.java]]
 
** What attribute must we keep track of when we talk about stacks?
 
** Create a Node reference for the most important stack attribute
 
** Implement push(int num) using Nodes.
 
*** push() should not return anything
 
*** push() creates a new Node with the num, and set the new Node's next reference to the top
 
*** Don't forget to update the top to be the new node!
 
** Implement pop(), which should POP and return the value on top of the stack and update the top
 
** Implement top(), which should just return the value on top of the stack
 
** Implement isEmpty() which returns true if the stack is empty
 
** Implement print() which should print your entire stack
 
** TEST YOUR STACK USING MR. BUI'S STACK MAIN OR YOUR OWN MAIN METHOD
 
 
 
== Thursday (10/29/09) ==
 
* 1st Quarter Exam
 
 
 
== Tuesday (10/27/09) ==
 
'''Warmup:'''
 
* Pass in your Prototype Solution to Mr. Bui
 
* Given the following code, draw the memory diagram:
 
 
 
<source lang="Java">
 
Node fun = new Node(42);
 
Node general = new Node (11);
 
Node a, b, c;
 
 
 
a = general;
 
b = a;
 
fun.next = b;
 
c = fun;
 
</source>
 
 
 
'''Agenda:'''
 
* Pass back Stacks quiz
 
* Prototype Solution peer review
 
* 1st Quarter Exam Review
 
** Java programming
 
** class construction
 
** methods
 
*** components of the method header
 
** Stacks
 
*** how they work
 
*** operations: push(), pop(), top(), isEmpty()
 
*** why we use them
 
*** example uses
 
** Queues
 
*** how they work
 
*** operations: add(), remove(), head(), tail(), isEmpty()
 
*** why we use them
 
*** example uses
 
** Nodes and reference variables
 
*** Memory diagram and tracing code
 
 
 
== Friday (10/23/09) ==
 
'''Agenda:'''
 
* Object and References Review
 
** [[Media:Point.java]]
 
** [[Media:ReferencesReview.java]]
 
* Node class
 
** [[Media:Node.java]]
 
** [[Media:NodeFun.java]]
 
* Node references practice
 
** [[Media:NodeFunAgain.java]]
 
 
 
'''Homework:'''
 
* Dossier - Prototype Solution rough draft due Tuesday (10/27/09)
 
 
 
== Wednesday (10/21/09) ==
 
'''Warmup:'''
 
* Give 2 specific examples of when a queue should be used
 
* Identify the following parts in each of the method declarations: access type, return type, method name, parameters
 
** public int getSize()
 
** private String whatNot(String whatFor)
 
** public void print(int size, String stuff)
 
 
 
'''Agenda:'''
 
* Make-up stack quiz for people who were absent on Monday
 
* Demo your fixed [[Media:Queue.java]] by using [[Media:QueueMain.java]]
 
* Criteria for Success peer review
 
* Object and References Review
 
** [[Media:Point.java]]
 
** [[Media:ReferencesReview.java]]
 
* Node class
 
** [[Media:Node.java]]
 
** [[Media:NodeFun.java]]
 
* Node references practice
 
* Read through [[Media:CriterionA3_prototypeSolution.doc]]
 
* Begin working on your Prototype Solution.  It will be due next Tuesday (10/27/09).
 
 
 
'''Homework:'''
 
* Dossier - Prototype Solution rough draft due Tuesday (10/27/09)
 
 
 
== Monday (10/19/09) ==
 
'''Warmup:'''
 
* What does LIFO stand for? 
 
* What does LIFO describe? 
 
* When would you want a LIFO?
 
 
 
'''Agenda:'''
 
* Stack quiz
 
* Queues
 
** [[Media:Queues.ppt]]
 
** [[Media:Queue.java]]
 
** [[Media:QueueMain.java]]
 
* Fix Queue.java so that it works. You must fill in all the method bodies
 
 
 
'''Homework:'''
 
* Dossier - Criteria for Success rough draft due Wednesday (10/21/09)
 
* Turn in late assignments! Examples: AddressBook sorting, Problem Analysis, etc.
 
 
 
== Thursday (10/15/09) ==
 
'''Warmup:'''
 
* Demo any missing work
 
* Finish adding bubble sort and selection sort to your AddressBook
 
** Hint1: You cannot simply compare Contacts, but you can compare their last names
 
** Hint2: You cannot sort the ENTIRE Contact array, you can only sort the ones that you have added
 
** Hint3: You should test our the sorting methods by adding a (s)ort option to your AddressBookMain
 
 
 
'''Agenda:'''
 
* Introduction to Data Structures
 
* Stacks
 
** [[Media:Stacks.ppt]]
 
** [[Media:Stack.java]]
 
** [[Media:StackMain.java]]
 
* Go through [[Media:CriterionA2_criteriaforSuccess.doc]]
 
* Begin working on your Criteria for Success.  It will be due next Wednesday (10/21/09).
 
 
 
'''Homework:'''
 
* Stacks quiz on Monday (10/19/09)
 
* Dossier - Criteria for Success rough draft due Wednesday (10/21/09)
 
* Turn in late assignments! Examples: AddressBook sorting, Problem Analysis, etc.
 
 
 
== Tuesday (10/13/09) ==
 
'''Warmup:'''
 
* Please complete this [https://spreadsheets.google.com/viewform?formkey=dGx5Uy1JVGRXcDNJV0NHOEJvZ21vX2c6MA password request form]
 
* What are the advantages and disadvantages of the binary search algorithm?
 
 
 
'''Agenda:'''
 
* Dossier peer review - Analysis of the Problem
 
* Demo any missing work
 
* Sorting & Searching Review
 
** Selection Sort
 
** Bubble Sort
 
** Linear Search
 
** Binary Search
 
* Examples of using the String.compareTo() method
 
** [[Media:CompareToDemo.java]]
 
** [[Media:CompareToDemo2.java]]
 
* Fix [[Media:StringBinarySearch.java]] such that it uses binary search to find a String. Hint: You will be using the compareTo()
 
* Demo StringBinarySearch to Mr. Bui by the end of today.
 
 
 
* You should then add selectionSort() to your AddressBook class.  It sorts your AddressBook Contact array by last name using the selection sort algorithm. You may assume that everybody will have a different last name.
 
* You should then add bubbleSort() to your AddressBook class.  It sorts your AddressBook Contact array by last name using the bubble sort algorithm. You may assume that everybody will have a different last name.
 
* Demo the two sorting methods to Mr. Bui before Thursday.
 
* Read through [[Media:CriterionA2_criteriaforSuccess.doc]]
 
* Begin working on your Criteria for Success.  It will be due next Wednesday (10/21/09).
 
 
 
== Thursday (10/8/09) ==
 
'''Warmup:'''
 
* Given the array of integers: 3, 6, 2, 7, 9, 5, 2, 3
 
* Illustrate the bubble sort algorithm to sort the numbers
 
 
 
'''Agenda:'''
 
* Introduction to Linear Search
 
* Download [[Media:LinearSearch.java]]
 
* Fill in the commented parts of LinearSearch.java and demo a working linear search to Mr. Bui
 
* Linear Search performance evaluation
 
# What is the best case scenario? i.e. What is the minimum # of comparisons?
 
# What is the worst case scenario? i.e. What is the maximum # of comparisons?
 
# What is the average # of comparisons?
 
# Can we do better than a linear search?
 
 
 
* Introduction to Binary Search
 
# Assume sorted list
 
# Go to the middle point
 
# If the middle element matches the key, then the search is over
 
# If the key is less than middle element, go to the left (down), else go to the right (up)
 
# Repeat steps 2-4 until the key is found or when the left and right bounds pass each other
 
 
 
* [http://euler.slu.edu/~goldwasser/demos/BinarySearch/ Binary Search Demo]
 
* [http://www.cosc.canterbury.ac.nz/people/mukundan/dsal/BSearch.html Binary Search Demo2]
 
* [[Media:BinarySearch.java]]
 
* Binary Search performance evaluation
 
# What is the best case scenario? i.e. What is the minimum # of comparisons?
 
# What is the worst case scenario? i.e. What is the maximum # of comparisons?
 
# What is the average # of comparisons?
 
* Binary Search Advantages & Disadvantages
 
 
 
'''Homework:'''
 
* 1st rough draft of Analysis of the Problem due Tuesday (10/13/08)
 
* Any missing assignments (e.g. AddressBook, SelectionSort, BubbleSort)
 
 
 
== Tuesday (10/6/09) ==
 
'''Warmup:'''
 
* Upload AddressBook.java and AddressBookMain.java to SchoolWebLockers
 
* Demo SelectionSort.java to Mr. Bui
 
* Turn in your Dossier idea sentence
 
 
 
'''Agenda:'''
 
* Introduction to Bubble Sort
 
# Initialize the front to be the top or beginning of the array
 
# Now go to the bottom/end of the array
 
# Compare the two adjacent elements to see if they are in proper sequential order
 
## Swap the elements if they are out of order (bigger number to the left of smaller number)
 
# Move to the next pair of adjacent elements/numbers
 
# Repeat steps 3 and 4 until the smallest number has "floated" to the top/front
 
# After you traverse the entire array
 
## Move the front so that the sorted numbers are ignored
 
## Go back to the end of the array
 
## Repeat steps 2 through 6 for the unsorted part of the array
 
* [http://web.engr.oregonstate.edu/~minoura/cs162/javaProgs/sort/BubbleSort.html Bubble Sort Animation]
 
* Download [[Media:BubbleSort.java]]
 
** Fill in the commented parts of the BubbleSort.java file. Where there is a comment, you need to write code.
 
** Demo to Mr. Bui at the end of class or at the beginning of class tomorrow
 
* Introduction to Program Dossier
 
** [[Media:CriterionA1_problemAnalysis.doc]]
 
** 1st rough draft of Analysis of the Problem due Tuesday (10/13/08)
 
** Work on your Analysis of the Problem section
 
 
 
== Friday (10/2/09) ==
 
'''Warmup:'''
 
* Swapping elements warmup
 
 
 
'''Agenda:'''
 
* Demo [[AddressBook class lab assignment]] and any other missing assignments
 
* Submit your AddressBook and AddressBookMain on-line to Mr. Bui's SchoolWebLockers
 
* Review Selection Sort
 
* Download [[Media:SelectionSort.java]]
 
** Fill in the commented parts of the SelectionSort.java file. Where there is a comment, you need to write code.
 
** Demo to Mr. Bui at the end of class today
 
* Introduction to Program Dossier
 
** [[Media:CriterionA1_problemAnalysis.doc]]
 
 
 
'''Homework:'''
 
* Complete your [[AddressBook class lab assignment]] AND [[Media:SelectionSort.java]]
 
* Have a 1 sentence description of your dossier ready at the beginning of next class
 
 
 
== Archives ==
 
* [[IBCS2 - May]]
 
* [[IBCS2 - April]]
 
* [[IBCS2 - March]]
 
* [[IBCS2 - February]]
 
* [[IBCS2 - January]]
 
* [[IBCS2 - December]]
 
* [[IBCS2 - November]]
 
* [[IBCS2 - October]]
 
* [[IBCS2 - September]]
 

Latest revision as of 11:21, 24 August 2010