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

Acsse Csc01a1 2021 LG

The document is a learning guide for the Computer Science 1A module, focusing on algorithm development using C++. It outlines the module's purpose, outcomes, assessment criteria, resources, and the structure of lectures, tutorials, and practical sessions. The guide emphasizes the importance of programming skills for a successful career in Computer Science and provides details on prerequisites, module duration, and assessment methods.

Uploaded by

keaphilly
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)
10 views18 pages

Acsse Csc01a1 2021 LG

The document is a learning guide for the Computer Science 1A module, focusing on algorithm development using C++. It outlines the module's purpose, outcomes, assessment criteria, resources, and the structure of lectures, tutorials, and practical sessions. The guide emphasizes the importance of programming skills for a successful career in Computer Science and provides details on prerequisites, module duration, and assessment methods.

Uploaded by

keaphilly
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 EM Ehlers

COMPILER OF LEARNING GUIDE: Prof Duncan Coulter

2021
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
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 ............................................................................................................ 7
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.............................................................................. 10

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

6.8. Dynamic Arrays .............................................................................................................. 11

6.9. Two Dimensional Data .................................................................................................... 12

7. Assessments ......................................................................................................................... 12
7.1. Class Tests ..................................................................................................................... 13

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

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

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

7.3.2. Semester Test 2 ...................................................................................................... 13

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

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

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

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

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 (http://eve.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.

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

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

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 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
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. The compiler together with a selection of
development environments are available from http://eve.uj.ac.za/csc1

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

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
& 08:50-09:35 TU 2 WE 2 TH 2 FR 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

Until further notice all lectures and tutorials will be online, BUT during the times in this and the
next table
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 E Ring 203 - 207
Fridays Session 3 (17h10 – 18h45) FR 12 & FR 13

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

Activity Mainstream Extended


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. Please attend the live online
lectures. The online lectures will be made available to watch at a time that is more
convenient to you but try and use the live lectures to ask questions.

4.2. PRACTICAL SESSIONS


Until further notice, all practical sessions will be online only and thus only Section 4.2.1 is
applicable. Section 4.2.2 will only become relevant if we receive permission to resume in-
contact lectures.

4.2.1. Online only


Until we can have in-contact practical sessions, all practical work must be submitted to the
practical slot on eve.uj.ac.za before the published deadline. Practical submissions will not
be accepted through any other channel like email or Discord.

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.2.2. In-contact information


Please note that this section is not valid at this stage, because we are not allowed in-contact
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 as this will give the student the
opportunity to explain his/her assignment and obtain further assistance. As such,
submitted assignments will not be marked if the student is not present during the
marking of the practical assignment and fails to make alternative arrangements.

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

To make an alternative arrangement, students must contact the LECTURER before


12h00 on the Thursday of the week that the practical assignment is due.

Practical sessions are primarily intended for marking purposes – students are therefore
expected to have completed their assignment before the start of the practical session. While
waiting to be marked, students will be provided with additional exercises to complete.

Please be aware that there is a limited amount of time to mark all of the assignments in the
practical session. Students cannot expect to monopolise the time of the assistants. Although
every attempt will be given to assist the students during the practical session, the assistants
will only assist with a single question at a time and spend no more than 5 minutes
with a student per question. Students will be expected to have attempted to solve
their problem, and have a candidate solution in place.

Furthermore, while the practical assignments are being marked by the assistants there is
not enough time available to explain the errors the student made when they were completing
the practical assignment. Students will be referred to the Student Assistants in Assistants
Lab for further explanation.

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 7 February 2020. Bookings for one of the
following three practical sessions must therefore be made during the first practical:

Session 1: 13h50 – 15h25


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

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.

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. The student must arrive
at the beginning of the registered session to attend the practical. Students who are late will
have marks deducted from their final practical assignment mark as it constitutes as a late
submission.

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

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

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.

Tutorial sessions will be presented online and will be recorded for later dissemination. No
in-contact tutorial sessions will be given until further notice. Links to the tutorial sessions
will be published on eve.uj.ac.za

5. LECTURERS
Primary Course Convenor Second lecturer
Name: Prof DA Coulter Dr JL du Toit
Qualifications: • BSc (Information • BSc (Earth Sciences)
Technology) • BSc Hons (Computer
• BSc Hons (Computer Science)
Science) • MSc (Computer Science)
• MSc (Computer Science) • PhD (Computer Science)
• PhD (Computer Science)
Phone: +27115592842 +27115594928

E-Mail: [email protected] [email protected]


Office: E-Ring 226 E-Ring 219
Consultation
Wednesday, 10h30 to 11h15 Monday, 15h30 to 16h15
Hours:

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 Subject(s) Covered /Overview


1 Introduction / Command Line Interfaces
Numeracy for Computer Science

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

2 Overview of Computers and Programming Languages


Basic Elements of C++
3 I/O
4 Control Structures
5 Semester Test 1
Functions
6 Stack Allocated 1D Arrays
C-Strings
Fixed Length Multi-Dimensional Arrays
7 Fixed Length Multi-Dimensional Arrays
8 Freestore allocated 1D Arrays
9 Freestore allocated 2D Arrays
10 C++ structs
11 Combined Work Examples

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

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

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)
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 Eclipse and MinGW
o Eve

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

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

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

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

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

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

Class Tests & Assignments 10 %


Module /
Semester Test 1 25 % Semester 50 %
Mark Final
Semester Test 2 65 %
Mark
Examination 50 %

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

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. CLASS TESTS


Each lecture, tutorial and practical session presents an opportunity for a class test. Students
should therefore be prepared to write class tests that will count towards the semester mark.

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, 13 April 2021 @ 16h20; Online
Supplementary Test Details
Application Cut-Off: Tuesday, 20 April 2021 @ 16h20
Date, Time & Venue: Tuesday, 20 April 2021 @ 16h20; Online

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, 21 May 2021 @ 14h00; Venue TBA
Supplementary Test Details
Application Cut-Off: Wednesday, 26 May 2021 @ 12h00

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

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

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

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
Header file (2)
/10
• 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