Module overview
This module introduces the principles and practise of programming, with the assumption that students may not have any prior experience in programming. The teaching language is Python, as this is relatively accessible to new programmers, but also an important language for describing and coordinating computation in real-world problems. The module will introduce the key concepts of imperative and structured programming, and use examples of solving real-world problems with actual data inputs and outputs. By the end of the course, students should be competent programmers, and able to use programming as a tool to solve previously unseen problems.
Aims and Objectives
Learning Outcomes
Transferable and Generic Skills
Having successfully completed this module you will be able to:
- Plan and record self-learning while performing practical work.
Subject Specific Intellectual and Research Skills
Having successfully completed this module you will be able to:
- Model real-world entities using objects and data structures
- Convert a simple problem into a program specification
Knowledge and Understanding
Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:
- Explain basic imperative programming constructs, including variables, statements, expressions, and functions
- Describe the use of encapsulation to hide implementation details
- Explain the behaviour of recursive functions
- Describe simple data structures including vectors, maps, and dictionaries
Subject Specific Practical Skills
Having successfully completed this module you will be able to:
- Implement and run interpreted programs that read and write files
- Create and deliver functionally correct programs that meet a specification
- Install, manage, and use a command-line environment
- Use libraries and classes to access application-specific functionality
Syllabus
- Environment
- Command-line and REPL
- Version control
- Imperative programming
- Variables
- Branches
- Loops
- File-based IO
- Procedural programming
- Functions and arguments
- Scopes
- Recursion
- Lists, Tuples, Sets, and Maps
- Building Better Programs
- Testing and Error Handling
- Computational Thinking
- Software Design Principles
- Application Design
- Object-Oriented Programming
- Classes and objects
- Methods
- Encapsulation, Inheritance, and Polymorphism
- Maintenance
- Libraries
- Programming Style
Learning and Teaching
Teaching and learning methods
The module consists of:
- Lectures
- Guided self-study
- Labs as part of the AICE Lab Programme which will cover practical aspects
Type | Hours |
---|---|
Completion of assessment task | 42 |
Independent Study | 46 |
Specialist Laboratory | 30 |
Lecture | 32 |
Total study time | 150 |
Assessment
Summative
This is how we’ll formally assess what you have learned in this module.
Method | Percentage contribution |
---|---|
CAA Exam | 20% |
Computing Laboratories | 25% |
CAA Exam | 10% |
Computing assignment | 45% |
Referral
This is how we’ll assess you if you don’t meet the criteria to pass this module.
Method | Percentage contribution |
---|---|
Coursework | 45% |
CAA Exam | 30% |
Lab Marks carried forward | 25% |