IB Comp Sci class of 2011

Introduction - 19 Aug 2009

Introduction

IB Computer Science is a 2-year course.  The first year deals mainly with programming in Java.  The second year covers hardware and system concepts.  During the second year students will create a large programming project to solve a real-world problem (the Internal Assessment dossier).  At the end of the second year, students take two written examinations, approximately 2 hours each.  The dossier and exams each contribute 1/3 of the final IB mark.

Students learn to write Java programs efficiently and quickly, enabling them to complete the Internal Assessment project (dossier) successfully.  They also learn to write clear explanations about computer systems, hardware and software, using correct technical vocabulary, enabling them to successfully answer written exam questions.

The teacher will make every effort to present new concepts clearly and completely, as well as allowing ample class time for practice and discussion.  Students must make an equally conscientious effort to learn, understand and remember the topics.  Students are expected to learn as much as possible at all times and to:

Normally students will have a working PC at home, where they can write and debug Java programs.  In the unusual circumstance that their PC is broken, students need to plan on spending extra time at school, outside class time, to complete programming assignments.  Some class time is devoted to writing programs, but this is not sufficient to completely finish  assignments.

Class CD (at FIS only)    2-year Teaching Plan + Vocabulary 

Good Habits    General Comments about How to Study

Calculations - 20 Aug 2009

Calculations

Back in the 1940's, "computers" were used for calculations.  Back then, the only alternative for doing long calculations was to use a paper and pencil - both slow and unreliable.  At the beginning of the "computer age", all the excitement was just about doing calculations quickly. 

Modern computers are doing calculations at the rate of BILLIONS of calculations per second.  You probably don't really need to do billions of calculations - a really big homework assignment might have 100 math problems with several calculations per problem.  So you might need to do 1000 calculations per day, but probably not more than that. 

So what is your PC actually doing with all that unused capacity?  Nothing.  It is sitting there, waiting for you to move the mouse or type on the keyboard. 

More Than Meets the Eye

But the computer actually does a lot more than you see.  If you ask your computer to play an MP3 file (a song), it must reproduce 44000 tones per second.  Each tone is represented by a number between 0 and 65535.  That would be pretty easy if those tones were just streamed (recorded and played back in order), but MP3 files are compressed to save space.  Before playing the sounds, they must be decompressed.  That means there are at least 44000 calculations per second - actually it's a lot more than that, because the compression/decompression (CODEC) algorithm involves lots of calculations, maybe 10 calculations for each of the 44000 tones - meaning 440,000 calculations per second.  Still, that's only a tiny fraction of a billion per second.  No problem!

First Programming Exercise

Use Processing to do the following assignment : Calculations

Finish as much as you can during class - the rest is homework.  Be prepared for a discussion during class tomorrow.

Calc Errors - 24 Aug 2009

More Calculations and Errors

Homework:  Why do calculation errors occur? http://ibcomp.fis.edu/numbers/numbers.html   

More Math Errors - 25 Aug 2009

More Math Errors   : Bad_Math

Homework :  Read p. 57-62 in David Schmidt's Book, Chapt 3

DrJava - 26 Aug 2009

Start using DrJava - V:\Mulkey Dave\drjava.exe
  Copy it to d: and run it from there, rather than running from the server.

Using variables in math problems

Sample program:   http://ibcomp.fis.edu/numbers/circles.html   

Math + GUI - 28 Aug 2009

Math problems with Input/Output in GUI mode

   GUI with EasyApp    Problems

Practice GUI Math - 7 Sep 2009

More practice with GUI and Math problems.

Homework:  Write a program to calculate the Quadratic Formula.
                   It will probably contain these commands (plus lots more):

                     double x1 = (-b + Math.sqrt(b*b-4*a*c)) / (2*a) ;
              double x1 = (-b - Math.sqrt(b*b-4*a*c)) / (2*a) ;

Long Math Probs - 9 Sep 2009

Longer math problems - use lots of variables and a List box for output.

 

Special Symbols - 10 Sep 2009

You may need to insert special "math symbols" into your output, like this:

The "squared" symbol and the "square-root" symbol can be written like this:

         info.add("x \u00B2 = 2");
         info.add(" x = \u221A 2");
         info.add("\u221A 2 = " +  Math.sqrt(2));

"\u221a" is called an escape character sequence. 
It creates a Unicode symbol.
The number 221A is written in hexadecimal (base 16) - more on this later.

You can see lots of mathematical Unicode symbols in tables like this:

http://www.ssec.wisc.edu/~tomw/java/unicode.html#x2200

Pretty Fonts - 11 Sep 2009

Look at this sample code - copy it into your LongProblems program.

Notes about graphics commands :
http://java.sun.com/javase/6/docs/api/java/awt/Graphics.html

Finis Math Program - 15 Sep 2009

Finish up whatever math problems you have started.
Tomorrow, Wed 16 Sep, turn in a working program
at the beginning of class.

Strings - 16 Sep 2009

Turn in your WORKING program by sending an e-mail to:

    Dave_Mulkey@fis.edu

You should send the .java file as an ATTACHMENT.

Today :  Strings

Sample program : Quiz  (needs EasyApp in the same folder)

In BluePelicanJava, read 3-1 to 3-2 about Strings. Bring questions and prepare to discuss 3-3.

Using Dropbox - 21 Sep 2009

Local logins - log in as : ib11

Using www.getdropbox.com

Making a password program in Java.

Read BluePelican - 17 Sep 2009

Homework:  In BluePelicanJava do the questions 1-12 in section 3-3.
Turn in answers ON PAPER on Monday 21 Sep.

 

Validate Strings - 23 Sep 2009

5 minute quiz

Validating Strings - lecture

Homework - as a group the class should write down VALIDATION RULES for each of the following types of String information:

Times in Strings - 25 Sep 2009

Quiz

Handling Times - a case-study of a problem that requires String manipulation and validation, as well as conversions between String and integer variables.

    Times Case Study

If..Then.. - Mon 28 Sep - Tue 29 Sep, 2009

Practice :    Times Case Study

Reading :   If..then.. decisions 

Cash Register - 1 Oct 2009

Fast Food Cash Register

 

Fast Food Cash Reg - 14 Oct 2009

We will continue on theFast Food Cash Register for another week or two.

Today, choose one of the "Big Improvements" and try to add this to your program - perhaps the [BIG BUTTONS] for specific food items.  If you wish, you may start with this program as the basis. 

Automation - 16 Oct 2009

== Today's BIG Idea ==

Computer Science  concerns itself with SYNCHRONIZING
automated machine actions
with users needs and tasks.

In the past, we wanted to AUTOMATE processes
to REMOVE the user from the process and replace user's work.
That's still a good goal, but interactivity is now accepted.

When working on the cash-register program, remember to think about
USER ACTIONS as well as AUTOMATION in your program.
This program is definitely interactive.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

== Today's Notes ==

Look at the Clever Techniques for the Fast-Food-Cash-Register.

Try to add something clever to your program.

You must turn in a working program on Fri 23 Oct.

You will also have a quick quiz each day next week, plus a couple more good ideas. 
You should be mastering the use of String methods.  
You might find these notes helpful:      String Notes

Cash Register Project - Tue 20 Oct 2009

Continue working on your Fast-Food Cash-Register.

You must turn in a working program on Fri 23 Oct.
You will not have time to "finish up" on Friday,
because you will be writing a summary report
about what you did, why and how.  That only takes
about a half hour, so you can do it during class -
no need to start ahead of time.

Choice Box Lists - 19 Oct 2009

Remember that your program is due on Friday 23 Oct.

Here's one more clever programming technique:

    Choice Boxes (Lists)

Substitution - 28 Oct 2009

** SUBSTITUTION **

Substitution is a critical concept in Computer Science.  Look at these web-pages:

       Crazy Libs       Night of the Living Dead

Homework

  Write an Adlib program, similar to the web-pages above.
  It should INPUT words from TextFields (not Input commands)
  and produce its output in the EasyApp GUI window (e.g. in a List box),
  not using System.out.println.

Finish Cash Reg Project - 23 Oct 2009

Turn in your program together with a report, as described here:

    Finishing your Program

Text Files - 30 Oct 2009

Using external storage (text-files).

Homework (due Tuesday)

Make a program with at least 4 words to input, and at least 4 text-phrases for the story template.  Then write at least 4 text-files containing story templates.  But remember to make all the stories follow the same pattern, so that your program does not need to sometimes input nouns, sometimes verbs, etc.

Next Week

On Tuesday we will practice more with variables and text-files.  Expect a short quiz on Wednesday and a longer quiz (small test) on Thursday.

AdLibs Game - 29 Oct 2009

More about substitution in the Adlibs program.

Loops and Files - 3 Nov 2009

Using a LOOP to read a longer text-file

 

Money Counter - 4 Nov 2009

Money Counter - statistics for a file of numbers

 

Student Checkout Program - 5 Nov 2009

Homework

Download this program and do the tasks
listed at the top : LeaveEarly.java

Extra Credit : Find out how to get the correct current time from the system clock.

Early Checkouts - 10 Nov 2009

Early Checkouts

We will discuss the Analysis and Design of this system.

simple Checkouts - 12 Nov 2009

Practice problems in Simple Checkouts

Test on Tuesday 17 Nov about FILES - partly with the computer, partly written.

Cont. Checkouts - 11 Nov 2009

Simple Checkouts

 

Text Files Review - 16 Nov 2009

Tomorrow's test will have several written questions where you must write Java methods on paper, plus a programming problem to be done using the computer.  Make sure you know (e.g. memorize) how to do all of the following.

           (Solutions here, but try to write some of them yourself first)

  1. Count the number of names in a file containing a list of names.
  2. Search for a specific name in a file containing a list of names,
    and print "found" or "not found" as appropriate.
  3. readLine a number from a file and convert it to a double using:
        double num = Double.parseDouble(data);
  4. Add up all the numbers in a file containing a list of numbers.
  5. Count how many prices in a file are larger than 10.00 .
  6. In an accout file that contains names and passwords, input a name and password
    and check in the file to see whether these match what's in the file.
  7. In a file containing names and ages of children, find a specific name
    and print the corresponding age.
  8. In a file containing names and ages of children, print the names of all
    the children who are 10 years old.
  9. In a file containing names and ages of children, calculate the average
    of all the ages by: (1) counting all the children; (2) adding up all the ages;
    (3) dividing to find the average.
  10. Given a check-in file and a check-out file, containing names and times, find a name in both files and print the check-out and check-in times.

During the test, you will nott be required to WRITE data into a file -
you only need to write methods that READ data from a file and process it.

Sample data files:

Names.txt Prices.txt Accounts.txt Students.txt
Albert
Bobby
Carla
Doug
Ellen
Fred
 ....
5.50
13.50
10.00
9.95
12.00
1.25
 ....
Abraham
4br4h4m
Mulkey
secret123
Zoro
mag1c
 ....
Billy Bob
8
Bobby Bill
12
Bobbly Wobbly
16
 ....

Text Files Test - 17 Nov 2009

Files Test

 

Eclipse IDE - 18 Nov 2009

Eclipse IDE

Web as Database

The World-Wide-Web can be used as a huge database - not just providing access, but actually storing the data for us.

Get answers to the following questions (take notes and prepare for a discussion):

Find some data tables in Wikipedia.
Copy a data table into an Excel spreadsheet
- Convert the data so that it fits into a text-file
- Outline how a program could read this file

Which country is the "best" in the world?
- Make a statement (could be your opinion or someone else's)
- Find data that supports your statement (not just someone's opinion)
- Keep track of the source of your data
-
Find a graphical presentation of some data that supports your statement

Find out what each of the following terms mean:
- Data mining
- Data scraping
- Data warehouse
- Data-driven web-page
- Data protection

CIA Factbook - 20 Nov 2009

Data Analysis - the CIA Factbook 

  

Program for CIA Factbook - Mon 23 Nov 2009

Java programs for processing CIA Factbook text-files

Finish the practice at the end of the page (above) and bring the working program to class on Monday 30 Nov.

 

Arrays = Lists - 30 Nov 2009

We need to do quite a lot of processing to produce useful results from the CIA Factbook files.  Some of this is much easier if we use arrays for temporary storage.  So we will take a detour from the factbook for a few days and learn to use arrays.

   Arrays = Lists  

 

Food Prices in Arrays - Tue 1 Dec 2009

Finish #6 in    Arrays = Lists   
It must store the FOODS and PRICES in a text-file and read that data when it runs.

 

Parallel Arrays - 2 Dec 2009

Payroll Database in Parallel Arrays

 

Sorting - 4 Dec 2009

Sorting - do this assignment during class. 
Try to finish it at home.

If you need more explanations about sorting, read this:

    Programming Principles in Java by David Schmidt
        Chapter 8 ,  section  8.14.1 - Sorting

Sorting Practice - 7 Dec 2009

Simple Sorting Practice

Homework : Finish #5 in the Simple Sorting Practice (above)

Here are some more notes about sorting:
http://ibcomp.fis.edu/sorting/introNotes.html
You may find these notes helpful.

Timing Sorts - 8 Dec 2009

Finish #6 on the Simple Sorting Practice

Program for Timing Sorts

Homework : Better Sorting Efficiency -
                   Write a FASTER sorting algorithm (method) -
                     one that is faster than the SimpleSort.
                   Try BubbleSort or SelectionSort -
                   maybe you want to get some help from:
                      http://www.solidware.com/sort/

                   Test your sort - check the times to see
                      that yours is faster.

Bucket Sort HL - 10 Dec 2009

Today's quiz has been postponed,
because sorting takes longer than we expected.

--->  QUIZ on Friday 11 Dec - 30 minute quiz about arrays and sorting

Today's sorting practice :  Basketball Roster

HL --> Do the Bucket Sort instead of the Basketball Roster

Sorting Quiz - 11 Dec 2009

Sorting Quiz

Homework :  Find out how an INSERTION SORT works.
                  Be prepared to EXPLAIN it in class on Monday.

 

Inserting in an Array - 14 Dec 2009

Inserting - some programming practice

 

Top Ten List - 16 Dec 2009

Top Ten Practice Program

 

Solving Top Ten - 11 Jan 2010  

Due to the cancelled class on Friday 18 Dec, the test is being postponed until Wed 13 Jan (rather than Tuesday).

In case you are having problems with the Top Ten Program, here are some partial solutions. 

Suggested Solutions for Top Ten Scores

You will still need to insert them correctly into the MathGame and make them work, as well as finishing the insertion method.  An make sure that you understand how the methods work - otherwise they will not be very useful for you in the test.

It would be wise to ask questions and get help during class on Tuesday if you are still having problems.

Linked Lists HL - 12 Jan 2009  (HL only)

Starting Linked-Lists

Read : http://ibcomp.fis.edu/04/linklist/linklist.pdf

Practice : http://ibcomp.fis.edu/linklist/playlist.html 

Preparation : On Friday 15 Jan, bring the PlayList program
      and show what you accomplished (at least #1-5).  

 

Top Ten Test - 13 Jan 2010

Top-ten Test  (with answers)       

 

More Array Practice - 14 Jan 2010

The results on the Top-ten Test were poor, so we need to do more practice with programming arrays.

    ArraysPractice1  

Finish #1-#4 before Monday (or as much as you can in the time available).
Practice, practice, practice.

Songs program - 18 Jan 2010

   Songs.java with answers an ArraysPrac1 #1-4 

   Do these problems: Yesterday - finish this as homework

Songs Text File - 19 Jan 2010

   Yesterday (with answers)

   Download  Songs.txt

   Do problems 5-7 in ArraysPractice1 by adding new methods to your solution
   (or the teacher's solution) for Songs.java (above). 

Arrays Practice Worksheet - 20 Jan 2010

  Fill in the Blanks Practice

  Homework :  Finish #5-7 in  ArraysPractice1 

Box Packing Algorithm - 22 Jan 2010

Automation - Packing Boxes

    http://ibcomp.fis.edu/simulation/loading.html

Homework :

    (1) Run the program and find out what it does.
        You do not need to fix it or do any of the exercises.

   (2) Write an explanation of HOW you tried
        to solve the packing problem for the 10 numbers -
        what was your brain looking at?

... HL students - do the same assignment, also using arrays (not linked-lists) ...

More Packing - 26 Jan 2010

More Automation with Packing Boxes

    http://ibcomp.fis.edu/simulation/loading.html

Homework:  Do problem #4 - the HELP(99) function

 

Artificial Intelligence - 28 Jan 2010

Automation + Cleverness = Artificial Intelligence

    Automated Packing 

Homework :  #7 (above) - be sure to WRITE DOWN your answer,
                      whether it is on paper or in a computer document

 

Cancelled - 29 Jan 2010

Class cancelled for early dismissal.

 

Sub-Optimal Automation - 1 Feb 2010

Discussed students' examples of sub-optimal automation.

No homework today.

Snow Day Reading - 3 Feb 2010

 * SNOW DAY *

We will be starting to learn about Object Oriented Programming (OOP).
To prepare for tomorrow's lesson, read Chapter 1 in Schmidt's book:

http://people.cis.ksu.edu/~schmidt/PPJv12pdf/ch1V9.pdf   

As you read, write down any words that you do not understand.
Bring your list of words to the next class meeting and turn it in
(this is homework).

OOP = Object Oriented Programming - 4 Feb 2010   

Introduction to Object Oriented Programming  

Homework : finish #1-4 with the Parking program

HL students : in the IB textbook, read about Inheritance, Encapsulation, Polymorphism

 

Dating Project with OOP - 9 Feb 2010

Dating Project with OOP

Homework :  Read the Dating Project document.
                  Fill in the blanks in the prototype program and get the program working.

      HL Students - Change the Dating prototype to use a Linked-List instead of an array.

 

Dating Project - 10 Feb - Fri 19 Feb 2010

Computer Dating Project :  Due on Friday, 19 Feb 2010

We will work on this in class for 6 days.
The teacher will teach a couple more ideas during that time -
for example, what is "validation"?

 

Systems, Task Manager - 1 Mar 2010

Computer Systems

Here is an overview of Computer Systems.

We haven't finished with Java programming, but we will take a break and do something else.

We will be looking at computer Systems, starting with the Operating System.

Task-Manager 

 

Hex Editor - 2 Mar 2010

More practice with Task Manager.

Intro to Hex-Editor

 

Comp Sci Videos - 4 Mar 2010

Here is a complete Introductory IT course called "Understanding Computers and the Internet"

It consists of 14 videos, plus printed transcripts of all the videos.
Each video lasts about 2 hours.  The lecturer goes slowly,
but you will probably find at least some of it interesting.

Here is a complete first year Computer Science course from the same lecturer -
it is more techical than the IT course:

==>   http://academicearth.org/courses/introduction-to-computer-science-i 

The first half of the course is appropriate for SL students, the second half for HL,
but it has not been constructed to "cover" the IB syllabus.

Homework : Watch the first Comp Sci lecture:

==>   How Computers Work in Binary (only the first half about binary)

 

Calculations in Binary - 5 Mar 2010

Calculations in Binary

Homework - view this: Harvard Lecture - Introduction to Binary Calculations
(watch the first 30 minutes)

HL Students  - view this lecture about Huffman Coding

 

Finish Binary - 8 Mar 2010

Finish this: Calculations in Binary

Homework :  Do the problems at the bottom of the notes (above)
                  Try "hacking" a compiled Java .class file with Hex-Editor

 

Ciphers - 10 Mar 2010

Beale Ciphers - Cipher Maker
  (extra stuff for later UTF-8 Encoding , Steganography )

and other file-structure mysteries.

 

ASCII + Unicode - 11 Mar 2010

Test : Thu 18 Mar 2010 - About all the SYSTEMS concepts learned since 1 March,
including the next 4 days of class.

Today : File Structures -
             ASCII, UNICODE , CSV , HTML and other TEXT files

 

Moving Data Around - 12 Mar 2010

Moving Data - especially in the Internet    

How Routers Work    Early Internet Packet Switching (video)

 

File Formats - 17 Mar 2010

File Formats / Structures

Reminder :  Test tomorrow

 

Test Data Structures - 18 Mar 2010

Test

 

Read Files on Web-Servers - 22 Mar 2010

Copying Files from Web-Servers

 

Random Access Files - 23 Mar - Wed 24 Mar 2010

RandomAccessFiles

 

Extended Essay Ideas - 25 Mar 2010

** For the Extended Essay students -
**  watch this video about public cryptography 
**   http://www.youtube.com/watch?v=1BJuuUxCaaY
**
** Here is a nice, technical explanation of crypto-hashes:
**   http://unixwiz.net/techtips/iguide-crypto-hashes.html 
**
** Here is an introduction to digital and electronic signatures:
**   http://www.arx.com/digital-signatures-faq
**  (not really an academic "source", as it's a commercial product)
**
** Here is the sort of references that are worth reading:
**   http://books.google.com/books?q=computer+security+basics
**    But don't try to read everything on-line.  You will need to
**    find some books in the library or order them.

More RandAcc Files - 26 Mar - Mon 12 Apr 2010

Continue discussing and working on:

    RandomAccessFiles

 

Steal Money - 13 Apr 2010

    Steal Money Method

 

Trace Practice - 15 Apr 2010

    Trace Practice

 

Hack the Bank - 16 Apr 2010

EMERGENCY!!  The Swiss Bank has a big problem, and they need a solution immediately!

We will have a group quiz TODAY!!  The entire class will collaborate to make changes to a bank data file.  The file will NOT be identical to the practice file, but will be similar.  With 6 people working on the problem, it should be easy enough to solve it in 50 minutes.

    Hack the Bank Quiz

 

Kings 2D Array Game - 19 Apr 2010

    Kings - a 2D array game

** News Flash ** (only a simulation, not real)

  SwissBankFuns Declares Bankruptcy

 
Faced with a pile of lawsuits resulting from broken computer software,
  and compounded by insurance claims from European travellers
  whose flights were recently cancelled, SBF has declared insolvency.
  However, Billy Gates (no relation William Gates III) managed
  to withdraw 60 Billion EU before the collapse, thanks to
  the efforts of some intrepid teenage hackers.  Apparently the
  bank will be unable to live up to various promises and
  contracts made to said hackers, but Mr Gates has promised
  to do the right thing and ensure that these young men receive
  a suitable reward - a grade of 8 in their most recent assignment.
  Mr Gates said the teacher was very cooperative and happily
  agreed to the reward arrangement (along with a suitable gratuity.)

*************** 

HL Binary Logic - 20 Apr 2010

    Binary Logic and Circuits:
          Intro: http://ibcomp.fis.edu/circuits/circuit1.pdf 
          Nand-gates: http://ibcomp.fis.edu/circuits/nandgates.pdf 
          Complete notes: http://occ.ibo.org/ibis/occ/userResources/topic4boolean.pdf

    Circuit Simulator :
          http://www.course.com/downloads/computerscience/aeonline/7/1/index.html

 

Kings Game Improvement - 21 Apr 2010

    Continue the Kings game :     Kings - a 2D array game

    Is there a clear, simple winning strategy?
    Can we program this strategy to make the computer into an opponent?

    Using nested loops in a 2D array - http://ibcomp.fis.edu/kings/kings2.html

    Kings at Wolfram Alpha : http://mathworld.wolfram.com/KingsProblem.html

Kings Game Rules - 22 Apr 2010

   Kings - a 2D array game     Ver 2 with loops

We need to add RULES, so the computer does NOT PERMIT the HUMAN player to make illegal moves (like puttting one king next to another), and so that the COMPUTER also does not make illegal moves. 

The game also needs to be expanded to allow the computer to play either first or second (different logic), as well as allowing different size boards (e.g. 6x6, 8x8).  General solutions for all sizes of boards MUST use loops - simple solutions with copy/paste single commands won't work.

More Kings - 23 Apr 2010

   More Kings - Loops, loops, loops

We are going back to the text-mode interface (in a TextArea).  We want to concentrate on using loops for everything and getting the rules correct.

Plan on a QUIZ next Tuesday 27 Apr.  It will be done at the computer, with a program very similar to the MoreKings program.  You will be asked to explain some commands, fix some errors, and add a couple more features.  Prepare by becoming familiar with the MoreKings program. 

(1) The program should "flip a coin" to decide who goes first (use random numbers)

(2) Add rules to prevent illegal moves

(3) Try to create a proper strategy for the computer to play on an EVEN size board

Numbers in 2D Arrays - Tue 27 Apr 2010

   QUIZ - about a program similar to More Kings (will only last 15-20 minutes)

   Numbers in 2D arrays

 

Thinking Machines - 28 Apr 2010

Today's discussion:
  Connections between Spreadsheets and 2D arrays 

   Numbers in 2D arrays

Long term assignment (do before next Wed) - watch this video : http://www.cosmolearning.com/documentaries/thinking-machines-the-creation-of-the-computer-384/1/ 

GUI Kings - 29 Apr 2010

  Numbers in 2D arrays

Starting with the GUI version of the program,
solve some of the questions at the bottom -
e.g. adding up rows, adding up columns,
finding largest and smallest values, etc.

JTable with 2D Arrays - 3 May 2010

  Using JTable

Data Structures - 4 May 2010

  Data Structures

Sorting Columns in 2D Array - 5 May 2010

  Sorting a 2D Array - by various fields (lecture)

     Start with this program

Homework: 
 
1.  Write the method that sorts the Hotel costs from lowest to highest.
       Make sure that it moves the names and all other data -
       not just scrambling the Hotel costs

  2.  Write a similar method to sort the Totals,
       but put the HIGHEST total at the top
       and the lowest at the bottom.

-- Looking Ahead --

  We will have another QUIZ on Tues 11 May 2010.

  After that, we will work on a final programming project
  that will involve using 2D arrays.

  Review for the Final Exam on Mon 31 May by
  reading back through this blog, looking at programs you wrote,
  and especially by reading your notebook.

More Table Sorting - 7 May 2010

     More Sorting

Sorting Names - 10 May 2010

  REMEMBER - quiz tomorrow - on Paper (no computers)

    Sorting Names

Mini Project 2D Game - 11 May 2010

Quiz today

Start on your mini-project - due Friday 28 May 2010.

You will have time in class next week to work on this program.
In the of 25 May - 28 May, we will be reviewing for the final exam,
so you won't have time in class - you will need to work at home.

 

Final Exam Review - 25 May 2010

FINAL EXAM SCHEDULE CHANGE

The final exam for IB Computer Science will be given in the week after exams -
between 8 June and 11 June during normal classes.

Final Exam Review : here are review topics and practice questions for the final exam.

Final Exam Schedule - 26 May 2010

The FINAL exam scheduling arrangements are FINALLY FINAL.

   IB Computer Science Exam :  Tues 8 June 2010 , 13:00 - 15:00

That is at the same time as Chemistry and Music.  If students think there is a conflict, they need to inform Mr Mulkey As Soon As Possible.

The published schedule, from Mr Morgan and Ms Wood, is incorrect.

 

Finish 2D Game - 28 May 2010

Turn in your game program today.   It should be possible to
send this as an eMail to the teacher.  If you don't think that will work,
ask the teacher how to submit the program.

Here are some answers to the review questions :  Review Answers

NetBeans for IA Projects - 9 June 2010

NetBeans for IA Projects

The Internal Assessment programming project (dossier) counts 35% of the final grade.  It is due in March 2011.  It is quite a large project - 1000-2000 lines of Java code and about 100 pages of paper documentation.  Fortunately that is not as difficult as it might sound. 

The key to making this work is to get some distance from Java programming commands - to think freely about problem analysis and program design. 

NetBeans is a Java IDE that let's you design a GUI interface using drag-and-drop.  The GUI interface is the bridge between the user's actions and the the program's automated algorithms.  By simplifying creation of the GUI, NetBeans helps you put your entire mental energy into analysis and design.  The teacher will give you a CD with NetBeans and information about the project, as well as demonstrating the basic ideas for using NetBeans, as outlined here:

                 Getting Started with NetBeans

The project must create a Java program that solves a real problem according to the needs of a specific end-user.  You will need to start the project by selecting a problem AND an intended user.

Homework - read these documents about suggested topics

                  Project Start         Topics for FIS  

When you return to class on Friday, you should have a preliminary idea of a project topic.  This is not a final decision - you can change it later - but you will not be able to engage in Friday's activity without a topic idea.

Prototypes - 11 June 2010

Prototypes

Nowadays, the most productive Software Development Methodologies include making a prototype.  A prototype is a very simple, restricted version that only works a little bit.  It is used to facilitate discussions with end-users. 

Now that we have NetBeans, it's quite easy to make a GUI prototype.  It doesn't need to actually "do" anything (although it would be nice if some simulated behavior is included). 

The teacher will lead you through an example of constructing a prototype with NetBeans.  Then you can try making your own prototype for your topic.

       Attendance Investigation       NetBeans Attendance Prototype


Starting the Project

Programmers and software developers have struggled with this question for decades, and the struggle continues.  Long ago, there were simple issues to address:

In the 1960's, these questions often led to the conclusion that the need was not urgent and so developers could spend lots of time investigating.

The current versions of these questions are a bit different:

Everything seems to be moving very fast these days, so even simple requests become "urgent".  We have piles of existing software, lots of it free, but most of which solves specific problems poorly.  There are no end of development tools that promise "rapid application development" - at least it's rapid after you've spent a year learning to use the tool.  We open the Internet, navigate to a powerful tool like Google Earth, and imagine that all that information MUST solve our problems, if only we know where to look.  But too often, we don't get what we really needed.

Sadly, the modern computing environment - many PCs connect to the Internet - only PROMISES to improve our lives and make us richer and more productive.  You can look up a price for a camera on E-Bay - say 10.00 EU - only to find out that someone just bid 25 EU and then another bid 35 EU, then POOF your dream of a fantastically cheap camera evaporates in a cloud of dust.  A new PC comes equipped with MS Office and a bunch of other software, but it doesn't actual produce anything - instead, it keeps you busy trying to learn how to use it. 

Back to our original question - how to start a programming project.  The best answer is:  start with some assurance that your work will successfully produce a usable product.  You don't want to waste your time writing a big program that ends up in the global pile of unused software.  You need to ask yourself:

That's a pretty tall order for a high school student, to try and improve someone's life.  It does rule out the most obvious choice for a project:

The standard applications and games are all available in great abundance and need no improvement - or if they do need improvement, it seems unlikely that a high school student is going to do a better jobs than Microsoft's highly skilled and overpaid employees.

So look for a "target of opportunity". 

1.  Find something that is currently being done painfully or badly. 
     Then you can produce a relatively simple program that improves that situation. 

A second big mistake is to write software that is for "everybody".  That would be a "killer app", something that millions of PC users would happily pay 100 EU to buy.  If you can already produce a brilliant piece of software like that, maybe you are wasting your time in high school.  Bill Gates only went to college for 1 year, then he dropped out and started Microsoft.  He really did produce killer-apps that "everybody" needed.  Most high school students need to be a bit more modest.

2.  Find ONE intended end-user.  You will design the solution for THAT PERSON. 
    Maybe there are other people like him/her, but you can't waste your time looking for them.

If you find a good problem/topic, and a single user that you can talk to about your work, it will all be a lot easier.

3.  Start school in August with a clear decision about your topic and your user.
     Then you will be in a position to make progress -
     otherwise you will just be spinning your wheels.

Make a Prototype - 14 June 2010

Continue making a prototype for your project idea.

Final Exam to be returned today.

 

Software Development Problems - 15 June 2010

Start with Analysis

After spending a couple days practicing with NetBeans to make a user-interface, you probably noticed that you are "not sure what to do", at least sometimes.  This happens because you have not carefully investigated the problem and the user's needs. 

Here are some articles about problems with software development, the causes and possible solutions.

Famous Disasters :   20 Famous Software Disasters    Therac-25

Problem: Nature of Software   Software Projects Fail   Creeping Featurism 

Theory:  Waterfall Model(obsolete) Agile Development(modern)  Analysis Stage(IB)

Solution:  Getting Started - quick and simple?  Rapid Prototyping    User Stories 

General Problems :  The Standish Group Study     Why Software Fails        

Software Engineering :  What is it?   The Need for Software Engineering

"Most engineers and scientists do not fully appreciate or understand
software engineering. Even high school students think they can
do software after they learn the basics of Java or C++ syntax.
All too often, software engineering is equated with programming."

Software Engineering - 17 June 2010

Continue reading and THINKING about bad ideas that lead to failure in software projects, as well as good ideas that lead to success - read the links listed on Tue 15 June 2010. (Read as much as you can - you cannot read all of it).  Take a few notes while you are reading, so when we discuss your answers you know where you got the ideas.

Try to think about and/or answer the following:

  1. Do most software projects succeed or fail?
  2. How is software success/failure measured?
  3. Are software failures expensive or just annoying?
  4. What are common causes of software failure?
  5. Is software engineering similar to other types of engineering, like building bridges?
  6. What are common practices that reduce software failure?
  7. Have you ever been a victim of software failure?
  8. Describe 2 famous software project development failures.

** Consider the software systems at FIS as a microcosm of software development. 
** Identify examples of each of the following:

We will disuss your ideas/answers next class. 

JEditorPane for Web Pages - 18 June 2010

Nikos asked "how to make links" that go to web-sites.  It isn't simple.  Here is a sample program that shows how to do it: 

  http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial-JEditorPane.html

We will discuss what you learned from the reading in the past few days.

Something more to consider : eVoting

Year End - Starting the Dossier

Summer Suggestions 2010

  • Summer Reading and Videos
         
    Various Links 
         Learn vocabulary at every opportunity.
         You can look up unknown words on http://www.webopedia.com
     
  • Summer CD Suggestions  (local copy)
          - 
    practice programming each week (so you don't forget)
         - watch a video
         - read a book in JavaBooksAndCode    
          - whatever you do, choose something INTERESTING
    - you'll learn more   
     
  • Prepare to Start Your Project
        When you return in August, you need to have
         - a topic (problem)
         - an intended end-user

    Problem Analysis - Thu 19 Aug 2010

    Discussion :  Analysis

    --> Homework :  Read 1.1 The System Life Cycle (p.2-9) in Meyenn/Jones

    Bring questions to class tomorrow, especially vocabulary clarifications.

    Getting Started - Mon 23 Aug 2010

    Read these examples :  Start Simple

    Now write brief answers to these questions about your project:

    Stage A Analysis Overview - Tue 24 Aug 2010

    Read this : Stage A Analysis Overview and Check-List

    Start writing User Stories (scenarios).  You write a few stories "out of your head", using the information that you already know.  But you must talk to your intended user and get some stories from them.  You can start by showing them the stories you wrote and check whether they are correct/reasonable.  Then ask the user to tell you some stories.  You could prompt them with questions like this:

  • Tell me about something that doesn't work well in the current system

  • Tell me about something that works really well in the current system, that you wouldn't want to give up

  • Tell me about some wishes you have for creating a really good, automated computer system

    More User Stories - Wed 25 Aug

    (0) Before class on Friday 27 Aug, you must discuss user stories with your intended user.
         While you're talking to them, get some sample documents and/or sample data.

    (1) Keep working on user stories.  Write them down, keep them simple and short. 
         Talk to the user about them.  Don't write too many - probably not more than 10.

    (2) Start writing some goals for your project.  These are closely connected to the User Stories,
          as well as your list of Input/Processing/Storage/Output needs.

    (3) Discuss your work with the teacher, especially if you are "uncertain".

    (4) If you run out of ideas and/or energy, spend some time reading the sample dossier(s) :

          Sample SL Project (2010 criteria)              Sample HL Project (pre 2010 criteria)

    For now, you are making rough notes.  You'll need to clean it all up and write more supporting comments and get it all pretty and finished by 30 Sept.  Then it needs to look like the Stage A in the sample dossier.

    ***** HOMEWORK ***** You must bring your textbook to class on Friday.

    Starting the Prototype - Fri 27 Aug

    A prototype is a small sample of what the program should look like.  It's like a trailer for a movie - it shows some highlights. 

    The purpose of the prototype is to facilitate discussions with the user.  Most users need to see something specific.  The prototype helps clarify their thinking and prompts questions. 

    A simple prototype shows sample I/O screens.  A bit more sophisticated prototype also indicates what happens when the user does something - e.g. automation. 

    A really sophisticated prototype is called a functional prototype.  That is an actual Java program that really does something.

    For the IB IA project, a simple prototype is adequate.  Most IB students enjoy programming and want to get started right away, so a functional prototype is attractive.  But it is a lot more work than it appears at first glance, so an I/O prototype is probably preferable.

    An easy tool for the prototype is PowerPoint.  Keep in mind that the prototype does not need to be "complete" in the sense that it contains ALL the features of the finished program.  But it should be long enough that the programmer can have a productive discussion with the user.

    Rapid Prototyping :  http://www.usabilitynet.org/tools/rapid.htm

    Paper Prototyping :  http://www.usabilitynet.org/tools/prototyping.htm 

    NetBeans Tabbed Prototype (functional) : http://dl.dropbox.com/u/239179/ibcomp/netbeans/attendance/index.htm 

    Tic-Tac-Toe PowerPoint Prototype : Tic-Tac-Toe  

    Parallel Development

    Although the Stage A Analysis Overview and Check-List suggests an order for the Stage A Analysis, it's not necessary to do those steps in order.  You probably think about a lot of different things at once.  You can start each piece - Stories, Goals and Prototype - and then add new ideas to any or all of the 3 parts as the ideas come along. 

    Whatever you do, keep ADDING new ideas, and do it quickly. 

    Setting Goals - Mon 30 Aug

    What are "good" goals, as opposed to bad ones?

    Today - write 5 goals on paper (use a pen) and discuss them with the teacher.  This will help keep you on the right track - goals should be the "guiding light" to a successful project.

    Overview of IA Project (dossier)  - Tue 31 Aug

    Apparently the overview of the project was a bit unclear.  You need to get a grasp on the whole assignment:

    1. Stage A :  Thu 30 Sep 2010

    2. Stage B :  Design Overview : Mon 18 Oct
                          
    Detailed Design  :   Fri 12 Nov 2010

    3. Stage C :  Program Finished - Fri 4 Feb 2011
                           (all classes in January devoted to programming)

           4. Stage D + all printing :  Mon 14 Mar 2011

           5. Presentation :  20 min Interview with the teacher,  
                              scheduled between 15 Mar and 25 Mar, 2011

    *** Don't Get Stuck ***
       Learn
    to work quickly and productively
       - otherwise you will have trouble finishing -
       follow advice, ask questions, get help when you're stuck

    (HL) Cancelled - Wed 1 Sep

    Cancelled due to Senior Photos.

    Section 3 - System Fundamentals - Thu 2 Sep

    We will spend 2 weeks discussing System Fundamentals,
    followed by a written test on :

    ==>  Thu 16 Sep - Test on System Fundamentals

    System Fundamentals Overview

    Fundamentals in Pictures

    Fundamentals on Examiner's Web-site

    Data + Algorithms + Organization + Efficiency

      We will be focusing on devices and systems of devices.
      There are 4 important issues when investigating these things:

    1. Data - where is it, how is it stored, how does it move around
        --> data-structures, storage 
       
    2. Algorithms - what is automated and how
        --> storage, presentation, transmission
       
    3. Organization - what are the rules, what assumptions are made
        --> protocols, modules, diagrams
       
    4. Efficiency - how fast is the system, how reliable are the processes
        --> speed, errors, reliability

    Data Storage Basics - Mon 6 Sep

    How does the basic concept of binary enable data to be stored
    in a standard fashion and facilitate data exchange between systems?

    Lecture Notes/Vocab

    Algorithms for Automation - Wed 8 Sep

    What things are happening automatically inside the computer, all the time, to keep everything functioning? 

    Input/Output Devices - Thu 9 Sep

    Video :  Surface Computing 

    Compatibility and Protocols - Fri 10 Sep

    Presentation : Moving Data Around

    OSI Model

    Connecting PCs to Networks - Tue 14 Sep

    Network Fundamentals - 15-16 Sep        

    Network Basics     Network Error Checks

    Monday's Test will cover all the material discussed ABOVE -
    back until 2 Sep.  It will not involve Satellite Phones, but the following
    is still interesting reading, even if it has little to do with Computer Science.

    Iridium Satellite Phones

    Surprisingly, the Iridium satellite
    phone system is still functioning,
    despite an initial bankrupty filing.

    It consists of 66 satellites,
    spread around the globe so that at least one
    is always visibile from any point on the globe. 
    Phone calls are relayed from one satellite
    to the next until the signal can be relayed
    to the the call's recipient. 

    The phones are considerably larger
    than a normal cell phone,
    and the antenna is quite large. 

    Brief history of Iridium from this web-page:

    "The concept of the Iridium satellite phone system arose before cellular telecommunications systems had been globally deployed in the way they are today. It was therefore anticipated that a phone system offering global coverage would be of great commercial value.

    To achieve the goal, Iridium SSC was set up, with Motorola providing the technology and much of the finance. The system gained its name from the fact that originally 77 satellites were planned to orbit the Earth. This had a strong similarity to a nucleus with 77 orbiting electrons - a description that fits the element Iridium.

    The satellite system was completed in may 1998, but some trials and commissioning were then required. The Iridium communications service itself was launched on 1st November 1998 with a call made by the then Vice President of the USA, AL Gore. Services were then offered to all forms of personal users and business.

    Despite the successful technical launch of the system, the uptake was very much slower than anticipated. This was attributed to the fact that the deployment of cellular telecommunications systems, especially using GSM was much faster than had originally been anticipated. With roaming features, users could take their phones to many countries and make calls cheaper than they could over the Iridium system. Also there was a massive initial cost for building and launching all the satellites. Accordingly Iridium SSC entered Chapter 11 bankruptcy on 13 August 1999.

    Initially no buyers were found for the company and it was anticipated that all the satellites would need to be de-orbited so that they would not be a danger when they re-entered the atmosphere. During the period that discussions about this were ongoing a set of private investors re-launched the company as Iridium Satellite LLC and they restarted the service in 2001."

    The current status of the Iridium system is outlined here.  Briefly:

    Here are a few critical comments from another long article:

    Unless you are travelling at sea, or some other extremely remote location, you will probably get adequate service at a much lower cost using a normal cellular phone, thanks to the widespread availability of cell-phone access towers. 

    Test - Mon 20 Sep

    Test on System Fundamentals

    Projects - Tue 21 Sep - Wed 22 Sep

    Bring your projects to work on during class on Tuesday and Wednesday.  If you have questions or need help, this is your chance to talk to the teacher.

    Automation = Programming? - 24 Sep - 27 Sep

    Digital Watch

    Programming Languages - Tue 28 Sep

    Digital Watch Solutions

    Programming Languages

    Coding Concepts - Thu 30 Sep

    Coding Concepts

    UBasic - Fri 1 Oct

    Ubasic Notes

    History of Software Tools - Tue 12 2010

    Today :  Software Development Tools
    -  DBMS
    -  CASE
    -  WYSIWYG
    -  MACROS
    -  SCRIPTING
    -  AI

    Read this as time permits : Automation & Generations of Computing
    Concentrate on the role of automation in computer system development.

    Really Intelligent Computers (long video)

    Thu 14 Oct

    Quiz Monday 18 Oct about Programming Languages and Automation
    back through 24 Sept, especiallty the terms on this page: Programming Languages

    Today we look at SCRIPTING and AI, and answer some sample questions.

    Mon 18 Oct

    QUIZ about Programming Languages and Automation

    Starting Stage B Design - 20 Oct-22 Oct

    Mr Mulkey will by away from school Tue, Wed and Thur.
    You should start on your Design for your IA Project.
    Read these notes and do as instructed.

    Data Structures -1 Nov 2010

    Looking Ahead


    Stage B Design documentation is due on
       Mon 29 Nov
    It must be printed and turned in on paper on that day.

    There will be class time between now and then to ask questions, but most of the work must be done at home.

    Keep in mind that the design must be comprehensive, but that does not mean that it is "perfect".  You can deviate from your design during the implementation (programming) stage.  But your Stage B documentation will be assessed according to whether it is sensible or not.  If it is not sensible, the teacher will make suggestions of how to change it before you write the program in January.


    Mock Exam Preparation

    We will spend 1 week (29 Nov  - 3 Dec) practicing past exam papers.


    Airport Case Study - we will be connecting our discussions to the Airport Case Study, so it would be good to read it once again.  Read Case Study  


    Today - Data Storage Needs

    For each sub-system in the Case Study, outline the data storage needs.   That means

    Start with a PNR - p. 10.

    Some further reading and discussion material

    2 Nov 2010

    Batch Processing vs Online (interactive) Processing

    • The key distinction between Batch Processing and Online Processing is the immediacy of updates to the master data file (central database).  Batch Processing collects lots of inputs, then posts all these inputs to the master file all at one time - perhaps at the end of the business day, end of the week or end of the month.  In Online Processing, single inputs are immediately "posted" to the master file, so the master file is updated every time the data changes.  This means that changes are immediately shared with all the users.  In Batch Processing, changes are only shared after the processing update.  This is inconvenient for the user, but is more efficient for large amounts of data.  Online systems usually require the central server to be constantly connected to lots of users, whereas Batch systems can move all the data to a central location before doing any updates. 

      Real-time processing refers to a system where the processing and response (output) must keep pace with real-world changes.   Real-time processing requires immediate updates (like online systems), but usually real-time processing refers to industrial control situations rather than databases.  A robot must be controlled in real-time to prevent accidents.  An air-traffic-control system must immediately process input and produce usable output for the air-traffic-control operators.  Medical monitoring devices must function in real-time.  Database operations rarely have a fixed time-frame for updates - whether they happen within a second or a minute doesn't matter, as long as they happen quickly and the results can be shared with other users.

      Here are some examples from an airport:
      Air-traffic control (flying and landing) : real-time
      Ticket bookings :  online
      Baggage loading/unloading : batch processing

    Who Am I and Where's My Data? - Wed 3 Nov 2010

    Pages 5 and 6 describe the use of biometric security at airports.

    Investigate these BIOMETRIC terms -
    you should be able to explain how each system works.

    These IDs could take the form of smart cards linked to some type of biometric identification system, such as:

    - iris identification
    - digital fingerprints
    - hand geometry
    - voice recognition
    - facial recognition
    - retina eye patterns
    - signature identification

    Biometrics - http://science.howstuffworks.com/biometrics.htm

    1. Explain why all these security systems use a database.
    2. Describe a situtation when an online database might fail.
    3. Describe an alternative to using an online database - 
      and explain why a database is still required. 
    4. Describe a situation where your alternative (#3) might fail.
    5. Decide which system is most reliable.
    6. Decide which system is least reliable - how do you judge this?
    7. Decide which system is most invasive - what does invasive mean?
    8. Decide which system is least invasive - why?
    9. Describe a non-biometric ID system that is commonly used.
    10. Explain how RFID could replace biometric systems.

    CNN FAcial Recognition FAIL

    Security Scanning Devices
    http://edition.cnn.com/video/#/video/world/2010/11/02/durgahee.security.tech.cnn?iref=allsearch#/video/world/2010/11/02/durgahee.security.tech.cnn?iref=allsearch

    Where the Data Lives - Tue 9 Nov

    Network Applications

    http://www.ib-computing.net/html/program/core/netapps.html 

    • Client-Server
    • Distributed Processing
    • Peer-to-peer
    • E-commerce
    • LAN (local area network)
    • WAN (wide area network)
    • VPN (virtual private network)

    Backups - Wed 10 Nov

    Backups

    Test Announcement

    We will have a test on Monday covering all the topics discussed in November, including the Case Study.  You will receive a copy of the Cae Study to use during the test.

    Peripherals - Mon 15 Nov

    Peripheral Devices

    • Describe 3 different input devices that can be used for security ID.
    • Describe 3 different devices that can be used to input large amounts of numerical data.
    • Describe 2 different ways to output large amounts of numerical data.
    • Explain the difference between removal and non-removable storage media, including examples.
    • Explain what plug-and-play means, including specific examples, and explain why not all peripheral devices are plug-and-play.
    • Describe the peripheral devices found in an electronic ticket check-in kiosk in an airport.

    3d graphics and Kinect - Tue 16 Nov

    Learn how Microsoft Kinect works

    Videos
    3D simulation http://www.youtube.com/watch?v=7QrnwoO1-8A&feature=topvideos
    3d simulation B http://www.youtube.com/watch?v=zS5Mb-CtoZk&NR=1
    3d camera video : http://www.youtube.com/watch?v=bHrmGxwRwzM
    Kinect motion detection : http://www.youtube.com/watch?v=_snSu6vttE8
    Kinect Voice Recognition : http://www.youtube.com/watch?v=jsG_Z2eGK7k
    How Kinect Works (night vision) : http://www.youtube.com/watch?v=6CFoOFZ6ifc

    Articles

    How Kinect Works : http://www.t3.com/feature/exclusive-how-does-microsoft-xbox-kinect-work

    • Think about whether Kinect could be used as an input device on a PC
       
    • How about using it to control a large display in a lobby or an airport
       
    • Explain why a "hands off" display has advantageous over
      physical control devices like a mouse, keyboard, joystick, steering wheel, etc

    Future? 

    Android 3D Interface?
    http://www.androidng.com/future-of-android-apps-ui

    3D Design Concepts
    http://johnnyholland.org/2009/08/19/3d-hologram/ 

    Future Interfaces
    http://www.alltouchtablet.com/touchscreen-tablet-news/apple-plans-multitouch-holographic-3d-interfaces-3031/ 

    • Outline an advantage of a 3D input device,
      as opposed to a 2D input device like a mouse
       
    • Outline an advantage of a 3D (holographic?) display,
      as opposed to a 2D display (monitor)

    Recognition - Thu 18 Nov

    Recognition

    • Watch this video about image recogntion.
      -  Hypothesize how the program distinguishes between the groups.
    • Watch this video about factial recognition.
      - Is this program using a database?
      - Describe a possible use of this type of software in an airport.
    • Watch this video about handwriting recognitioin.
      - If this was available for Windows 95, why is it still not very popular?
      - Explain the difference between character recognition and signature recognition.
    • Read this short article
      - How does T9 work?
      - Describe a similar system for simplifying input to a Java program.

    Homework

    • Read this Wikipedia article about T9

    • Try some experiments with T9 on a cell-phone
      -  Try typing "good" and "home".  These are "textonyms" - they use the same keys.
      Which does the phone suggest?  How can you correct it to be the other word?

    More About Recognition - 19 Nov

    Investigate RECOGNITION issues

    Review for Monday's test

    • Review all the entries in the class web-site since 1st Nov
    • Discuss the following questions with your peers:

      1.  Considering Facial Recognition and Speech Recognition, there are 2 different approaches:
           -  compare the input to a stored data
           -  use heuristic methods to analyse the input
          Which is more useful as a security ID methodology?  Explain.
            Then explain how the OTHER methodology can be useful.
            Address both Facial and Speech recognition.

      2.  For Facial Recognition, describe 2 problems that make it either difficult or undesirable to use in the real-world.
           DO NOT talk about the financial cost.

      3.  For Handwriting Recognition
           (a)  outline a possible approach to recognizing letters in script handwriting.
           (b)  explain why signatures can be matched WITHOUT recognizing letters.
           (c)  describe appropriate peripheral devices for a computer system
                  to perform a signature verification.
       
      4.  Describe how 3D Technology could be useful for an automated
           security system for baggage and packages.
       
      5.  Outline 2 common methods for ID checks in the World Wide Web.
       
      6.  Identify each of the following as requiring real-time, online, or batch processing:
           (a) baggage security scanning
           (b) compiling a database of student photographs
           (c) matching RFID tags and facial images in an airport security system
       
      7.  Consider the following futuristic scenario (possibly in 2020).
           Everyody walks around carrying a device the size of a modern cell phone.
           This device can be used for phone calls and web access.
           The device can also perform the functions of a credit card.
           Hence, nobody carries a credit card any longer.
           The device also performs the functions of a passport 
           and a driver's license, as well as a medical ID and alert bracelet.  

           (a)  Would you suggest storing data for this device 
                  - inside the device
                  - in an online central database
                  - both
                  - neither
                Justify your answer (should be a relatively long answer).

          (b)  Assuming this "system" is reliable and affordable and all people carry
                one of these devices, describe 3 airport computer systems
                that should be changed or eliminated because this device is used -
                and justify your answers.

          (c)  All the functions described above are possible right now -
                the hardware is available, adequate and affordable.
                Explain why database access issues prevent such a device
                from being in widespread use right now.

    Last Week of the Year - 29 Nov - 3 Dec

    Since mock exams run from 6 Dec until 17 Dec,
    next week will be the last week of school this year.
    We will review and practice for the mock exams next week.

    Review and Practice

    Section 3 with Pictures

    Numbers, Numbers, Numbers

    Vocabulary Practice Online    Vocabulary Practice Download

    Start Programming - Thu 16 Dec

    You need to start writing the program for your project.
    You will have 4 or 5 weeks of class time to work on it
    during scheduled classes.  Unfortunately, that won't
    be enough time to complete the program.  You'll also
    need to work at home.  You've already started a
    functional prototype.  Now expand that into a real program.

    It would be good to do some work during the break,
    so that everything stays fresh in your mind.

    Keep in mind that:

    • you need to address the assessment criteria
      In particular
      - use good style when writing your program
         (sensible names, proper indentation) so that
         it's easy for the teacher or an examiner to read it
      - use good programming techniques so that you
         will get credit for mastery factors.
       
    • Read about assessment criteria, mastery factors, etc
      in the Dossier (Project) Guidance page
       
    • Top marks do not require "perfection", but rather
      good performance that completely addresses the
      assessment criteria.

    Finishing the Dossier - 14 Feb 2011

    With the program finished (stage C1), it's time to complete the documentation of your dossier project.  Read these notes.

    Finishing the Syllabus - 28 Feb 2011

    • Reminder - your project (IA dossier) is due on Mon 14 March -
      you must turn in all the documentation printed on paper, as well as a runnable program with sample data files.
    • We have 6 weeks of class left before the Spring break.  In that time, we must finish and review the syllabus in preparation for the final IB Exams in May.
    • Use the review CD provided by the teacher. 
    • Here is a well-written, readable textbook that covers most of the IB SL and HL syllabus.  We will use this in class during our review sessions.  Here is a set of applets illustrating the concepts in the chapters of the book.

    Today - The Operating System -  Illuminated book chap 10, Continuum slides chapter 6

    Operating System Continued - 2-4 Mar 2011

    [HL] Trees - 7 Mar 2011

    Trees Introduction

    Tree Traversals

    Factor Trees

    IA Due - 14 Mar 2011

    (1) Turn in your printed Internal Assessment Dossier project.

    (2) Schedule an interview time (20 minutes) to present
          the running program to the teacher.

    (3) Before class tomorrow, read this paper:  Oracle Database  
         
    Be prepared to discuss this paper during class on Tuesday.

    Answers for Q9 and Q10

    Programming Questions Practice - 18 Mar 2011

    Cafeteria Food Prices

    (a) Explain how a list of all the prices for all the food items in the cafeteria
    could be stored inside a computer.

    (b) Write a Java method for changing the price of one food item.
    It must be consistent with your explanation for part (a).

    Design Library and Cafeteria and OOP - 21 Mar 2011

       DesignOOP2

    JETS - 24 Mar 2011

       Read about JETS (appendix 2) in this document :

        http://occ.ibo.org/ibis/documents/dp/gr5/computer_science/d_5_comsc_gui_1005_1_e.pdf 

       Look for things you don't understand and ask questions in class on Monday.

    Practice Question - 31 Mar 2011

    Homework - spend between 30 and 60 minutes answering question number 2 that was passed out in class.  WRITE your answers on a sheet of paper, using a pen.  Turn it in on Friday 1 Apr (no, really, it's not an April Fool's joke)

    System Fundamentals Overview - Mon 4 Apr 2011

         System Fundamentals Overview  

         Case Study Review Wiki  

    Investigate Mobile/WiFi Printing - Thu 7 Apr 2011

    === Mobile (WiFi) Printing ===

    Issue:

    I want to be able to print at anytime, from anywhere.
    I heard about Mobile/WiFi printing. Can I do it? How?

    FAQ:

    - What equipment do I need (explain it end-to-end)?

    - How much will it cost (TCO)?

    - Does it matter what kind of computer I have -
       PC, Mac, Blackberry, Android Smart-phone, iPhone, etc?

    - Will it be effective - easy to use, fast, reliable?

    - Does it matter what software I am using -
       word-processor, eMail, spreadsheet, web browser, etc?

    - Can I use someone else's printer, or do I need to buy one?

    - Are there any security issues?

    - What if....
         - the paper jams?
         - I lose my UMTS connection in the middle?
         - it's a very long and complex document?
         - someone tries to print at the same time?

    - Do I actually need this? Are there alternatives
       that provide equivalent functionality?

    - Can I use an existing system, or do I need to set up my own?

    Review Problem - 11 Apr 2011

  • Counting Frequencies with Arrays

    Review Reading & Questions - 13 Apr 2011

    LOW-COST WIRELESS SENSOR NETWORKS

    Here is an interesting article about connecting appliances and other "smart" devices:

    http://www.eurekanetwork.org/projects/success-stories/-/journal_content/56/10137/868372?refererPlid=164106 

    Here are some practice questions about the article:

    1. Explain what a smart (intelligent) device is.
    2. Outline a reason for having an intelligent fridge (refrigerator) instead of a simple, old-fashioned one.  Include an example of a useful task that it might perform as a result of being intelligent.
    3. Explain why sensors are important for intelligent devices.
    4. Describe a situation where batteries are clearly more desirable than cabling, referring specifically to an intelligent device with sensors.
    5. Explain why AD converters are generally used with sensors.
    6. IPV6 uses 256 bit IP addresses, instead of the old 32 bit IP addresses.  Explain why this is important when connecting sensors to each other.
    7. Which is more appropriate for a sensor network - peer-to-peer or client-server architecture?  Explain why.

    Check here later for sample answers.

    Airport CCTV Software - 14 Apr 2011

    Here is a video about using software to scan CCTV videos,
    so that people don't waste time watching the recordings:

    http://www.scientificamerican.com/video.cfm?id=761232512001 

    Very pertinent for the Case Study.

    Artificial Intelligence in Your Cell Phone - 16 Apr 2011

    Watch this video about image recognition and further Artificial Intelligence based tools available at Google Goggles:

    http://edition.cnn.com/video/#/video/tech/2011/02/21/nr.artificial.intelligence.hand.cnn?iref=allsearch

    Here are some related questions:

    1. Explain the process (algorithm) that recognizes something like a Kleenex logo.
    2. Outline two significant reasons that the image-recognition algorithm MUST run in the "cloud" - that is, it could not run locally, inside your phone, without an Internet connection.
    3. Have a look at the Google Googles site. Explain why a user must download different software for different cell phones.
    4. Outline 3 significant AI algorithms that are involved when a user takes a picture of a restaurant menu and asks for a translation.
    5. Explain why the app can solve Sudoku puzzles, but cannot play Scrabble.

    Check here soon for sample answers.

    **  Vocabulary Practice - 19 Apr 2011

    Vocabulary is important because the exam will contain technical vocabulary words because:

    The best way(s) to practice vocabulary?

     

    Summary Review - 28 Apr 2011

    The followihg documents contain lots of short questions, covering most of the syllabus.
    The "answer" documents contain sensible answers (but other answers are possible).

    Sections 1-3 for SL and HL     Answers for sec 1-3

  • Sections 4-7 for HL               Answers for sec 4-7

    These documents are also available on your review CD.

    *** SUGGESTION ***

    Study with a partner if possible -
    you'll both learn more, and
    it will be faster and more fun.

    *******************