IB CS Guide
IB CS Guide
IB CS Guide
2004
v4.1
TABLE OF CONTENTS
1. INTRO 2. MASTERY FACTORS 3. ASSESSMENT CRITERIA A. Analysis of the Problem B. Design C. Data Structures D. Algorithms E. Testing Strategy F. Hard Copy of Test Output G. User-friendly Features H. Error-Handling I. Program Implementation J. Programming Style K. Evaluation L. User Manual
1. INTRO
The Program Dossier is an individual piece of well-documented work completed during the course involving a problem that can be solved using computer systems. The emphasis is on the use of a logical approach and analytical thinking from definition and decomposition of the problem through to its solution by constructing algorithms in a high-level modular programming language. This can be carried out in a procedure- oriented or an object-oriented environment. The Program Dossier is internally assessed by the teacher and externally moderated by the IBO. Choice of Problem Candidates are free to choose problems generated by themselves or their teacher. They can take full advantage of local resources and circumstances, but must make choices that allow the mastery of the objectives to be demonstrated. Candidates may share the same problem to be solved or the same initial scenario, but collaborative work is forbidden. Teachers are expected to give educational guidance at each stage of the design process, but the Program Dossier of submitted work must be that of the candidate alone.
Some dossier ideas from Shashi Krishna (teacher in IB OCC discussion thread 24/03/2003): 1. CAS hour database - every IB school has the CAS hour requirement and so this would be in-house and getting information would be easy. 2. Lab Inventory System for keeping track of machines, labs and machine info. 3. College Application Database - useful for high school counselors who want to keep track of the students applications and college info.
Time Allocation It is expected that approximately 35 hours teacher contact time will be devoted to the Program Dossier, including guidance on format, presentation and contents. Some of the time teaching the syllabus content will also involve work connected with the Program Dossier, but this does not include time required by students to work on their own to develop and complete their dossiers
Weighting The program dossier is worth 35% of the final grade. +Paper 1 is worth 30% + Paper 2 is worth 35%= 100%
Teacher Assessment Teachers judge candidates performance by using level descriptors against the relevant criteria which are related to the objectives. The criteria and achievement levels must be applied to the work in the Program Dossier regardless of the number of aspects in which mastery is demonstrated. After this a mastery factor is applied which depends on the number of different aspects in which mastery is demonstrated. The assessment of the Program Dossier is moderated externally. Only the code designed and written by the candidate must be taken into account when applying the assessment criteria. If the Program Dossier does contain two independent programs then the final marks submitted should be a holistic judgement reflecting the Program Dossier as a whole, not an average of the work contained in it. It is therefore essential that both programs should be fully documented.
3
PASCAL Pascal could be the language of choice for those who dont want to take risks with their students PURE and Pascal are very close therefore students dont have such a gulf between programming theory papers [IBO email thread Nov 16, 2001 Richard Jones, UWCSEA Singapore] I am teaching C++ at the moment and used to teach Pascal. These are pretty similar, but C++ does let the careless programmer get into more trouble at times, - for instance, it allows a program to write beyond the end of any array, where the version of Pascal I used would flag the problem with an error message. [IBO email thread Nov 17, 2001 Jack McCormack
DOCUMENTATION A typical, good quality, Higher Level dossier will have 10-15 pages of documentation (not including the program listing and sample runs [Deputy Chief Examiner Glenn Martin, Oct. 24, 2000]
FORMAT [p. 54] All the candidate's work must be submitted together as a single document. The work can be stapled or put into a ring-binder. All information required for the Program Dossier must appear as hard copy. Diskettes, CD-ROMS, etc. must NOT be included within the Program Dossier or sent to the moderator. There MUST be a Table of Contents and all written documentation should be word-processed, except where it is felt necessary to include rough notes. The pages of program listings and sample runs must be separated AND labelled and not submitted as continuous sheets. All the pages must be numbered. The numbering can be sequential (1, 2, 3, etc.) throughout the entire Program Dossier or it can be done according to the sections (A-1, A-2, A-3, B-1, B-2, etc). This may be easier, since each item can be numbered sequentially as it is completed. The page numbering can be done by hand, but NOT recommended! The number of pages associated with each item may vary according to the nature and complexity of the problem being solved as well as its programmed solution. However, as a guideline, an approximate number of pages is given (by the IB) in the following table. All of the items listed the table must be included in the Program Dossier ITEMS TO BE INCLUDED 1 2 3 4 5 6 7 8 9 10 11 TABLE OF CONTENTS STATEMENT AND ANALYSIS OF THE PROBLEM DESIGN PROCESS DOCUMENTATION DATA STRUCTURES TESTING STRATEGY EVIDENCE OF USER FRIENDLINESS ERROR HANDLING FACILITIES HARD COPY OF TESTING PROGRAM LISTING USER DOCUMENTATION CONCLUSIONS/EVALUATION NUMBER OF PAGES
(APPROX)
53 pages total
2. MASTERY FACTOR
Candidates have to demonstrate mastery of various aspects of their chosen programming language by documented evidence consisting of one program (but not more than two independent programs) that addresses a single problem. Mastery is defined as the ability to use an aspect appropriately for some non-trivial purpose which is well documented. The candidate must attempt to show mastery of at least nine of the following aspects [but you will attempt all of them].
The first three go together: 1. INSERTING a new data item into a LINKED LIST or TREE Note: It is not sufficient to add a data item only to the front or only to the rear of a list 2. DELETING a data item from a LINKED LIST or TREE Note: It is not sufficient to delete a data item from only the front or from only the rear of a list. There must also be proper disposal of the allocated memory (for example, updating the free space pool in an array implementation, disposing of a node in a pointer implementation). 3. SEARCHING for a data item in a LINKED LIST or TREE
Candidates must attempt to show mastery of the following aspects: - adding directly a new record to a file - deleting directly a record from a file - searching directly for a record in a file. To satisfy these requirements, candidates must carry out file manipulation in such a way that files do not need to be read into RAM for manipulation. [Computer Science: Clarification of Internal Assessment Details February 2000]
4. ADDING DIRECTLY a record to a file Note: Do not read it into an array, alter it and write it back again, as this is not direct (random) access. Richard Jones, Singapore Either last year or the year before, a clarification on this was sent out to all schools because there was (still is) confusion about what must be done to demonstrate mastery when adding or deleting records directly from a file. It is intended that when adding a new record, the record will be added via main memory, then an appropriate place for it will be found in the file (stored in secondary memory where the record is then stored). On the other hand, the entire file should not be loaded into main memory (i.e. as a linked list or tree) where the new record is added as a node and then the entire file is rewritten to disk. [email from Jack McCormack, March 27, 2002] The file manipulation must be done in such a way that files do not need to be read into RAM for manipulation. In other words, When directly adding new records to a file, it is not acceptable to read the file into RAM, add the data, and rewrite the file. [Computer Science: Clarification of Internal Assessment Details February 2000]
Summary To meet the requirements of the Mastery of Aspects for Higher Level, direct manipulation of files must be carried out in such a way that the whole file does not need to be read into RAM.
5. DELETING DIRECTLY a record from a file The record to be deleted must be found directly by searching the file in its actual location (by, for example, using a binary or linear search, reading a record, or small block of records, at once). The record could then be directly deleted (if the programming language supports this), or marked for deletion by using a flag field, or by using a rogue value in the key field. However, it is not acceptable, for example, to delete a record from a file, to read the whole file into a linked list or tree, to delete the node, and then to write the data back to the file. (However, this manipulation would satisfy the requirement of being able to delete a data item from a linked list or tree.) Provided the file size alters, or a record marked for deletion is actually overwritten during the addition of new records, this manipulation would meet the requirement. [Computer Science: Clarification of Internal Assessment Details February 2000] In the case of text files, mastery would depend upon whether a candidate has, for example, removed a line (or other chunk of data representing a discrete record) from the text file and either marked that as a space that could be reused in a subsequent add operation, or shuffled following records over it. That, in turn, would depend upon whether the file is maintained with serial or sequential organization. Either way, the data in the file is manipulated directly (not, for example, read into an array, altered and written back). " [Diploma Programme Coordinator Notes, February 2002] 6. SEARCHING DIRECTLY for a record in a file
Notes from email discussion threads on ADDING, DELETING AND SEARCHING DIRECTLY:
The term "direct-access" is not very common in the literature - most books call this "random-access". So when looking for a book, look for random-access files. In several languages, the command that implements the "random" part is called "seek" (or "fseek" in C). It is the use of the seek command which distinguishes random access files. In PURE, this is the "moveto" command. So I would look for "seek" in a book index. And I think HL students should learn to use the "seek" command (or it's equivalent). Various languages use a large variety of commands for "opening" the files to enable random-access - in C++, these could be opened in "binary" mode (I believe that is correct, but I'm not really a C++ expert). In Visual Basic, the files are opened for "random" access, and in Pascal it would be a "file of recordtype". In the past, languages like Pascal provided read/write constructs for "records", and these would normally be stored in random-access or binary files. This concept has disappeared in modern OO languages like Java, where you can only read/write single fields - there is no "record" construct. So if you look for "records" in the literature, you will probably only find useful stuff for older languages, like Pascal and Basic. Modern languages and introductory textbooks don't spend much time on random-access files - streams have become very popular, especially for distributed computing. The growth of distributed computing models seems to have displaced the more traditional local file concept, so there really isn't much about random-access files in modern textbooks. I just started using Java in my IB course last year and spent several months searching for an appropriate text-book. One thing I looked for was a chapter on random-access files, but never found that in any book. The best book I found was "Computing Concepts with Java Essentials", by Cay Horstmannm. He devotes about 25 pages to streams, and 5 pages to the RandomAccessFile class. This seems to be the trend in CS1 textbooks these days. I believe a note in one of the IBO publications a couple years ago said something like "use of hashing in directaccess files is sufficient to demonstrate mastery". But I don't have the exact quotation handy - perhaps someone else can provide the exact statement. In any case, hashing algorithms are covered in depth in many text-books, but not necessarily in relation to files. Some notes on this specific topic are available at : http://www.ib-computing.com/Files_HL.htm . I will write my own notes about random-access. I will keep looking for good resources - if I find anything, I'll post it. [Dave Mulkey, 31/08/2003, OCC Computer Science discussion thread, http://web3.ibo.org/ibis/occ/fusetalk2/forum/messageview.cfm?catid=19&threadid=3810]
There is no restriction regarding text or binary files of data. However, random access is clearly a requirement."
8. USER-DEFINED FUNCTIONS Note: In this context a function is defined as a subprogram that evaluates to a single value (a returned value) The implication of a user-defined subprogram would be that it would need to be a function and thus return a value otherwise it would be just another procedure. Richard Jones, Singapore 9. USING ARRAYS, RECORDS, OR POINTERS AS PARAMETERS Note:
The main weakness I have seen in some dossiers is the trivial use of parameters. I have seen some programs with 10-20 procedures and functions where parameters were only passed in one instance and global variables were used everywhere else. This does not demonstrate mastery of using parameters. Jack McCormack
11. Using more than one kind of COMPOSITE DATA STRUCTURE or using one hierarchical composite data structure Note: A composite data structure is one made from other data types. An example is record. A hierarchical composite data structure is one which contains more than one element and at least one of the elements in a composite data structure. (Example: An array of records is considered
to be a hierarchical composite data structure because an array is one composite data structure containing elements (records) which are also composite data structures, says Jack McCormack). A file of records is not a hierarchical composite data structure (Dave_Mulkey@fis.edu. Jan 4, 2001)
Another example is a record which has one field defined on another record or array Examiners have again been discussing the issue of composite data structures and have decided that where candidates use two different composite structures (example an array of records and a linked list of records) that also fulfils the criterion. (Jack McCormack, Oct 24, 2000)
DYNAMIC DATA STRUCTURES AND POINTERS [p44 Assessment Details] Your program must include linked lists or trees Most candidates will probably use pointers to implement these linked data structures. Consequently, most students will use a programming language which supports pointers (ie. PASCAL). Although HL students have to learn to use pointers as part of the syllabus, the demonstration of Mastery of pointers in the Program Dossier is NOT required. Your program must properly DISPOSE of de-allocated memory by returning it to a free memory pool. For example, if the program does not properly dispose of de-allocated memory then the student would not be considered to have shown mastery of deleting an item of data. Obviously, a student who has used pointers in the Dossier will probably be better prepared for the exam than one who has not.
THEDOS~1.DOC - BY S. BUCHNER 09/22/03 8
You must create a MASTERY FACTOR INDEX which includes the following: A) A list of the 11 mastery factors B) A description of how you will use demonstrate each factor C) Indicate exactly where you will each factor (so the examiner can find it easily if he/she cant find it easily no credit will be given for that factor) D) Indicate exactly where the explanation for using the mastery factor can be found (in C-Data Structures and/or D-Algorithms) Include page reference numbers in the program and in the documentation!
This should be done in the form of a chart, for example this one:
Page no(s) of Where in my program to find this Mastery Factor Page no(s) where the Explanation for using this Mastery Factor can be found on page..
9
Mastery Factor
1. Inserting new data item into a linked list 2. Deleting a data item from a linked list 3. Searching for a data item in a linked list 4. Adding directly a new record to a file 5. Deleting directly a record from a file 6. Searching directly for a record in a file 7. Merging two sorted data structures 8. User-defined functions
11. Using more than one kind of record (composite data structure) AND array of records (hierarchical composite data structure)
3. ASSESSMENT CRITERIA
A. Analysis of the Problem [3 marks]
ASSESSMENT GUIDELINES for Analyzing the Problem: [p. 55] This should include a brief statement of the problem as seen by the end-user. A discussion of the problem from the end-users point of view should take place with both the user's input and desired output being considered. The analysis should state a clear understanding of the problem and demonstrate how the problem can be solved using a computer-based solution. This analysis should also take into account what input and output will occur and what calculations and/or processes will be necessary to obtain the desired output. ACHIEVEMENT LEVEL for Analyzing the Problem: [p. 47] The documentation should contain a thorough discussion and analysis of the problem which is being solved. This should concentrate on the problem and the goals which are being set, not on the method of solution. A good analysis includes Sample data, Information and requests from the intended user, and some background of how the problem has been solved in the past. 3/3: The candidate analyses the problem to be solved Notes from Chief Examiner Glenn Martin, Bahrain, 2000 The examiner will look for five things: 1. A clear description of the problem 2. Sample data 3. Information and requests that the user will want 4. Background of how the problem has been solved in the past 5. The objectives Note1: Dont mention the word computer here. Note2: Dont mention array, data structures, etc. here Note3: Place any interviews in an Appendix, and just summarize the interviews here. Notes from Richard Jones, Singapore, 1999
In this section you need to state clearly what you are trying to solve. You must not fall into the trap of mentioning the solution! At this stage you will not have clearly thought through the analysis of the problem to even consider the solution. Avoid writing statements such as I have decided to use..... This clearly says that you know what the solution is. It is much better to give a brief introduction to the area in which you are working and then state the specific problems. Use phrases such as .... The supermarket in question found difficulty in ordering the right quantity of perishable goods for the day. The doctors at the surgery realised they were not running an efficient scanning process because they lacked the necessary information about their patients.
THEDOS~1.DOC - BY S. BUCHNER 09/22/03 10
A. (i)
Notes from Richard Jones, Singapore, 1999: If the system is a manual one and computer solutions already exist then dont be afraid of saying so. [They may not do exactly what you wish them to or they may be too expensive to buy.] However they ought to be mentioned. It is easy to fall into the trap of listing solely bad parts of the existing solution. You should avoid this at all costs. Mention what is good and weak about the system in use. Dont forget to explain each point as this will help you when you form your solution. Good points can be kept or mirrored by your computer solution.
THEDOS~1.DOC - BY S. BUCHNER 09/22/03 11
(ii)
(iv)
12
B. Design [6 marks]
ASSESSMENT GUIDELINE for Documenting the Design Process: [p. 55] An illustration indicating the top-down design of the solution to the problem should be produced using pseudo-code or other suitable means candidates should create an algorithmic representation of their solution. The algorithms produced should be independent of the target programming language. A programmer using almost any high-level programming language should be able to generate a computer-based solution from the submitted algorithms. Thus, it is imperative that all algorithms/subalgorithms that are essential to the functioning of the resulting program be included.
ACHIEVEMENT LEVEL for Documenting the Design Process: [p. 48] The solution to the problem should be thoroughly designed before any programs are written, and this design process must be documented. Good top-down design results in a flexible, general, extensible solution. In this category, both the quality of the resulting design and the design process are being evaluated. The design must include a detailed representation of the algorithms used (via pseudo-cod, structure diagrams, etc) that clearly illustrate the candidates solution. Top-Down analysis (solution decomposition) means breaking down a problem into smaller problems. These are then broken down in turn until ultimately a pseudo-code representation is obtained which can be used as a basis for a program construction. It is appropriate to use diagrams for the early stages. However for the non-standard or non-trivial module, the final stage MUST be pseudo-code at a level of detail equivalent to PURE [though you dont have to use PURE]. This final stage of design should lead easily into coding in an appropriate programming language. For example, an object-oriented design should be able to be coded into several object-oriented languages, whereas a procedure-oriented design should be able to be coded into any one of several block-structured languages. This criterion refers to the documentation of the design process which does NOT include the final program listing. 6/6: The candidate includes documentation for a design that is complete and portable. complete: portable: All the relevant decomposition from the problem definition through all stages to the final stage are included. The final stage of the design can be coded into more than one appropriate modular language.
Continued
13
Y13 DOSSIER 2004 AUTOMATED DEVELOPMENT SYSTEMS AND LIBRARY MODULES [p44 Assessment Details] Some programming systems, such as visual systems, provide interactive development environments with a wide range of extra facilities, such as visual design, object manipulation, and automatic code generation. However, the use of these is beyond the scope of this syllabus. Within the Program Dossier such facilities may be used for minor task, such as formatting a dialogue box, but must not be used for more complex tasks. For example, you are expected to write your own algorithms of sorting an array, rather than simply executing a library function which sorts the array. You are expected to write your own algorithms which maintain a linked data structure, rather than using a system library which already contains all the required algorithms. Any program listing that includes code automatically generated by the development system must have this code clearly identified and distinguishable from the code written by the student.
Notes from Richard Jones, Singapore, 1999: Overall Plan for the Development of the Solution:
After an introduction stating the general method you will use to solve the problem you should detail the steps you will take. You will do this along with a rough guide as to the time you will need for each section. You need to consider a number of factors in the development of your system. Some of these factors will be dependent on others. In some cases you will not be able to proceed to a stage without successfully completing previous items. A good way of showing your plan is to draw a diagram. If, however, you think of an alternative method that is fine.
Hardware & Software Requirements Explain the hardware and software your system will need to run. Mention particular machines and operating systems. You must also give reasons why you have chosen each device/software. Make these reasons applicable to your system!! Outputs, Inputs, & Data Structures You need to consider what information your system will provide the users at each stage of the processing. Also you must think about what form it will take - screen, printer. This will help you to decide what information the users must provide the system as input along with its format. Hand written diagrams should be drawn here showing screen displays and printout formats. You will no doubt change these as the system develops but they are useful to clarify your thoughts. Dont forget you are still developing your ideas here and this will affect the marks awarded for Clarity of the plan of action! After the output and input have been decided upon you will be in a position to consider the make up of files and record structures. These need to be designed carefully and fully described here. DO NOT give screen dumps of your forms, reports nor file structures as technically these havent been done at this point!
14
Notes from IB Conference, Bahrain 2000 regarding DESIGN Create a detailed representation of the algorithms used (via pseudo-code, structure diagrams, etc) that clearly illustrate your solution. Create a list of the variable names youll use and what each of these variable names will represent List the procedure names youll use and include a description of the purpose of each procedure. The descriptions can later be used as comments Use top-down analysis (Break the problem down into smaller problems. These are then broken down in turn until ultimately a pseudo-code representation is obtained which can be used as a basis for program construction.). 1. Start with a textual description 2. Then draw a structure diagram such as the Hierarchical structure shown below or HIPO chart (which includes input and output) as shown in Bradley text, page 307 (note the textual explanation of each procedure, which is excellent).
PAYROLL PROGRAM structure chart
PAYROLL PROCESS 1.0 READ INPUTS 2.0 Read Master Record 2.1 Read Timecard Record 2.2 Process Unmatched Timecard 2.3 Compute Gross Pay 3.1 computer overtime & shift differential 3.1.2 COMPUTE PAY 3.0 Compute Net Pay 3.2 compute taxes 3.2.1 compute personal deductions 3.2.2 Write Master 4.1 WRITE OUTPUTS 4.0 Write Payroll Report 4.2 Write Paychecks 4.3
Figure B-1. A structure chart. (the numbers refer to more detailed diagrams of these functions). Each box represents a procedure. The procedure names in the boxes will be the actual procedure names used in the final program.
15
3. Then you could use Jackson style of Top-Down Design with procedures (see Bradley, page 305-306: note that the final boxes are in Pseudo-code 4. Finally, It is highly recommended that you place a section of the chart on the left side of the page, with the pseudocode on the right side of the page. What youre doing it taking someone who doesnt know programming step-by-step through your program
Notes: You dont have to follow PURE exactly, but try your best. Dont use Flowcharts, only use system flowcharts, top-down design charts. If you copy and pasted and use search and replace to change the := to back arrows you will reach an achievement level of 1/6. When marking this section, the examiner will read the first sentence of the Achievement Levels, and if it is appropriate, that will be your mark (Zero). Otherwise, he/shell read the second Achievement Level to see if its appropriate, and if it is, then that will be your mark (1)and so on (just like an IF structure).
17
Notes from Richard Jones, Singapore 1999 Sometimes data items of different types belong logically together. For example, all of the data about a student in a school could be held in a single object known as a record. Traditional programming languages and applications such as databases provide ways of grouping such data together. The following terminology is associated with records:
The fields are in italic type and the DATA is in CAPITALS. All three records together would make up a data file. The same information can often be presented in column layout, when all three records can be seen together with the fields used as labels at the top of each column: (diagram) Now the file is represented by all of the information in the table. The data in each field can be of any primitive type or of other classes too. Traditional languages provide data structures called records which allow data to be kept together as a single unit: newtype StudentRecord Record Forename string Surname string BirthDate string Sex character Year integer Form character endrecord a collection of these records can be kept in arrays of records: int MAXRECORDS = 50; used // wherever needed in the Class. StudentRecord [ ] recordArray = new StudentRecord[MAXRECORDS]; // A constant value, can be changed here // and the value MAXRECORDS
18
D. Algorithms [3 marks]
ACHIEVEMENT LEVEL for Using Efficient Algorithms: [p. 49] An efficient algorithm is usually one that executes rapidly and requires minimal storage (makes good use of available memory), but it could also refer to one that uses simple programming code. Even though it is not faster, a loop for printing 20 numbers is more efficient than 20 print commands, because future modifications in the code will be much easier if a loop is used. Such immense inefficiencies in the code can be considered here. It is not necessary for candidates to present quantitative evidence of the efficiency of the algorithms. [but highly recommended!] 3/3: All of the algorithms that the candidate uses to solve the problem are efficient. DO RESEARCH Find out WHY its better to use one type of search (that searches directly) over others and discuss how your problem is best suited to this *Mastery Find out WHY its better to use one type of sort over others and discuss how your problem is best suited to this *Mastery Find out WHY its better to use a CASE structure instead of IF (or IF instead of CASE) and discuss why your problem is best suited to this. Find out WHY its better to use Direct Access to records instead of sequential access and discuss how your problem is best suited to this Discuss your algorithms for adding, deleting and searching directly for a record in a file, and prove that you have directly added, deleted and searched. *Mastery *Mastery *Mastery ETC Discuss WHY you needed to create a user-defined function, and explain HOW it works. *Mastery Discuss WHY you needed to use recursion where you did (instead of a regular while..do, repeat..until or for..do loop), and explain HOW it works *Mastery Discuss why the two sorted data structures need to be merged and why you chose to them the way you did *Mastery
Notes from the Chief Examiner Glenn Martin: The examiner will mostly look at your Pseudo-code for this section The examiner is looking for elegant algorithms You could do Big-O analysis Be sure to mention other possible methods that you chose not to use (and why your choice is best)
19
REASON
typical data
EXPECTED RESULT Record is added to file at the first free location Data rejected
20
21
ACHIEVEMENT LEVEL for Including an Annotated Hard Copy of the Test Output: [p. 50] The hard copy of test output should demonstrate the implementation of a thorough testing strategy (as indicated by criterion E). It may not be feasible to supply sample output for every single test-case in the testing plan indeed, a procedure may be designed to automate the testing process and may run many millions of tests. However, at least a representative sample of the test-cases must be presented as sample runs. The output should cover the entire range of test-cases (both valid and invalid data) in the testing plan, and should be presented in an organized fashion (ex. annotated). The teacher must confirm that each candidate has actually completed the testing as claimed in the documentation (see Vade Macum.) 3/3: The candidate includes an annotated hard copy of test output based on a wide range of valid data as well as some invalid data.
Notes from Chief Examiner Glenn Martin, Bahrain, 2000: Also copy and paste your table from the previous section and add a new column called actual result.
DATA USED ADDING A RECORD: Student Name: ___ Class: __ . Student Name: __ Class: __ Age: 512 Student Name with a spelling mistake
REASON
typical data
EXPECTED RESULT Record is added to file at the first free location Data rejected
ACTUAL RESULT It works. See test run F1 AND Contents of updated file F2 Data rejected with error message in error trap. See error message H-5 Accepts spelling mistakes for Student Name
22
G. User-Friendly Features
ASSESSMEMT GUIDELINES for Evidence of User Friendliness: [p. 56] Evidence of helpful menus, instructions, etc. that will aid the user in navigating through their program must be highlighted. This can be done in the following three ways: By annotating relevant parts of the hard copy output By annotating parts of the program code that generate menus an instructions By reproducing (cut/paste) relevant parts of the hard copy output and/or by reproducing parts of the program code that generate the menus and instructions.
The length of the documentation will depend to a great extent on how much interaction there is between the program and the user. ACHIEVEMENT LEVEL for Incorporating User Friendly Features [p. 51] Candidates should give attention to issues of usability during the design stage. The documentation should include some explanations of the reasons for some of the usability decisions. To be given credit candidates must include features which make the program more user-friendly, such as: helpful menus, help instructions, useful guidance to the user during the execution of the program. These should be documented some way, for example, if an output screen is particularly well designed for readability a hard copy should be provided and labelled as such. Screen dumps and even photographs may be helpful for this criterion. 2/2: The candidate incorporates many user-friendly features in the program.
Notes from Chief Examiner Glenn Martin, Bahrain, 2000 The User Friendly Features are FOR THE USER (and Handling Errors) User friendly features can be linked to the test runs Error messages must be clear MUST have: Helpful menus Help instructions Clear error messages The user should always be clear as to what to do SHOW SCREEN SHOTS to prove.
23
Notes from Glenn Martin, the Chief Examiner Glenn Martin, Bahrain, 2000 Include Steps to Correct Errors, ESPECIALLY RUN-TIME AND DISK-FILE ERRORS Suggestion: Place error traps in Testing with Testing Strategy and make a note of this in this section. Candidates must attempt to trap errors! If no error traps are needed for a certain part, you must say why (for example, if all the data has been previously checked by another part of the program).
24
I. Implementation [3 marks]
ACHIEVEMENT LEVEL for Implementing the Program [p. 52] Evidence here generally refers to hard copy output. Also, the design process should have been sufficiently thorough so that the resulting program has not had to be drastically restructured during the debugging phase. 3/3: The candidate includes evidence that the program functions well, AND the program is CLOSELY related to the design.
Note from Chief Examiner Glenn Martin Glenn Martin, Bahrain, 2000: Include sentences (or a chart!) that say _____ works because_____, and summarize the testing, error handling, etc.
25
ACHIEVEMENT LEVEL for Using Good Programming Style: [p. 52] Good programming style can be demonstrated by program listing which are easily readable, even by a programmer who has never used the program. This includes small and clearly structures modules which have: abundant comments., meaningful identifier names, and a consistent indentation scheme. Convoluted, confusing syntax should be avoided whenever possible. Syntax highlighting and line numbering are not required, but are encouraged if they improve readability.
Notes from Chief Examiner Glenn Martin, IB Conference in Bahrain, 2000: The following MUST be done: Small modules Clearly structured modules Abundant comments that are useful/helpful Meaningful variable names Consistent indentation thats easy to read Especially important are: Layout Meaningful procedure names (which usually start with or contain a verb) Asterisks between procedures (even though this isnt done by real programmers) 26
K. Evaluation [3 marks]
ASSESSMENT GUIDELINE FOR CONCLUSIONS / EVALUATION [p. 58] This item should include reflections on the effectiveness of the programmed solutions of the original problem. It should discuss answers to the following questions: Did it work? Did it work for some data sets, but not others? Does the program in its current from have any limitations?
A thorough evaluation also discusses possible future enhancements that could be made to the program. ACHIEVEMENT LEVEL for Evaluating Solutions: [p. 53] The conclusion should be a critical analysis of the resulting solution. Efficiency may be discussed in general terms, ex. BigO notation is not required Effectiveness should be discussed in relation to the original description of the problem. Suggested improvements and possible extensions should be realistic, e.g. suggestions should not include statements such as the program would be a lot better if it incorporated some artificial intelligence techniques such as speed recognition and natural language parsing. 3/3: The candidate discusses the effectiveness and efficiency of the solution and suggests alternative approaches and improvements
Notes from the Chief Examiner Glenn Martin, IB Conference in Bahrain, 2000: Include three separate headings: 1. Efficiency 2. Effectiveness 3. Improvements and possible extensions You must discuss how good it is If its a good quality program then limitations mentioned make for much better evaluation! Copy your objectives to this section. How you carried out the objectives, the methods you used to carry them out, etc, must be explained/discussed. Honesty is expected and works FOR the student, not against.
27
28
Notes from Richard Jones, Singapore 1999 This is a separate section. You could even make a small extra booklet to show its distinct nature from the rest of the report. In this section you must explain how to run your system to any prospective user. Remember that most users are not knowledgeable about computers. Some are even scared of them. Include here also some sample runs for the user to understand exactly what is happening. A common mistake here is to say that the sample runs have been included in the testing section. While it may be true that some of the testing runs will be useful for the user it is important to include them within this section. It is pointless given a user a booklet on how to run your system if most of it refers to something else. Therefore, just copy and paste any useful screen shots. Remember screen shots for EVERYTHING!!!!
29
30