CSI141 Programming Principles Semester I 2024/25
Course Outline
CSI141 Programming Principles (3 credits)
Course Staff
Lecturer Tallman Nkgau
Office: 247-285
Phone: 355 2260
Email: [email protected]
Teaching Assistants TBA
Teaching and Learning
Lectures (in-person): Mondays: 1500-1650 233-G12
Thursdays: 1300-1450 230-G5
Lab: Tuesday 0900 – 1200, 1200 – 1500, 1500 – 1800, 247-293/294/295/296/297 (you choose 1 session)
Office Hours: Tuesdays 1000 – 1200 or by appointment.
Course website: www.cs.ub.bw/moodle
Course resources
• Java Concepts, Late Objects, 3rd Edition, Cay
Horstmann (required textbook)
• Introduction to Programming with Java
https://runestone.academy/ns/books/published/csjava/index.html
• Introduction to Programming Using Java, Version 9.0, JavaFX Edition, David J. Eck
https://math.hws.edu/javanotes/
• The Java Tutorials, Oracle https://docs.oracle.com/javase/tutorial/
• Think Java: How to Think Like a Computer Scientist 2e, Allen Downey and Chris Mayfield,
O’REILLY https://greenteapress.com/wp/think-java-2e/
• The Java Visualizer https://cscircles.cemc.uwaterloo.ca/java_visualize/#
You are responsible for material covered in the lectures, laboratories, and any assigned reading. The
laboratories are essentially programming/problem solving sessions and attendance is mandatory.
1|Page ©T.Z. Nkgau
CSI141 Programming Principles Semester I 2024/25
Course Outline
Course Website
http://www.cs.ub.bw/moodle/course/view.php?id=157
Course Evaluation
Please note the following Faculty of Science Special Regulation (Page 176 of the 2022/2023 Undergraduate
Academic Calendar).
23.9 Minimum CA to Qualify for Examinations
23.9.1 A minimum continuous assessment mark of 40% is required to sit for final
examinations.
3-Hours Final 50% UB Scheduled Exam
Examination
2-Hours Midterm 15% Either the week before short vac or week after short vac
Test
Graded Labs 20%
Lab Tests x 2 10%
Participation 5% Usually based on performance and attendance in the labs
Course Synopsis
Overview of problem solving; the programming process; high level languages; data types, input/output,
control structures; functions and classes; libraries; files and streams; simple data structures (arrays and
ArrayLists); practical problem-solving exercises.
Pre-requisite
Curiosity!
Aim
Computers and computing gadgets are ubiquitous. All aspects of our lives depend on computing technology.
Learning how to use technology and innovating new ways of using it is imperative. Programming is now
regarded as a fundamental skill as it allows us to effectively use computing technology and create new
solutions. This course aims to introduce students to the basic concepts and principles of programming using
a high-level language. Its primary intention is to develop key programming and problem solving skills. It is the
first course in the sequence of courses that aim to impart software development skills.
Learning Outcomes
At the end of this course, students should be able to:
a) Use the Java compiler, a code editor and hand debug programs.
2|Page ©T.Z. Nkgau
CSI141 Programming Principles Semester I 2024/25
Course Outline
b) Develop algorithms to solve basic computational problems.
c) Write a program for a given computational problem.
d) Implement, debug and test programs.
Tentative Schedule (May and will change)
Week Topics Reading Exercises
1 Course info Chapter 1.1 – 1.4 R1.4
Course learning outcomes Quiz 1
Course assessment criteria
Course rules
Why program?
Anatomy of a computer
Data representation
2-3 Programming process Chapter 1.5 – 1.6 Quiz 2
Programming environment Chapter 2 E1.3, E1.3, E1.4, E1.5
Everyday data E1.11, E1.20
Java primitive data types R2.1 – R2.8
Variables, & assignment, R2.11, R2.15, R2.22
keyboard/console input/output E2.4,
String Type, variables, & assignment, P2.1, P2.3, P2.14
keyboard/console input/output
1D & 2D arrays of Numbers & Strings
4-6 Boolean expression Chapter 3 Quiz 3
Comparison operators R3.1 – R3.8
1D arrays of Booleans R3.30 – R3.32
Selection statements E3.2, E3.5, E3.7
P3.1, P3.4, P3.7, P3.17
7-9 Repetition: while loop, for loop Chapter 4 Quiz 4
File input/output Chapter 6 R4.1 – R4.7, R4.13
1D, 2D arrays and ArrayLists R4.16 – R4.17
P4.1 – P4.3
R6.1 – R6.4
E6.1, E6.2
P6.1, P6.2
10 - 13 Functions & Libraries Chapter 5 Quiz 5
User-defined data types – Java classes Chapter 8 R5.2, R5.4, R5.5, R5.9
E5.2, E5.3
P5.14
E8.7, E8.9
P8.6, P8.7
3|Page ©T.Z. Nkgau
CSI141 Programming Principles Semester I 2024/25
Course Outline
Laboratory submissions
Assessed labs are submitted during the lab. The assessed lab submission should be done 10 minutes before
the lab session ends. In case of technical problems, inform the teaching assistants in charge as soon as
possible and before the end of the lab session. Submissions are only allowed through the provided
submission links on the course website. No other method of submission is allowed without the prior
permission of the course staff.
Handouts
All handouts will be made available on the course website. You are responsible for printing your own
hardcopies of the handouts. Please check the course website regularly as course announcements will also be
put there. Failure to notice an announcement will not be accepted as an excuse for missing assessments.
Collaboration Policy
You are encouraged to form study groups as this often leads to mastery of the material. However,
You MUST write up or implement each problem solution yourself without assistance.
Laboratories are to be done individually except when peer assistance is allowed. All assessments are done
individually. You must always acknowledge your sources if you did not come up with the solution yourself.
Plagiarism will not be tolerated in the course and will be dealt with according to university rules and
regulations. The academic honesty policy for students’ document is available online at our course website and
should be read and understood.
We will be using the university provided software for checking similarity between submitted solutions. If the
similarity is too high between solutions from different students, the course staff will verify that, and students
may also be asked to explain their submissions.
Communication & Assistance
The primary mode for communicating with the course lecturer is by email –
[email protected]. If using email,
students must use their university assigned email account. We will ONLY respond if the email used is from
your university assigned email account. Please DO NOT use Moodle to email teaching staff.
Students who require assistance should see the course lecturer during office hours. Contact information for
Teaching Assistants will be made available once they are on ground.
4|Page ©T.Z. Nkgau