0% found this document useful (0 votes)
63 views18 pages

Acsse Csc01a1 2025 LG

Open ours

Uploaded by

annieruzeduka
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
63 views18 pages

Acsse Csc01a1 2025 LG

Open ours

Uploaded by

annieruzeduka
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 18

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 DT van der Haar

COMPILER OF LEARNING GUIDE: Dr SP Sithungu

2025
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++) – 2025

Contents
1. Welcome.................................................................................................................................. 1
2. About this Learning Guide........................................................................................................ 1
3. The Module .............................................................................................................................. 1
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

4. Lectures, Tutorials & Practicals ................................................................................................ 4


4.1. Lectures .......................................................................................................................... 5

4.2. Practical Sessions ........................................................................................................... 5

4.3. Tutorial Classes ............................................................................................................... 6

5. Lecturers.................................................................................................................................. 7
6. Scheduled Programme ............................................................................................................ 8
6.1. Numeracy for computer scientists .................................................................................... 8

6.2. The command line interface ............................................................................................ 9

6.3. Introduction to Programming ........................................................................................... 9

6.4. Basic Control Structures ................................................................................................ 10

6.5. Fixed length Arrays........................................................................................................ 10

6.6. Functions and modular programming ............................................................................ 11

6.7. Pointers and memory management ............................................................................... 11

6.8. Dynamic Arrays ............................................................................................................. 12

6.9. TWO-DIMENSIONAL Data ............................................................................................ 12

7. Assessments ......................................................................................................................... 12
7.1. Extra VPL Exercises ...................................................................................................... 13

7.2. Practical Assignments ................................................................................................... 13

7.3. Semester Tests ............................................................................................................. 13

7.3.1. Semester Test 1 .................................................................................................... 13

7.3.2. Semester Test 2 .................................................................................................... 14

7.4. Examination................................................................................................................... 14

7.5. Promotion ...................................................................................................................... 14

ii
Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2025

1. WELCOME
The main objective of Computer Science 1A is programming, which focuses on problem
solving with the help of a computer.

Problem solving using a computer comprises of the following steps:


1. Understand the problem.
2. Develop an algorithm for the problem.
3. Code the algorithm in a programming language.
4. 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 Computer Science 1A and should be used in
conjunction with the Academy of Computer Science & Software Engineering’s
Undergraduate General Learning Guide (click here to access). 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

Computer Science 1A: Introduction to Algorithm


Module name:
Development (C++)
1. University exemption certificate.
2. Mathematics:
a) If Mathematics 1 is included in the qualification, the
Prerequisites for minimum requirement of a 5 in Grade 12 Mathematics
module: 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: 14 weeks


(Weeks/Semester)

Type of Module: Semester 1 Module


Language of Delivery: English

1
Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2025

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 The student will be assessed as competent
should be able to do the following: if:

1. Analyse, Design and interpret an • Algorithms are analyzed correctly.


algorithm. • Algorithms are designed accurately.
• Algorithms are interpreted logically.
2. Program algorithms in an object-oriented • Practical assignments in C++ are
language such as C++. demonstrated correctly.
• Programs written in an object-oriented
language such as C++ are translated
from algorithms accurately.
3. Use a computer to solve programming • A computer is used to solve
problems. programming problems accurately.
• Computer programs written in an
object-oriented language such as C++
demonstrates the solution to the
programming problem correctly.

4. Demonstrate computer programs in C++. • Computer programs that function


correctly are demonstrated.
• At least 10 C++ computer programs are
shown to the lecturer and/or assistants
during the semester.

3.3. 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).
• VPL Server (https://acsse.cloud).
• Moodle (https://ulink.uj.ac.za).
• Using books and subject-related periodicals.
• Consultations with module lecturers.
• Consultations with module tutors.
• Practical assignments which take place in the computer laboratories.

Students are encouraged to make use of the available resources for the module. Such
sources include:

2
Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2025

• Module website (http://eve.uj.ac.za).


• Lecture notes.
3.3.1. Prescribed Textbook

C++ Programming – From Problem Analysis to


Title:
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. No single media or backup mechanism should be regarded as infallible.

We encourage students to use the online Virtual Practical Lab (VPL) to develop CSC01A1
practical exercises.

If you wish to complete assignments on your own computer, you will need an ANSI C++
compliant compiler. We encourage students to use the free CodeBlocks C++ integrated

3
Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2025

development environment (IDE) and MinGW compiler. CodeBlocks can be downloaded


from: https://eve.uj.ac.za/resources/

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, which should already be installed on all lab
computers. If not, then make a Google search for CodeBlocks. Important: Make sure to
install the edition that includes 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 TIME TUE WED THU FRI


07:00-08:30 08:00-08:45 TU 1 WE 1 TH 1 FR 1
& FR 2
08:50-09:35 TU 2 WE 2 TH 2
08:30-10:30
Assessment 09:40-10:25 TU 3 WE 3 TH 3 FR 3

10:30- FR 1
MO 4 10:30-11:15 TU 4 WE 4 FR 4
11:15
11:20- FR 1
MO 5 11:20-12:05 TU 5 FR 5
12:05
Tutorial
12:10- MO 6 TU 6 TH 6
12:10-12:55 Culture Period
12:55
13:00- MO 7 TU 7 WE 7 TH 7
13:00-13:45 Culture Period
13:45
13:50- MO 8 TU 8 WE 8 TH 8
13:50-14:35
14:35
14:40- MO 9 TU 9 TH 9
14:40-15:25
15:25
Tutorial
15:30- MO 10 TU 10 TH 10 Practical
15:30-16:15
16:15 Sessions
16:20- MO 11 Lecture WE 11 1-3
16:20-17:05
17:05 (Select 1)
Tutorial
17:10- Lecture Lecture
17:10-17:55
17:55
Tutorial
18:00- MO 13 WE 13 TH 13
18:00-18:45
18:45

4
Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2025

Activity Mainstream Extended


Lectures (attend all three lectures every week)
Mondays (17h10 – 17h55) MO 12 A Les G02
Tuesday (16h20 – 17h05) TU 11 D Lab K03
Wednesdays (17h10 – 17h55) WE 12 A Les G01
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 E Ring 203 - 207
Fridays Session 3 (17h10 – 18h45) FR 12 & FR 13
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
Saturday Tutorial (resources permitting) TBA TBA

4.1. LECTURES
Lectures take place every Monday, Tuesday and Wednesday. Students must attend all
lectures.

4.2. PRACTICAL SESSIONS


Practical sessions take place in the computer laboratories E-Ring 203 to 207 every Friday
from 13h50 to 18h45. Please take note of the session information later in this section to
understand what time you should attend.

The attendance of practical sessions is compulsory for all students. Furthermore, only the
practical exercises for the students attending practical sessions will be marked. If
you do not attend practical exercises, then no marks will be awarded for the practical
exercise that was due that day.

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.

5
Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2025

The first practical will take place on Friday 17 February 2023. Bookings for one of the
following three practical sessions must therefore be made before the first practical:

Session 1: 13h50 – 15h25


Session 2: 15h30 – 17h05
Session 3: 17h10 – 18h45

Keep 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.

If a student is registered for both Informatics 1A and Computer Science 1A, the student must
choose ONE session to attend for Informatics and a DIFFERENT session to attend for
Computer Science. In that way, the student will be able to attend their chosen practical
sessions for both subjects without any clashes.

Once the student has successfully chosen a particular session, the student will be required
to attend the selected session for the rest of the semester.

4.3. TUTORIAL CLASSES


The purpose of tutorial classes is to increase the student’s exposure to problem solving by
means of additional exercises (related to the material covered during the week) that must
be completed.

It is compulsory for students to attend at least one tutorial each week. You may choose
which tutorial session to attend as long as it does not clash with any of your other subjects.

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 per week. Students who cannot attend any tutorial sessions due to valid timetable
clashes must inform the lecturers as soon as possible.

6
Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2025

5. LECTURERS
When sending emailing any one of the lecturers, you must copy (CC) the other two lecturers.
Under no circumstances should you only email only one lecturer in CSC1A.

Primary Course Convenor


Name: Dr SP Sithungu
Qualifications: • BSc (Computer Science & Informatics)
• BSc Hons (Computer Science)
• MSc (Computer Science)
• PhD (Computer Science)
Phone: +27115592847

E-Mail: siphesihles@uj.ac.za
Office: E-Ring 224
Consultation Tuesdays 10:30 to 12:05
Hours:

Second Lecturer
Name: Mr D Ogwok
Qualifications: • BSc (Information Technology)
• BSc Hons (Information Technology)
• MSc (Computer Science)
Phone: +27115592841

E-Mail: danielo@uj.ac.za
Office: E-Ring 227
Consultation Wednesdays 13:00 to 14:35
Hours:

Third Lecturer
Name: Prof DA Coulter
Qualifications: • BSc (Information Technology)
• BSc Hons (Computer Science)
• MSc (Computer Science)
• PhD (Computer Science)
Phone: +27115592842

E-Mail: dcoulter@uj.ac.za
Office: E-Ring 226
Consultation Monday 12:10 to 13:45
Hours:

7
Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2025

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 lecturers
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 Topics
1 Introduction / Command Line Interfaces
Numeracy for Computer Science
2 Overview of Computers and Programming Languages
Basic Elements of C++
3 I/O and Control Structures
4 Control structures
5 Control structures / Functions
6 Semester Test 1
Functions and Namespaces
7 Stack Allocated 1D Arrays
C-Strings
Fixed Length Multi-Dimensional Arrays
8 Fixed Length Multi-Dimensional Arrays
9 Freestore allocated 1D Arrays
10 Freestore allocated 2D Arrays
11 C++ structs
12 Combined Work Examples
13 ST2 Prep
14 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 special
relevance to current computer systems.

• Activities:
• Define what is meant by a number system
• Perform operations within the binary number system

8
Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2025


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
• 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)

9
Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2025

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, 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 if-
statement, 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
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

10
Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2025

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
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

11
Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2025

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
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

12
Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2025

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.
• Deferred Assessments – Refer to the Standard Operating Procedure outlined in the
Undergraduate General Learning Guide regarding the procedure for deferred
assessments (click here).

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 Towards Counts Towards

Class Tests & Assignments 10 %


Module /
Semester Test 1 25 % Semester 50 %
Mark Final
Semester Test 2 65 %
Mark
Examination 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. Successful
exercises count as bonus marks for the practical assignments.

7.2. PRACTICAL ASSIGNMENTS


Every week, students will be given a new practical assignment which they are to complete
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

13
Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2025

Type: Theory (Written)


Date, Time & Venue: Wednesday, 12 March 2025 @ 17h10; Venue TBA
Supplementary Test Details
Application Cut-Off: Wednesday, 19 March 2025 @ 17h10
Date, Time & Venue: Wednesday, 19 March 2025 @ 17h10; 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: Friday, 16 May 2025 @ 14h00; Venue E Ring 203 - 207
Supplementary Test Details
Application Cut-Off: Wednesday, 21 May 2025 @ 08h00; Venue TBA
Date, Time & Venue: Wednesday, 21 May 2025 @ 08h00 (subject to change)

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
Scope: All work covered during the Semester (see example list of
competencies)
Type: Practical
Exam Code: 604 X
Date, Time & Venue: Wednesday, 04 June 2025 @ 08h30. Venue TBA

7.5. PROMOTION
It is possible for students to promote Computer Science 1A. You can promote Computer
Science 1A if both the following conditions are true for you:

1. You are not a student from the Faculty of Engineering and Built Environment.
2. Your semester mark (see page 12) is greater than or equal to (>=) 70%.

If you promote, then you do not have to write the exam. Your semester mark automatically
becomes your final mark for the module.

14
Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2025

Competency Description Result


C0 Program Design /10
Boiler plate code
C1 • Standard namespace (1)
/5
• System library inclusion (3)
• Indication of successful termination of program (1)

C2 Coding style
• Naming of variables (1)
/5
• Indentation (1)
• Use of comments (1)
• Use of named constants (1)
• Program compiles without issuing warnings (1)
Functional Abstraction
C3 • Task decomposition (5)
/10
• Reduction of repetitive code (5)

C4 Separate Compilation /10


• Header file (2)
• Guard conditions (3)
• Inclusion of header file (2)
• Appropriate content in header file (3)
User Interaction
C5 • Menu System (5)
/10
• Appropriate use of input, output and error streams (5)
Command Line Argument Handling:
C6 • Appropriately overloaded main function (1)
/5
• Handling incorrect argument counts (1)
• Use of supplied arguments (3)

C7 Error Handling
• Use of assertions (5)
/5

C8 Pseudo-random number generation (5) /5


Dynamically allocated two dimensional array handling
C9 • Allocation (5)
/15
• Initialisation (5)
• Deallocation (5)

C10 Algorithm implementation


• Logical Correctness (5)
/20
• Effectiveness / Efficiency of approach (5)
• Correct use of appropriate selection / iteration structures (5)
• Correct output (5)
Bonus (to be completed in a separate program)
B /10
Total: /100

15

You might also like