Run by School of Computer Science and Electronic Engineering
10 Credits or 5 ECTS Credits
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.
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.|
Teaching and Learning Strategy
25 hours over 12 weeks
36 hours over 12 weeks
ASSESSED assignments, including tutorial questions, problems, essays etc.
- 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
- ICP-2150: Advanced Java Programming
- ICP-3011: Computer & Network Security
- ICP-1033: Computer Architecture
- ICP-2037: Databases - Design & Implement
- ICP-1029: Imperative Programming in C
- ICP-3046: Web-Based Applications
- ICP-1064: Professional Perspectives
- ICP-1023: Object Oriented Programming
- ICP-1024: Java Programming Laboratory
- ICP-2302: Software Hut
- ICP-3123: Internet Tech for E-Commerce
- ICP-1043: Information Systems
- ICP-2221: Database Systems 1
- ICP-3029: Networks & Distributed Systems
- ICP-1025: Intro to Intelligent Systems
Courses including this module
Compulsory in courses:
- H612: BEng Computer Systs Eng (3 yrs) year 1 (BENG/CSE)
- H610: BENG Electronic Engineering (3 yrs) year 1 (BENG/ELE)
- H621: BEng Electronic Engineering with International Experience year 1 (BENG/ELEIE)
- I110: BSc Computer Information Systems year 1 (BSC/CIS)
- IN00: BSc Computer Information Systems for Business year 1 (BSC/CISB)
- G400: BSC Computer Science year 1 (BSC/CS)
- H603: BSc Computer Systems Engineering year 1 (BSC/CSENG)
- GN41: BSC Computer Science for Business year 1 (BSC/CSFB)
- I102: BSc Computer Science (with International Experience) year 1 (BSC/CSIE)
- GW49: BSC Creative Technologies year 1 (BSC/CT)
- H611: BSc Electronic Engineering year 1 (BSC/ELE)
- H661: MEng Control and Instrumentation Engineering year 1 (MENG/CIE)
- H660: MEng Critical Safety Engineering year 1 (MENG/CRSEN)
- H617: MEng Computer Systs Eng (4 yrs) year 1 (MENG/CSE)
- H619: MEng Computer Systems Engineering (with International Exper) year 1 (MENG/CSEIE)
- H601: MEng Electronic Engineering (4 yrs) year 1 (MENG/EE)