Uploaded by loxacob442

Guide

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