SOFTWARE DEVELOPMENT FOR ENGINEERS

SHE Level 2
SCQF Credit Points 20.00
ECTS Credit Points 10.00
Module Code M2G620493
Module Leader Mario Mata
School School of Computing, Engineering and Built Environment
Subject Electronic Engineering
Trimester
  • A (September start)

Pre-Requisite Knowledge

Basic principles and practice of programmable systems development

Summary of Content

This module equips the students with the knowledge and skills required to design, implement, debug and test structured programs using the C programming language. It builds upon the prerequisite basic principles and practice of programmable systems development. Programming is treated as a formal engineering process and so emphasis will be placed on problem representation, problem analysis and high-level solution design. Students study key features of the C programming language and apply these to the development of programs as well as the understanding of programs developed by others. Many of these concepts can be applied to other procedural programming languages. In practical sessions students will gain hands on experience in problem analysis and design as well as the implementation, testing and evaluation of programs. The C programming language is widely accepted in the embedded industry as providing the tools and skills required by industry, and as such this module is highly work-related. Developing software development skills requires more than simply class contact. Therefore student-centred resources are provided online.

Syllabus

Overview of the role of programming in the engineering and embedded application domains. Overview of relevant software development methodologies, e.g. Waterfall and Agile development methodologies. Development of algorithms using an appropriate formal description, e.g. pseudo code or flow charts. Program design representation methods, particularly top-down problem decomposition, e.g. Structure Charts Write programs using the following features of the C programming language: variables, data types, expressions, control flow statements, input, output, arrays, functions, prototypes, header files, pointers, memory allocation, file input and output, structures, bitwise operators as well as pre-processing, compiling and linking. Use of a suitable development environment with support for debugging. Unit and system testing.

Learning Outcomes

On completion of this module the student should be able to:Understand the process of problem solving in the context of application programming, using an appropriate industry standard software development methodology.Understand key features of the C programming language, its syntax, semantics and pragmatics and be able to apply this to the implementation of structured programs.Implement, debug and test programs using an appropriate development environment.Produce solutions for given engineering problems and design and produce programs which implement solutions in a fully tested and efficient manner.Recognise the role that formal processes and testing methodologies play.

Teaching / Learning Strategy

The course material is introduced through lectures, while practical exercises complementing the lecture material are given to students within their laboratory sessions. There are two threads to the lectures, intended to run concurrently - the first covering the C language in detail to support the practical classes, the second providing the higher level concepts of life cycle models, problem solving, programme design and development tools and methods, and the concepts of quality and testability. The two-hour laboratory sessions are instructor-led but student-paced, and comprise a number of set exercises to be completed each week, preferably in laboratory time. This includes elements of analysis and problem solving, design, planning, implementation, testing, evaluation and reflection. The student coursework is also performed in formative stages in the laboratory, as students are required to explain their solution to each stage of the problem and have it evaluated by the tutor as part of their overall assessment mark, with formative feedback being provided. An "offline" tutor package is available for those who need more exposure than they can get in the standard labs. Tutorials are used to help explain and elaborate both the theoretical and laboratory content, and will in particular emphasize through self-assessment questions and solutions the key elements of the outcomes.

Indicative Reading

K. N. King. C Programming A Modern Approach. W. W. Norton & Co. 2008. 2nd Rev Ed edition. ISBN-10: 0-393-97950-4 Brian W. Kernighan and Rob Pike. The Practice of Programming. Addison Wesley. 1999. 1st edition. ISBN-10: 020161586X Ian Sommerville. Software Engineering. Pearson. 2010. 9th edition. ISBN-10: 0137053460 David Griffiths and Dawn Griffiths. Head First C. O'Reilly Media. 2012. 1st edition. ISBN-10: 1449399916 Brian W. Kernighan and Dennis Ritchie. The C Programming Language. Prentice Hall. 1988. 2nd edition. ISBN-10: 0131103628

Transferrable Skills

D1 Specialist knowledge and application. D2 Critical thinking and problem solving. D3 Critical analysis. D4 Communication skills, written, oral and listening. D5 Numeracy. D6 Effective Information retrieval and research skills. D7 Computer literacy. D8 Self confidence, self discipline & self reliance (independent working). D9 Awareness of strengths and weaknesses. D10 Creativity, innovation & independent thinking. D12 Appreciating and desiring the need for continuing professional development. D13 Reliability, integrity, honesty and ethical awareness D15 Ability to prioritise tasks and time management (organising and planning work). D17 Presentation skills. D18 Commercial awareness

Module Structure

Activity Total Hours
Tutorials (FT) 12.00
Practicals (PT) 24.00
Tutorials (PT) 12.00
Assessment (FT) 20.00
Lectures (PT) 24.00
Practicals (FT) 24.00
Assessment (PT) 20.00
Lectures (FT) 24.00
Independent Learning (PT) 120.00
Independent Learning (FT) 120.00

Assessment Methods

Component Duration Weighting Threshold Description
Exam (Exams Office) 2.00 50.00 35% Final Exam
Coursework 1 0.00 50.00 35% Summative report on lab based assessment