FACULTY OF SCIENCE LEARNING GUIDE MODULE: Computer Science 1A - Introduction to Algorithm Development (C++) CODE: CSC01A1 THIS MODULE SPECIFIC LEARNING GUIDE IS INTENDED TO BE USED IN CONJUNCTION WITH THE UNDERGRADUATE GENERAL LEARNING GUIDE HEAD OF DEPARTMENT: Prof DA Coulter COMPILER OF LEARNING GUIDE: Dr Jaco du Toit 2022 Copyright © University of Johannesburg, South Africa Printed and published by the University of Johannesburg © All rights reserved. Apart from any fair dealing for the purpose of research, criticism or review as permitted under the Copyright Act 98 of 1978, no part of this material may be reproduced, stored in a retrieval system, transmitted or used in any form or be published, redistributed or screened by any means electronic, photocopying, recording or otherwise without the prior written permission of the University of Johannesburg. Please note this learning guide is available electronically from EVE. The online version is considered to be correct and canonical. In the case of differences between any offline version (printed or otherwise) of this guide and its online counterpart the online version’s contents are to take precedence. i Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2021 Contents 1. Welcome.................................................................................................................................. 1 2. About this Learning Guide........................................................................................................ 1 3. The Module .............................................................................................................................. 1 4. 3.1. Purpose of Module ............................................................................................................ 2 3.2. Module Outcomes & Module Assessment Criteria ............................................................ 2 3.3. Module Resources ............................................................................................................ 2 3.3.1. Prescribed Textbook .................................................................................................. 3 3.3.2. Development Tools .................................................................................................... 3 Lectures, Tutorials & Practicals ................................................................................................ 4 4.1. Alternating in-contact weeks ............................................................................................. 5 4.2. Lectures ............................................................................................................................ 6 4.3. Practical Sessions ............................................................................................................ 6 4.3.1. 4.4. Marking of submitted practical exercises ................................................................... 7 Tutorial Classes ................................................................................................................ 7 5. Lecturers.................................................................................................................................. 8 6. Scheduled Programme ............................................................................................................ 8 7. 6.1. Numeracy for computer scientists ..................................................................................... 9 6.2. The command line interface .............................................................................................. 9 6.3. Introduction to Programming ........................................................................................... 10 6.4. Basic Control Structures ................................................................................................. 10 6.5. Fixed length Arrays ......................................................................................................... 11 6.6. Functions and modular programming.............................................................................. 11 6.7. Pointers and memory management ................................................................................ 12 6.8. Dynamic Arrays .............................................................................................................. 12 6.9. Two Dimensional Data .................................................................................................... 12 Assessments ......................................................................................................................... 13 7.1. eXTRA vpl eXERCISES .................................................................................................. 13 7.2. Practical Assignments..................................................................................................... 14 7.3. Semester Tests............................................................................................................... 14 7.3.1. Semester Test 1 ...................................................................................................... 14 7.3.2. Semester Test 2 ...................................................................................................... 14 ii Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2021 7.4. Examination .................................................................................................................... 14 7.5. Promotion ....................................................................................................................... 15 iii Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2022 1. WELCOME This main objective of this module is programming, which focuses on problem solving with the help of a computer. Problem solving using a computer comprises of the following steps: 1. 2. 3. 4. Understand the problem. Develop an algorithm for the problem. Code the algorithm in a programming language. Execute the program on the computer. The result of problem solving is thus a recipe which prescribes the solution of a given problem. Such a recipe consists of a number of steps which must be executed in the correct order. If the recipe is correct and is executed correctly, the given problem will be solved once the last step has been executed. This module is the basis for all further modules in Computer Science. In all other modules programming assignments will be set. If a student cannot program, the student will have trouble progressing as the student should. It is therefore essential to have a strong programming background for a Computer Science career. 2. ABOUT THIS LEARNING GUIDE This learning guide contains details specific to the Computer Science 1A module and should be used in conjunction with the Academy of Computer Science & Software Engineering’s Undergraduate General learning guide. Students are to defer to this module specific learning guide in the event that information published herein conflicts with instructions published in the general guide. 3. THE MODULE Module name: Computer Science 1A: Introduction to Algorithm Development (C++) Prerequisites for module: 1. University exemption certificate. 2. Mathematics: a) If Mathematics 1 is included in the qualification, the minimum requirement of a 5 in Grade 12 Mathematics applies. b) If Mathematics 1 is not included the minimum requirement is a 4 in Grade 12 Mathematics. 3. Minimum APS: 27 points. Module NQF level: 5 NQF Credits: 15 (calculated according to notional hours) Duration of Module: (Weeks/Semester) 14 weeks Type of Module: Semester 1 Module Language of Delivery: English 1 Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2022 3.1. PURPOSE OF MODULE The primary purpose of this module as an integral part of the BSc Information Technology programme is to provide Information Technology professionals who can analyse, design and develop algorithms into programs demonstrating correctness using a computer programming language such as C++. 3.2. MODULE OUTCOMES & MODULE ASSESSMENT CRITERIA MODULE OUTCOMES MODULE ASSESSMENT CRITERIA At the end of this module the student should be able to do the following: The student will be assessed as competent if: • • • • 1. Analyse, Design and interpret an algorithm 2. Program algorithms in an object oriented language such as C++. • • 3. Use a computer to solve programming problems. • • 4. Demonstrate computer programs in C++. • 3.3. Algorithms are analyzed correctly Algorithms are designed accurately. Algorithms are interpreted logically. Practical assignments in C++ are demonstrated correctly. Programs written in an object-oriented language such as C++ are translated from algorithms accurately. A computer is used to solve programming problems accurately. Computer programs written in an object-oriented language such as C++ demonstrates the solution to the programming problem correctly. Computer programs that function correctly are demonstrated At least 10 C++ computer programs are shown to the lecturer and/or assistants during the semester MODULE RESOURCES A blended learning approach that makes use of the following teaching/learning methodology opportunities and experiences is used: • Lectures. • Tutorial classes. • Module website (https://eve.uj.ac.za). • Discord discussion server (https://discord.gg/CWRzJHZMFz ) • VPL Server (https://acsse.cloud ) • Blackboard (https://ulink.uj.ac.za ) • Using books and subject-related periodicals. • Consultations with module lecturer. • Consultations with module tutors. • Practical assignments which take place in the computer laboratories. 2 Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2022 Students are encouraged to make use of the available resources for the module. Such sources include: • Module website (http://eve.uj.ac.za) • Lecture notes 3.3.1. Prescribed Textbook Title: C++ Programming From Problem Analysis to Program Design Edition: 8th Author: D.S. Malik Publisher: Cengage ISBN-13: 978-1-337-10208-7 3.3.2. Development Tools Learners are required to bring their own storage media as appropriate for the computer laboratories. All assignments should be stored on this media and regular backup copies should be made. The loss of assignments due to media failure will not be accepted as a valid excuse for failure to submit an assignment. It is your responsibility to make regular backups of your work. Backups can be stored in an e-mail account, on cloud storage as well as on EVE under the file storage section. No single media or backup mechanism should be regarded as infallible. If you wish to complete assignments on your own computer, you will need an ANSI C++ compliant compiler. The Academy provides the Microsoft Visual Studio .NET compiler suite 3 Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2022 which can be used to compile C++ programs. This is not recommended however, since this compiler does not create ANSI C++ compliant projects by default. For the purposes of practical sessions the MinGW compiler will be used together with the development environment of your choice. We prefer students to use the VPL, but in case an offline compiler is needed, use CodeBlocks that should already be installed on all lab computers. If not, then a Google search for CodeBlocks. Important: Make sure to install the edition that include the MinGW compiler. 4. LECTURES, TUTORIALS & PRACTICALS The Computer Science 1A module consists of three lectures, three practical sessions (of which students must attend one) and three concurrent tutorial classes each week. The attendance of the lectures, tutorials and practical sessions is compulsory for ALL students. TIME MON 07:00-08:30 & 08:30-10:30 Assessment TIME TUE WED THU FRI 08:00-08:45 TU 1 WE 1 TH 1 FR 1 08:50-09:35 TU 2 WE 2 TH 2 FR 2 09:40-10:25 TU 3 WE 3 TH 3 FR 3 WE 4 10:3011:15 MO 4 10:30-11:15 TU 4 11:2012:05 MO 5 11:20-12:05 TU 5 FR 1 FR 1 FR 4 FR 5 Tutorial 12:1012:55 MO 6 13:0013:45 MO 7 13:5014:35 MO 8 14:4015:25 MO 9 15:3016:15 MO 10 16:2017:05 MO 11 17:1017:55 Lecture 18:0018:45 MO 13 12:10-12:55 13:00-13:45 13:50-14:35 14:40-15:25 TU 6 TH 6 TU 7 WE 7 TH 7 TU 8 WE 8 TH 8 TU 9 Culture Period Culture Period TH 9 Tutorial 15:30-16:15 16:20-17:05 TU 10 Lecture TH 10 WE 11 Tutorial Lecture 17:10-17:55 Tutorial WE 13 18:00-18:45 4 TH 13 Practical Sessions 1-3 (Select 1) Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2022 Until further notice all lectures and tutorials will be presented on campus, but each student will be assigned a specific week rotation to attend lectures, tutorials and practicals. Activity Mainstream Extended Lectures (attend all three lectures every week) Mondays (17h10 – 17h55) MO 12 C Les 101 D Lab K01 Tuesday (16h20 – 17h05) TU 11 C Les 101 E Les 200 Wednesdays (17h10 – 17h55) WE 12 C Les 101 D Lab K01 Practical Sessions (choose one session and attend the same session every week) Fridays Session 1 (13h50 – 15h25) FR 8 & FR 9 Fridays Session 2 (15h30 – 17h05) FR 10 & FR 11 Fridays Session 3 (17h10 – 18h45) FR 12 & FR 13 E Ring 203 - 207 Tutorial Classes (All students must attend one of the following tutorials) Tuesday Tutorial (17h10 – 18:45) TU 12 & TU 13 C Les 204 Wednesday Tutorial (11h20 – 12h55) WE 5 & WE 6 C Les 203 Wednesday Tutorial (14h40 – 16:15) WE 9 & WE 10 C Les 403 Thursday Tutorial A (16h20 – 17h55) TH 11 & TH 12 C Les 203 Thursday Tutorial B (16h20 – 17h55) TH 11 & TH 12 C Les 204 TBA TBA Saturday Tutorial (resources permitting) 4.1. ALTERNATING IN-CONTACT WEEKS Students are assigned a specific alternating week that allow them to attend in-contact lectures, tutorials and practical sessions. The semester consists of 14 weeks. Each week is allocated an identifier. The identifiers are ‘A’ and ‘B’. Table 1 clearly identifies which weeks are either a week ‘A’ or week ‘B’ Table 1: Alternating identifier allocation Week 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Identifier A B A B A B A Recess B A B A B A B Start date 2022/02/14 2022/02/21 2022/02/28 2022/03/07 2022/03/14 2022/03/21 2022/03/28 2022/04/04 2022/04/11 2022/04/18 2022/04/25 2022/05/02 2022/05/09 2022/05/16 2022/05/23 End Date 2022/02/18 2022/02/25 2022/03/04 2022/03/11 2022/03/18 2022/03/25 2022/04/01 2022/04/08 2022/04/15 2022/04/22 2022/04/29 2022/05/06 2022/05/13 2022/05/20 2022/05/27 5 Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2022 An email allocating a specific week identifier is sent to each student at the start of the semester. A mark-field on eve, for Computer Science 1A, also provides the week identifier for each student. Students allocated a specific identifier may attend all lectures, tutorials and practical sessions that correspond to that specific identifier assigned week. In weeks where the identifier is not assigned students must still come to UJ campus, but get information for that specific week from the various online systems. The online systems used to provide information are lecture notes uploaded to eve, Blackboard recordings on Blackboard and session discussions on Discord. 4.2. LECTURES Lectures take place every Monday, Tuesday and Wednesday. Students should try and attend the lectures on campus. For each parallel lecture, one lecture is screen and microphone recorded. These recordings are made available on Blackboard under the Online Lecture link available. 4.3. PRACTICAL SESSIONS Practical sessions take place in the computer laboratories E-Ring 203 to 207 and E-Les 203 every Friday from 13h50 to 18h45. Depending on session numbers, Computer Science 1 students will be assigned a venue once allocations have been made. The attendance of practical sessions is compulsory for the week the student has been assigned to be in the venue, as this will give the student the opportunity to explain his/her assignment and obtain further assistance. Practical sessions are primarily intended for interactive programming exercises that assist students for upcoming practical exercises – students are therefore expected to have completed their assignment before the start of the practical session. Requirements for the submission of practical assignments and any absenteeism from practical sessions are discussed in detailed in the Academy of Computer Science & Software Engineering Undergraduate General Learning Guide. The first practical will take place on Friday 18 February 2022. Bookings for one of the following three practical sessions must therefore be made before the first practical: 13h50 – 15h25 15h30 – 17h05 17h10 – 18h45 Session 1: Session 2: Session 3: Bear in mind that there are a limited number of places in each session. Students with timetables clashes are therefore urged to make a session booking as soon as possible. Should the student take both Informatics 1A and Computer Science 1A, the student must choose ONE to attend for Informatics and a DIFFERENT session to attend for Computer Science. The student will thus be able to attend the practical sessions for both subjects without any clashes. 6 Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2022 Once the student has successfully registered for a particular session, the student will be required to attend the selected session for the rest of the semester. During alternating weeks where students may not attend interactive practical sessions, students should look at the published memo for the past week’s practical, start working on the practical due the next week and communicate with assistants on Discord to query specific marks, if necessary. 4.3.1. Marking of submitted practical exercises While the practical sessions are taking place the assignments due that week are marked. A team of student assistants will mark each assignment and marks are released on eve. A memorandum will be released on eve, as well as an online video discussion of the memo on Fridays at around 13:50. All links will be published in the notices on eve.uj.ac.za for CSC1A. All practicals will be marked before the following Monday after the Prac deadline. Marking assistants will be available on the Computer Science 1A Discord Server to attend to queries regarding marks. We invite you to reach out to marking assistant on the CSC1A Discord server on Fridays between 13:50 and 17:00 if you have queries regarding marks assigned to your practical submission. 4.4. TUTORIAL CLASSES The purpose of tutorial classes is to increase the student’s exposure to problem solving by means of providing additional exercises related to the material covered during the week to complete. It is compulsory for students to attend at least one tutorial each week in the week the student is allowed to physically attend tutorials. There are several tutorial classes taking place each Tuesday, Wednesday and Thursday. The contents of each tutorial are identical, and students are expected to attend one such session a week. Students who cannot attend any tutorial sessions due to valid timetable clashes must inform the lecturers as soon as possible. One tutorial session will be recorded per week. Links to the tutorial sessions will be published on eve.uj.ac.za. Students that cannot attend in-contact tutorials MUST review the recorded tutorial session. 7 Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2022 5. LECTURERS Name: Qualifications: • • • • Phone: Primary Course Convenor Second lecturer Dr JL du Toit Prof DA Coulter BSc (Earth Sciences) BSc Hons (Computer Science) MSc (Computer Science) PhD (Computer Science) • • • • BSc (Information Technology) BSc Hons (Computer Science) MSc (Computer Science) PhD (Computer Science) +27115594928 E-Mail: jacodt@uj.ac.za Office: +27115592842 dcoulter@uj.ac.za E-Ring 226 Consultation Hours: By appointment only By appointment only 6. SCHEDULED PROGRAMME Students are requested to review the work schedule below, paying particular attention to the dates of the assessment opportunities. The schedule pertaining to the material covered is tentative and subject to change. Any valid clashes with other subjects must be brought to the attention of the lecturer within the first week of the semester to be considered for possible rescheduling – PLEASE NOTE THAT ASSESSMENTS SCHEDULED FOR OTHER MODULES THAT WILL CLASH WITH ANY COMPUTER SCIENCE LECTURES MUST BE BROUGHT TO THE ATTENTION OF THE LECTURERS. Provisional Work Schedule Week 1 2 3 4 5 6 7 8 Topics Introduction / Command Line Interfaces Numeracy for Computer Science Overview of Computers and Programming Languages Basic Elements of C++ I/O and Control Structures Control structures Control structures / Functions Semester Test 1 Functions and Namespaces Stack Allocated 1D Arrays C-Strings Fixed Length Multi-Dimensional Arrays Fixed Length Multi-Dimensional Arrays 8 Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2022 9 10 11 12 13 14 Freestore allocated 1D Arrays Freestore allocated 2D Arrays C++ structs Combined Work Examples ST2 Prep Exam Prep + Revision To provide an outline of the content of the module, each of the sections (learning units) are briefly discussed in the subsections below. Each subsection will be examined on, either in class tests, practical assignments, the research assignment, semester test or/and in the examination. 6.1. NUMERACY FOR COMPUTER SCIENTISTS Students begin by learning the basics of those number systems which have a special relevance to current computer systems • • Activities: • Define what is meant by a number system • Perform operations within the binary number system • Conversion from decimal • Conversion to decimal • Arithmetic operations • Representation of negative numbers • Representation of real numbers • Boolean operations (conjunction, disjunction, negation, exclusive or) • Perform operations within the hexadecimal number system • Conversion from binary • Conversion to binary • Perform operations within the octal number system • Conversion from binary • Conversion to binary o Digital circuits Resources: o Lecture notes o Eve 6.2. THE COMMAND LINE INTERFACE Students will be introduced to controlling a computer system via non-graphical user interfaces namely the standard command line interface (bash or cmd.exe) and PowerShell. • Activities: • Define what is meant by a command line interface. • Perform operations within the command line interface • Directory Management • Executing programs • Batch files • Realizing complex tasks through the combination of small programs 9 Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2022 • Resources: o Lecture notes o Computer laboratory equipment o Eve 6.3. INTRODUCTION TO PROGRAMMING Students continue by learning the basics of programming. In particular, the following topics will be covered: • • Activities: o Define what an algorithm is o List and discuss the steps involved in problem solving in programming o List the basic building blocks of an algorithm o Completing a design for a program • The components of a design • UML Activity diagrams • Pseudo code and notation o Working with variables – declaring them, assigning values to them and reading values from them. o Working with different types of variables (data) o Working from the command line interface • Basic commands • Compilation using g++ • Pipes and stream redirection • Other command line interfaces o The Eclipse and MinGW development environment • Starting a project • Saving a project • Developing an interface • Writing code • Linking code to controls • The role of the preprocessor • Uploading a project for submission Resources: o Lecture notes o Prescribed textbook o Codeblocks and MinGW and VPL o Eve 6.4. BASIC CONTROL STRUCTURES As discussed in the previous learning unit, all algorithms rely on a number of basic building blocks. This learning unit introduces students to the most basic structures (that being the ifstatement, while loop, for loop, switch statement) necessary for a computer to solve any problem. • Activities: o Defining each the basic control structures o Declaring each of the basic control structures o Comparing each of the basic control structures 10 Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2022 • o Be able to decide which of the basic control structures to use under what circumstances o Introduction of the standard input streams Resources: o Lecture notes o Prescribed textbook o MinGW o Eve 6.5. FIXED LENGTH ARRAYS Up to this point, students have only worked with single variables (variables that are able to store only one value at a time). Naturally, it is very inefficient to have to declare 100 variables separately if users need to input and store 100 different values. Arrays allow programmers to declare one variable that is capable of storing more than one value of the same type. • • Activities: o Define an array o Declaring an array in C++ o Discussing the limitations of an array o Discuss the benefits of using an array o Reading and assigning values from/to an array o Using a for loop to iterate through array such as for the calculation of various statistical measures such as means and modes. o Multi-dimensional arrays o Displaying the contents of an array Resources: o Lecture notes o Prescribed textbook o MinGW o Eve 6.6. FUNCTIONS AND MODULAR PROGRAMMING In order to promote the reuse of existing code it is possible to modularize C++ code using functions and libraries of functions • • Activities: o Calling existing functions o Programmer defined functions o Passing arguments by value and by reference o Pseudo-random number generation. o Creating source libraries • Preprocess directives • Header files • Separate compilation o Recursion • • Limitations Thinking recursively Resources: o Lecture notes 11 Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2022 o Prescribed textbook o MinGW o Eve 6.7. POINTERS AND MEMORY MANAGEMENT C++ unlike garbage collected languages such as Visual Basic and Java requires the programmer to explicitly manage memory allocation and de-allocation for values which will persist beyond the block within which they are declared. • • Activities: o Establish the differences between stack allocated and heap (freestore allocated memory) o Work with pointers and memory addresses o Work with references o Allocate memory from the freestore for a single value o De-allocate memory from the freestore for a single value o Discuss the dangers of improper memory management in C++ Resources: o Lecture notes o Prescribed textbook o MinGW o Eve 6.8. DYNAMIC ARRAYS Once mastery of freestore allocated memory has been gained it is possible to create arrays whose length is not known until runtime (dynamic arrays) • • Activities: o Establish the relationship with dynamic arrays and pointers o Define a dynamic array o Declaring a dynamic array in C++ o Resizing a dynamic array o De-allocating a dynamic one dimensional array o Preserving existing values in a dynamic array o C-Strings and std::strings o Command line argument handling Resources: o Lecture notes o Prescribed textbook o MinGW o Eve 6.9. TWO DIMENSIONAL DATA Students now advance onto the concept of multi-dimensional data by working specifically with two-dimensional data. • Activities: o Displaying two-dimensional data o Declaring a two-dimensional array 12 Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2022 • o Reading and assigning values from/to a two-dimensional array o Iterating through a two-dimensional array using nested loops o Displaying two-dimensional array data using the o Declaring a dynamic two-dimensional array o Multi-dimensional arrays o De-allocating multi-dimensional arrays Resources: o Lecture notes o Prescribed textbook o MinGW o Eve 7. ASSESSMENTS An integrated approach to assessment whereby assessment forms an integral part of teaching and learning is followed: • • Formative Assessment – students are assessed continuously throughout the semester in the form of a minimum of 10 weekly practical assignments and/or class tests which comprise 10% of the semester mark. There is also one written semester test with weighting 25% of the semester mark and one practical semester test that makes the remaining 65%. Summative Assessment - a three-hour examination that is representative of all the work covered is written at the end of the semester. To pass the Computer Science 1A module, students will need to successfully complete a number of assessment opportunities. The listing of each assessment opportunity and their weight towards the Module / Semester mark is presented below. Assessment Counts Class Tests & Assignments 10 % Semester Test 1 25 % Semester Test 2 65 % Examination Towards Module / Semester Mark Counts Towards 50 % Final Mark 50 % In addition to requiring a 50% Final Mark to pass the module, students are also reminded of the following additional requirements: • A minimum of 40% for the Module / Semester AND a minimum of 50% (as determined by the HOD) for the Practical Component Mark is required to gain entrance to write the Examination. The Practical Component Mark will be based on both the weekly practical assignments and the second semester test. • A minimum of 40% must be obtained in the Examination. 7.1. EXTRA VPL EXERCISES The Virtual Practical Lab (VPL) consists of a number of extra exercises. exercises count as bonus marks for the practical assignments. 13 Successful Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2022 7.2. PRACTICAL ASSIGNMENTS Every week, students will be given a new practical assignment which they are to completed and upload for the following week. For further information on the requirements and submission of practical assignments, please refer to the Section 8 in the Undergraduate General Learning Guide. 7.3. SEMESTER TESTS The Computer Science 1A module comprises two semester tests. Details of each semester test are provided in the following subsections. 7.3.1. Semester Test 1 Marks: 40 Duration: 40 minutes Scope: All work covered thus far Type: Theory (Written) Date, Time & Venue: Tuesday, 15 March 2022 @ 16h20; Venue TBA Supplementary Test Details Application Cut-Off: Tuesday, 22 March 2022 @ 16h20 Date, Time & Venue: Tuesday, 22 March 2022 @ 16h20; Venue TBA 7.3.2. Semester Test 2 Marks: 100 Duration: 3 hours Scope: All work covered during the Semester (see example list of competencies) Type: Practical Date, Time & Venue: One of the following two sessions: Friday, 20 May 2022 @ 14h00; Venue TBA Supplementary Test Details Application Cut-Off: Wednesday, 25 May 2022 @ 12h00 Date, Time & Venue: Wednesday, 25 May 2022 @ 12h00 (subject to change); Venue TBA. 7.4. EXAMINATION The examination is a 3-hour practical paper worth 100 marks which can test on all work that was covered during the course of the semester which is not limited to the lecture notes, but should include the practical assignments. A summary of the examination information may be found on the following page. Marks: 100 Duration: 3 hours 14 Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2022 Scope: All work covered during the Semester (see example list of competencies) Type: Practical Exam Code: 604 X Date, Time & Venue: Wednesday, 08 June 2022 @ 08h30. Venue TBA 7.5. PROMOTION It is possible that some students may promote Computer Science 1A. You can promote Computer Science 1A if both the following conditions is true for you: 1. 2. You are not a student from the Faculty of Engineering and Built Environment. Your semester mark (see page 12) is greater than and equal to 65%. If you promote then you do not have to write the exam. The semester mark automatically becomes your final mark for the module. 15 Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2022 Description Competency Result C0 Program Design C1 Boiler plate code • Standard namespace (1) • System library inclusion (3) • Indication of successful termination of program (1) /5 C2 Coding style • Naming of variables (1) • Indentation (1) • Use of comments (1) • Use of named constants (1) • Program compiles without issuing warnings (1) /5 C3 Functional Abstraction • Task decomposition (5) • Reduction of repetitive code (5) /10 C4 Separate • • • • /10 C5 User Interaction • Menu System (5) • Appropriate use of input, output and error streams (5) C6 Command Line Argument Handling: • Appropriately overloaded main function (1) • Handling incorrect argument counts (1) • Use of supplied arguments (3) /5 C7 Error Handling • Use of assertions (5) /5 C8 Pseudo-random number generation (5) /5 C9 Dynamically allocated two dimensional array handling • Allocation (5) • Initialisation (5) • Deallocation (5) /15 Algorithm implementation • Logical Correctness (5) • Effectiveness / Efficiency of approach (5) • Correct use of appropriate selection / iteration structures (5) • Correct output (5) /20 Bonus (to be completed in a separate program) /10 C10 B /10 Compilation Header file (2) Guard conditions (3) Inclusion of header file (2) Appropriate content in header file (3) Total: /10 /100 16