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
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.
More Calculations and Errors
Homework: Why do calculation errors occur? http://ibcomp.fis.edu/numbers/numbers.html
More Math Errors : Bad_Math
Homework : Read p. 57-62 in David Schmidt's Book, Chapt 3
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 problems with Input/Output in GUI mode
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) ;
Longer math problems - use lots of variables and a List box for output.
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
![]()
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
Finish up whatever math problems you have started.
Tomorrow, Wed
16 Sep, turn in a working program
at the beginning
of class.
Turn in your WORKING program by sending an e-mail to:
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.
Local logins - log in as : ib11
Using www.getdropbox.com
Making a password program in Java.
Homework: In BluePelicanJava do the questions 1-12 in
section 3-3.
Turn in answers ON PAPER on Monday 21 Sep.
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:
Handling Times - a case-study of a problem that requires String manipulation and validation, as well as conversions between String and integer variables.
Practice : Times Case Study
Reading : If..then.. decisions
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.
== Today's BIG Idea ==
Computer Science
concerns itself with SYNCHRONIZINGIn 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
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.
Remember that your program is due on Friday 23 Oct.
Here's one more clever programming technique:
** 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.
Turn in your program together with a report, as described here:
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.
More about substitution in the Adlibs program.
Using a LOOP to read a longer text-file
Money Counter - statistics for a file of numbers
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
We will discuss the Analysis and Design of this system.
Practice problems in Simple Checkouts
Test on Tuesday 17 Nov about FILES - partly with the computer, partly written.
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)
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 .... |
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
Data Analysis - the CIA Factbook
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.
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.
Finish #6 in Arrays =
Lists
It must store the FOODS
and PRICES in a text-file and read that data when it runs.
Payroll Database in Parallel Arrays
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
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.
Finish #6 on the Simple Sorting Practice
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.
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
Homework : Find out how an INSERTION SORT
works.
Be prepared to EXPLAIN it in class on Monday.
Inserting - some programming practice
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.
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 (with answers)
The results on the Top-ten Test were poor, so we need to do more practice with programming arrays.
Finish #1-#4 before Monday (or as much as you can in the time
available).
Practice, practice, practice.
Songs.java with answers an ArraysPrac1 #1-4
Do these problems: Yesterday - finish this as homework
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).
Homework : Finish #5-7 in ArraysPractice1
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 Automation with Packing Boxes
http://ibcomp.fis.edu/simulation/loading.html
Homework: Do problem #4 - the HELP(99) function
Automation + Cleverness = Artificial Intelligence
Homework : #7 (above) - be sure to WRITE DOWN your
answer,
whether it is on paper or in a computer document
Class cancelled for early dismissal.
Discussed students' examples of sub-optimal automation.
No homework today.
* 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).
Introduction to Object Oriented Programming
Homework : finish #1-4 with the Parking program
HL students : in the IB textbook, read about Inheritance, Encapsulation, Polymorphism
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.
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"?
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.
More practice with Task Manager.
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)
Homework - view this: Harvard Lecture - Introduction to Binary
Calculations
(watch the first 30 minutes)
HL Students - view this lecture about Huffman Coding
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
Beale Ciphers - Cipher Maker
(extra stuff for later UTF-8
Encoding , Steganography )
and other file-structure mysteries.
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 - especially in the Internet
How Routers Work Early Internet Packet Switching (video)
Reminder : Test tomorrow
Copying Files from Web-Servers
** 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.
Continue discussing and working on:
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.
**
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.)
***************
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
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 - 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 - 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
QUIZ - about a program similar to More Kings (will only last 15-20 minutes)
Today's discussion:
Connections between Spreadsheets and
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/
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.
Sorting a 2D Array - by various fields (lecture)
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.
REMEMBER - quiz tomorrow - on Paper (no computers)
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 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.
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.
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
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:
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
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
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.
Continue making a prototype for your project idea.
Final Exam to be returned today.
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."
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:
** 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.
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
Discussion : Analysis
--> Homework : Read 1.1 The System Life Cycle (p.2-9) in Meyenn/Jones
Bring questions to class tomorrow, especially vocabulary clarifications.
Read these examples : Start Simple
Now write brief answers to these questions about your project:
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
(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.
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.
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.
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
Cancelled due to Senior Photos.
We will spend 2 weeks discussing System Fundamentals,
followed by a written test on :
==> Thu 16 Sep - Test on System Fundamentals
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:
How does the basic concept of binary enable data to be stored
in a standard fashion and facilitate data exchange between
systems?
What things are happening automatically inside the computer, all the time, to keep everything functioning?
Video : Surface Computing
Presentation : Moving Data Around
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 The phones are considerably larger |
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:
Satellite phone signals are very weak, and there needs to be an unobstructed line of sight between your phone's antenna and the satellite it is communicating with.
Receiving a call is slightly more complicated. Chances are you will usually have your phone's antenna in the 'closed' position - ie, not extended, and rotated to lie against the side of the phone, rather than sticking up in the air. So when a call comes in, the first thing that happens is the phone will make a chirping tone and displays a message 'Rotate Antenna'. When the phone detects the antenna has been rotated up it will then accept the call, and only when the phone rings normally can you answer the call.
If you buy a phone from Telestial, you'll be paying an upfront charge of $1495, but then you will save on rental fees and will probably pay a lower cost per minute for airtime as well.
But many long distance phone services (especially discount phone services) haven't been programmed to understand what the international codes for Iridium are, and will give an error signal when a person tries to call an Iridium number. And if your caller can get a call to go through, they might find themselves paying anything up to $15/minute for the call! This is outright extortion.
A recent (Feb 2007) Frost & Sullivan report exposed a serious deterioration in Globalstar service. Only about one third of calls placed through Globalstar were actually successfully completed, whereas for Iridium there was a 95% - 98% success rate. Two out of three calls failed with Globalstar, whereas only one out of 20 - 50 calls failed with Iridium. For this reason, most people will feel confident choosing Iridium, and very few people would feel comfortable choosing Globalstar.
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 on System Fundamentals
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.
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)
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.
QUIZ about Programming Languages and Automation
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.
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 materialBatch 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
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 |
Biometrics - http://science.howstuffworks.com/biometrics.htm
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
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.
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
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/
Recognition
Homework
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?
Investigate RECOGNITION issues
Download and experiment with SmartWriter
Experiment with a T9 SMS handy
Read about Facial
Recognition and associated problems
- read http://www.face-rec.org/interesting-papers/General/Chapter_figure.pdf through
section 2.2.2
after that, it gets pretty
technical
Review for Monday's test
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.
Vocabulary Practice Online Vocabulary Practice Download
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:

With the program finished (stage C1), it's time to complete the documentation of your dossier project. Read these notes.
Today - The Operating System - Illuminated book chap 10, Continuum slides chapter 6
(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.
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).
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.
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)
=== 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 -
- Will it be effective - easy to use, fast, reliable?
- Does it matter what software I am using -
- Can I use someone else's printer, or do I need to buy one?
- Are there any security issues?
- What if....
- Do I actually need this? Are there alternatives
- Can I use an existing system, or do I need to set up my own?
LOW-COST WIRELESS SENSOR NETWORKS
Here is an interesting article about connecting appliances and other "smart" devices:
Here are some practice questions about the article:
Check here later for sample answers.
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.
Watch this video about image recognition and further Artificial Intelligence based tools available at Google Goggles:
Here are some related questions:
Check here soon for sample answers.
Vocabulary is important because the exam will contain technical vocabulary words because:
The best way(s) to practice vocabulary?
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.
*******************