Acsse Csc01a1 2025 LG
Acsse Csc01a1 2025 LG
LEARNING GUIDE
MODULE: Computer Science 1A - Introduction to Algorithm Development (C++)
CODE: CSC01A1
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.
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
5. Lecturers.................................................................................................................................. 7
6. Scheduled Programme ............................................................................................................ 8
6.1. Numeracy for computer scientists .................................................................................... 8
7. Assessments ......................................................................................................................... 12
7.1. Extra VPL Exercises ...................................................................................................... 13
7.4. Examination................................................................................................................... 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.
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.
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
1
Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2025
At the end of this module the student The student will be assessed as competent
should be able to do the following: if:
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
Publisher: Cengage
ISBN-13: 978-1-337-10208-7
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
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.
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.
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
4.1. LECTURES
Lectures take place every Monday, Tuesday and Wednesday. Students must attend all
lectures.
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:
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.
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.
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.
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.
• 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
• 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
• 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
• 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
• 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
• 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
• 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
• 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
• 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:
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.
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.
13
Computer Science 1A (CSC01A1) - Introduction to Algorithm Development (C++) – 2025
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
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)
C7 Error Handling
• Use of assertions (5)
/5
15