Module ICP-1022:
Programming Fundamentals

Module Facts

Run by School of Computer Science and Electronic Engineering

10 Credits or 5 ECTS Credits

Semester 1

Organiser: Dr Stephen Marriott

Overall aims and purpose

To provide an introduction to the fundamental concepts and techniques of programming including: algorithms and computer programs, physical and virtual machines, language processors, data types; control structures; methods; stepwise refinement; arrays; systematic documentation; input/output and file handling.

Course content

  • Types of programming languages; features of Java; byte code; .java and .class files; interpretation and compilation; applications and applets; JVM; Java libraries; structure of the Java programming environment.

  • Use of variables; variable names; static and final variables; primitive data types; arithmetic operators; relational operators; boolean operators; evaluation of arithmetic and boolean expressions; assignment of values to variables; strings; arrays and array lists; array algorithms.

  • Concept of an algorithm; basic control structures - sequencing, selection and iteration; code blocks; if and switch statements; use of for, do and while loops; loop conditions; nested loops; Java string methods; basic Java input/output facilities pseudo-code as a design and documentation aid.

  • White box and black box view of program modules; method components – header and body; method signatures; formal and actual parameters; explicit and implicit parameters; call by reference and by value; solving problems using stepwise refinement; block structure and variable scope; recursion and recursive methods.

  • Permanent and volatile storage; the concept of a file; structure of a text file; the classes Scanner, PrintWriter and File; methods for file I/O; binary data and files; formatting output.; exceptions and exception handling; try, catch and finally.

  • Correct use of code indentation; use of comments; choice of variable, class and method names; capitalization.

Learning outcomes mapped to assessment criteria







Use library methods as black boxes; implement methods; understand and use the parameter mechanism; understand and use return values; use methods to solve problems; use stepwise refinement; use methods to achieve reusability; follow rules of scope; understand and write recursive methods.

Use a library method appropriately to solve a specific problem; write methods with zero parameters; use methods to structure a simple; solve simple problems of variable scope. Write a variety of methods with zero or more parameters, use the return mechanism; make effective use of stepwise refinement; design and implement simple recursive methods. Accurately describe the parameter mechanism; use stepwise refinement to solve complex problems; accurately explain block structure and variable scope; design and implement algorithms involving mutual recursion;

Read and write data to and from text files; distinguish between text and binary files; access command line arguments; use exception handling to transfer control.

Extract components (e.g. numeric values, words) from text files; process arguments from the command line; write simple exception handlers. Use Scanner to read from text files and display content on console screen; use PrintWriter and print methods to write data to text files; ability to throw an exception. Describe the exception hierarchy and distinguish between checked and unchecked exceptions; use exceptions for general error handling; process data sets read from files.

Write programs which adhere to style and documentation guidelines.

Lay out program text using spaces and blank lines; also make appropriate use of upper and lower case characters Write concise, descriptive and explanatory comments to document code; choose self-documenting variable and method names; write Javadoc comments in canonical form. Use indentation in a consistent fashion so as to highlight program structure; comment programs; write Javadoc comments.

Demonstrate an understanding of the concept of a high level programming language and appreciate in particular the Java approach to program development..

Use a text editor to write a Java source file; compile and run a Java program. Clearly describe the purpose of the Java compiler and virtual machine. distinguish between Java source code and byte code. Discuss the design philosophy underpinning the development of Java.

Design algorithms to solve a range of computational problems; use standard control structures together with I/O facilities to implement algorithms in accordance with principles of structured programming.

Design and evaluate algorithms; use of appropriate control structures for the implementation of a given algorithm; ability to utilise a range of Java I/O facilities. Derive optimum solutions in terms of execution time, memory space and code simplicity. Read a simple problem description and convert the user requirements to a Java program; ability to convert simple pseudo-code into Java statements.

Understand and make use of primitive data types; understand and make use of arrays and array lists.

Declare and manipulate numeric, boolean and character variables; write programs involving expression evaluation. Describe the difference between primitive Java data types and array types; describe the storage requirements for primitive and reference types in Java. Declare and manipulate arrays and array lists; use linear structures to solve a range of programming problems.

Assessment Methods

Type Name Description Weight
In-class Tests 60
Laboratory 40

Teaching and Learning Strategy

Private study 12

25 hours over 12 weeks


36 hours over 12 weeks

Tutorial 6

ASSESSED assignments, including tutorial questions, problems, essays etc.


Transferable skills

  • Computer Literacy - Proficiency in using a varied range of computer software
  • Self-Management - Able to work unsupervised in an efficient, punctual and structured manner. To examine the outcomes of tasks and events, and judge levels of quality and importance
  • Information retrieval - Able to access different and multiple sources of information
  • Critical analysis & Problem Solving - Able to deconstruct and analyse problems or complex situations. To find solutions to problems through analyses and exploration of all possibilities using appropriate methods, rescources and creativity.
  • Self-awareness & Reflectivity - Having an awareness of your own strengths, weaknesses, aims and objectives. Able to regularly review, evaluate and reflect upon the performance of yourself and others

Subject specific skills

  • Use of such knowledge in modelling and design
  • Problem solving strategies
  • Deploy theory in design, implementation and evaluation of systems
  • Specify, design or construct computer-based systems
  • Deploy tools effectively
  • Development of general transferable skills
  • Knowledge of systems architecture
  • Defining problems, managing design process and evaluating outcomes
  • Knowledge and understanding of computational modelling
  • Principles of appropriate supporting engineering and scientific disciplines

Pre- and Co-requisite Modules

Courses including this module

Compulsory in courses:

Optional in courses: