Module Code | CSU11010 |
Module Name | Introduction to Programming |
ECTS Weighting [1] | 10 ECTS |
Semester Taught | Semester 1 & 2 |
Module Coordinator/s | Dr. Kenneth Dawson-Howe & Dr. Hitesh Tewari |
Module Learning Outcomes
On successful completion of this module, students will be able to:
- Use coding standards when writing programs;
- Break problems into sub-problems, which can then be solved using simple algorithms;
- Design algorithms using sequence, selection, iteration and recursion;
- Design simple classes using primitive data types, Strings and arrays;
- Build object-based programs using class-based decomposition;
- Write, compile, test, and debug object-based programs using an Interactive Development Environment (IDE);
- Recognise the software engineering concerns;
- Classes and other abstraction mechanisms.
Module Content
This module provides an introductory course in computer programming. This course takes a practical approach to teaching the fundamental concepts of computer programming with a strong emphasis on tutorial and laboratory work and is an important vehicle for developing students’ analytical and problem-solving skills. This module aims to give students an understanding of how computers can be employed to solve real-world (albeit small) problems. Specifically, this course introduces students to the object-oriented approach to program design and teaches them how to write programs in an object-oriented language (in this case Java). Students also have the opportunity to reinforce their problem solving and programming skills by developing solutions to programming problems and implementing those solutions as object-based programs.
Specific topics addressed in this module include:
- Types and variables including integer, floating-point and string types;
- Sequencing, assignment and expressions;
- Boolean expressions;
- Selection statements: if, if-else, nested if, and switch-case;
- Iteration statements: while, for, do-while, and nested loops;
- Using, creating and designing methods and recursive methods;
- Design of simple algorithms using sequencing, selection, iteration and methods;
- Arrays including higher dimensional arrays;
- Using, creating and designing classes and objects including attributes and methods;
- Abstraction, encapsulation and immutability in designing classes.
Teaching and Learning Methods
The format of teaching in this module is subject to change, based on the current public health advice.
In the first semester, material is presented through lectures mainly with around 4 pre-recorded lecture sessions provided per week (totaling less than 2 hours per week). At the end of each topic a small mini-test is given to ensure that students are understanding and remaining engaged with the module material. Each week an in-person (or live online) Q&A session is scheduled to deal with any questions which may arise, along with a tutorial session (to get the students writing programs to solve problems using different techniques). Sample solutions are provided after the tutorials. There may also be an in-person (or live online) weekly lab session to provide assistance with the weekly assignments. Feedback is provided on the weekly assignments.
In the second semester, material is presented through two online live lectures per week with all programs provided online. One hour Tutorial and Laboratory sessions will also be conducted online with the class divided into small groups. During tutorials students are asked to solve one or two problems either on paper or on a computer. The lecturer and a large number of demonstrators are constantly talking to individual students to help them learn how to address the problems. Students are asked to write (& submit) regular programming assignments. A one hour lab session is provided to assist students with their bi-weekly assignments. Feedback is provided on the assignments.
Assessment Details
Assessment Component | Brief Description | Learning Outcomes Addressed | % of Total | Week Set | Week Due |
Mini-tests | Small quizzes to be completed after each prerecorded lecture session in the first semester. | L01, LO2, LO3, LO6 | 5% | Week 4-12 | Week 4-12 |
Assignments | Roughly weekly assignments where students are asked to implement a solution to a problem in Java. Students must submit a meaningful attempt at least half of the assignments in this semester. | L01, LO2, LO3, LO6 | 10% | Week 5-12 | Week 5-12 |
e-Test 1 | 2 hour programming test in a supervised laboratory where students must implement and submit a solution to a programming problem. If this e-Test cannot be held face-to-face a real-time online examination will be run. | LO1, L02, LO3, LO6 | 35% | Week 13 or 14 | Week 13 or 14 |
e-Test 2 | 1 hour programming test in a supervised laboratory where students must implement and submit a solution to a programming problem. If this e-Test cannot be held face-to-face a real-time online examination will be run. | LO2, LO3, LO4, LO5, LO6, LO7 | 20% | Week 18 | Week 18 |
e-Test 3 | 1 hour programming test in a supervised laboratory where students must implement and submit a solution to a programming problem. If this e-Test cannot be held face-to-face a real-time online examination will be run. | LO2, LO3, LO4, LO5, LO6, LO7 | 20% | Week 24 | Week 24 |
Assignments | Four assignments (roughly bi-weekly) where students are asked to implement an object oriented solution to a problem in Java. | LO2, LO3, LO4, LO5, LO6, LO7 | 10% | Week 14-22 | Week 15-23 |
Note that it may be necessary to reduce the number of assessed programming assignments (if insufficient demonstrators are available). The weights of these assignments will be redistributed over the other programming assignments in the semester.
Reassessment Details
Examination by face-to-face e-Test or Real-time online Exam (if face-to-face assessment is not possible) (3 hours, 100%). The supplemental mark in this module is based only on the supplemental e-Test. Students must develop and implement solutions to two problems in a development environment on a machine in a supervised laboratory.
Contact Hours and Indicative Student Workload
Contact Hours (scheduled hours per student over full module), broken down by: | 88 hours |
Lecture | 44 hours |
Tutorial | 22 hours |
Labs | 22 hours |
Independent study (outside scheduled contact hours), broken down by: | 142 hours |
Preparation for classes and review of material (including preparation for examination, if applicable) | 52 hours |
Completion of assessments (including examination, if applicable) | 90 hours |
Total Hours | 230 hours |
Recommended Reading List
- Java How to Program (late objects), Tenth Edition, Paul Deitel and Harvey Deitel, Prentice Hall, 2015.
- Introduction to Programming in Java: An Interdisciplinary Approach, Robert Sedgewick and Kevin Wayne, Addison Wesly, 2008.
- Algorithmics The Spirit of Computing,Third Edition, David Harel with Yishai Feldman, Addison Wesly, 2004.
- Schaum’s Outline of Theory and Problems of Programming with Java, Second Edition, John R. Hubbard, McGraw-Hill Companies, 2004.
- Please check the Blackboard CS1010 Module website for details of other texts and online resources.
Module Pre-requisites
Prerequisite modules: N/A
Other/alternative non-module prerequisites: N/A
Module Co-requisites
N/A