IB Computer Science Syllabus Notes

    with notes by Dave Mulkey, Germany, 2015

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

1.1.1

Identify the context for which a new system is planned.

Planning (analysis) starts with an investigation of the current problem.

The analyst must consult all the stakeholders, including:
Planning must clearly define the context for the system, including:
Planning must end with a list of specific goals that can
be used by designers and developers to guide
the project to a successful conclusion.

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

1.1.2

Describe the need for change management.

A company cannot simply buy a new computer system and install it.
It is probably replacing or supplementing an existing system.
Installing new hardware and software results in changes that require:

The actual change-over process can be managed in 3 standard ways

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

1.1.3

Outline compatibility issues resulting from

situations including legacy systems or business mergers.

Legacy issues result from things left over from the past. 
In computer systems, we need to support old standards
even if they are no longer very useful - because some
people are still using that old technology. 

During a business merger, there are likely to be
two different sets of hardware and two different
sets of software that must work together successfully.

Compatibility refers the issue of whether two
computer systems can function together successfully.
The most significant issue is often DATA compatibility
Companies store lots of data (many terabytes) containing customer data,
 financial records, business documents, etc.  Merging companies probably
want to keep all the data from both companies, but not in two different formats.

International differences are especially difficult, as they continue even after a merger.
Time differences in different continents don't disappear, so continual data conversion
is required.  Language differences may require two copies of data to be stored,
or two versions of applications to run. Different character sets may be required
for the two languages.

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

1.1.4
Compare the implementation of systems
using a client’s hardware with hosting systems remotely.

Remote access is always slower than local access. 
Remote operations do have the advantage that they are centralized in a server.
Hence any updates are very convenient as they must be installed
only at the server, rather than distributing them to all the client machines.

"Thin clients" are simple keyboard+screen installations that don't store data
or run software locally.  Instead, all storage and processing happen at the server,
and only input and output happen on the "thin client" machine. 
This allows very inexpensive and simple hardware to be purchased by the client.
It's currently popular to run applications as "web-based apps". 
That means the software is stored and executed on a web-server,
and the client browser behaves like a thin-client. 

"Browser-based" software often runs on a large variety of browsers
and hardware, for example on PCs as well as smartphones and tablets.
Software-as-a-Service (SAS) refers to "renting" software on a temporary basis,
rather than selling the software or the software license.
Since browser-based software can be so easily distributed,
it is often provide for free, without no license cost,
and the users pay for other things like content (e.g. music, videos, etc)
that can only be downloaded with the SAS software.
A typical example is Apple's iTunes - free software
for buying music titles.

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


1.1.5
Evaluate alternative installation processes.

The cheapest changeover approach is Direct Changeover,
shutting down the old system before turning on the new system.
This is simple and cheap, but prone to failure.

Phased-implementation gradually reduce the use of the old system
while gradually increasing use of the new system.  For example,
if a school installs a new web-site, they might start by placing
all new information in the new web-site, but keep the old web-site
running with all the old information. Then they can gradually transfer
old info from the old to the new system.

Parallel Running uses both the old and the new system simultaneously. 
That means that all information and changes are done in both systems. 
This is double work for the users and hence quite expensive.
However, this method is very safe.  If the new system fails, we still have the old one.

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

1.1.6
Discuss problems that may arise as a
part of data migration

"Data" includes not only values stored in databases (name, phone, address)
but also pictures, documents and any other files that are important to a business. 
Small data items like dates may be quite different in various countries,
so they require conversion before use in another country.  


Validation rules are used to check dates and other data items to avoid conversion errors.
For example, a month number must be smaller than 13, a day number must be smaller than 32.

Data-migration refers to copying, converting or moving data from one system to another.

Data-structures refer to collections of data such as arrays, objects, lists, files, etc.

Data migration from an old system to a new system is often a complex task. 
It must be done carefully to avoid data errors, especially if it involves money. 
For example, 1000 Rupees is not the same as 1000 Euros.  A good validation check
might reject a price of 1000 in Euros, but accept a price of 1000 in Rupees. 

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

1.1.7
Suggest various types of testing

During development, programmers probably spend considerably
more time testing and debugging than the time they spend actually writing code. 

Testing methodologies include:
- black-box testing, which means running a program and typing in sample data without reading the programming code
- white-box testing, which means reading the code before and after running the program
- automated testing, which means that the computer generates it's own test data
(or reads it from a file) and simulates user input, and then checks whether
the results match the actual correct results

A program that does automatic testing is sometimes called a "test harness".

Debugging refers to finding errors in a program and correcting them by changing the program code.
This is done by programmers during development.

Beta-testing is when an almost finished application is given to a small set of knowledgeable users,
who then test the program "in the real world".  This is done by users.
The users report back problems to the programmers, who fix them.

Acceptance testing is done once the software is finished. 
Users install and test the software to ensure that it meets their needs.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1.1.8
Describe the importance of user documentation

User documentation includes pop-up instructions, books, tutorials,
 help menus, telephone support call centers, etc.

In the old days, software was delivered on disks, accompanied by a MANUAL -
that was a thick paper book.  The modern approach is to distribute the software
by downloading from a server.  User documentation is on-line -
presented in a web-site or a digital document.

Thanks to new graphics technology, we can provide video tutorials
that users can view whenever it is convenient, as well as interactive tutorials
where the user is actually using the software at the same time they are viewing instructions.


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

1.1.9
Evaluate different methods of providing user documentation

User documentation methods include :
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1.1.10

Evaluate different methods of delivering user training

Common methods include :

Self instruction can be frustrating and ineffective for some employees,
as there is no guarantee of success.

Formal classes (local) probably occur during work time,
taking employees away from work.

Online training is often cheaper than formal local classes, as it can be
offered to a larger number of participants, without the instructor needing to travel.

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

1.1.11 (L2)
Identify a range of causes of data loss

Data loss is when data goes missing (deleted or lost),
or gets changed to be incorrect, or is saved
in a place where it cannot be found.

The most common cause of data loss is accidental user mistakes.
This can be avoided by thorough training, as well as warnings from the
computer system when something bad is about to happen.
But the best safeguard against data loss is backups.

Malicious destruction means destroying or breaking something on purpose,
either to hurt someone else or to gain advantage, e.g. when a politician
hires hackers to destroy another politicians web-site.

Natural disasters include
flood, fire, earthquake, etc.

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

1.1.12 (L2)
Outline the consequences of data loss in a specified situation

Lost medical records ==> incorrect treatment
    This is especially a problem in a hospital with many 
     doctors and nurses who don't know the patient personally.
    Also problematic if a badly injured person cannot talk.

Cancelled hotel reservation ==> a tourist has no place to stay

We rely on many services that are managed by computers. 
Without the correct data in the computer, we get no service or incorrect service.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1.1.13 (L2)
Describe a range of methods that can prevent data loss.

Failover means backup hardware automatically starts working when an error occurs (fails).

Redundancy means extra copies - backup copies of a file, entire hard-disks copied onto an external hard-disk, tape backups of hard-disks stored in a safe place.

Removable media includes
external hard-disks, USB sticks, writable DVDs, tapes.

Restore is the process of retrieving data from the backup and "fixing" incorrect data.

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

1.1.14

Describe strategies for managing releases and updates.

Releases
are when an application or system achieves a new version.  This usually requires manual installation and makes large changes and improvement - for example, going from Windows 7 to Windows 8.

Updates smaller changes than releases.  This usually fixes bugs or adds small improvements like security changes.  This is often managed by automatic downloads and installation. For example, changing from Java 1.6.2 to 1.6.3

Patches are very small changes, usually fixing bugs.  Usually installed automatically.  This is not a version change, and does not add any new features.  For example, OS patches.

Releases, updates and patches are usually deployed (distributed)
by downloading, sometimes automatically.

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