Dr. Peter J. Knaggs: Teaching

University of Exeter
2008–2011Teaching Fellow
Bournemouth University
1999–2008Senior Lecturer
University of Paisley
University of Teesside
1988–1992Part-Time Lecturer

Teaching Fellow at the University of Exeter
Level 1:
Data Structures and Team Project
Level 2:
Information Systems
Internet System Development
Graphics and Animation
Level 3:
Compilers and Interpreters
Enterprise Computing
Level M:
Tools and Techniques
Data Structures and Team Project (Level 1)
This module introduces common data structures, their properties and implementation. The data structures would including stacks, queues, lists, trees, associative arrays, regular expressions and simple grammars. Students are provided with experience in object-oriented problem solving and programming.

The student is expected to apply their object-orientated programming skills to a large and complex project in a team-working environment similar to the manner in which projects are carried out in industry with the associated difficulties and benefits of working in a team.

Information Systems (Level 2)
This module introduces the student to theoretical and technical issues underlying current and future database management systems, and introduce students to one current DBM system. Students are introduced to methods for the development of information systems and forms-based applications.
Internet System Development (Level 2)
This module will examine the architecture of internet based programs that drive large scale commercial computing, principally the so-called "B2C" programs between enterprises and their customers. Students are introduced to some of the technologies used to build such internet based programs, and to develop skills in using those technologies such as multi-tier architectures, data communications (via XML and SOAP), and server sided scripting (via PHP) and database interfacing (using MySQL).

Students study the fundamental concepts and principles of wireless and multimedia networks, as well as applications.

Graphics and Animation (Level 2)
Students are introduced to theoretical and practical aspects underlying the production of two and three-dimensional computer graphics and animation. Specifically, students study the two and three-dimensional graphics pipelines and the modelling, transformation and raster conversion phases of static graphics production; along with the fundamental principles underlying the production of animated graphics such as key frames.
Compilers and Interpreters (Level 3)
Introduces students to the concepts and methods of compiler and interpreter design and construction. Students study the underlying principles of programming language theory and how they inform the process of compilation. Gaining experience in constructing the various elements of a compiler, including a lexical analyser, syntax analyser and code generator for a simple imperative programming language.

A number of formal language theory topics are covered in this module including regular and context-free languages, equivalence and ambiguity, top-down (recursive decent) and bottom-up (state automaton) parsing.

More advanced topics such a type, scope, executable intermediate code and code optimisation are also covered.
Enterprise Computing (Level 3)
The techniques used to implement large-scale distributed information systems in heterogeneous environments are introduced to students. Important interoperability issues such as GRIDS and the semantic web are considered.

The difficulties of the Service Oriented Architecture (SOA) are considered and studied along with the techniques for heterogeneous interoperability and communication frameworks such as remote Method invocation and object brokers.

Issues relating to the synchronisation of information transfer are also considered.
Tools and Techniques (Level M)
The aim of the module is to ensure that students have a sound foundation in programming and mathematical skills to enable them to read scientific research papers and engage in quantitative research in computer science.

Students are introduced to and gain experience in object-orientated programming (with Java), linear algebra (basic vectors and matrices), calculus (introductory level only) and probability (also at an introductory level).

Lecturer/Senior Lecturer at Bournemouth University
Level C:
Systems and Networking
Systems Architecture I
Systems Architecture
Level I:
Systems Architecture II
Operating Systems
Systems Programming
Requirements Engineering
Requirements Analysis and Specification
Software Development Methods
Level H:
Individual Project
Programming Languages
Compiler Design
Internet Application Development
Level M:
Systems Architecture
Systems and Networking (BSc Computing Framework, First Year / Level C)
Introduced the learner to the ideas and principles of basic computer systems and networking. It included topics from the Architecture, Computer Networks, Operating Systems and Security and Privacy components of the QAA Computing benchmark.

Students where first introduced to basic computer systems. This included basic logic, data representation (integers, strings, and floats), files (sequential, random access, and indexed), and Resource Management (such as virtual memory). They then investigated basic networking in the form of communication standards in relation to the OSI and TCP/IP reference models. Finally students where introduced to the software development process including the network libraries and issues relating to security, digital signatures etc.

Systems Architecture I / Systems Architecture (BSc Software Engineering Management/Computing, First Year / Level C)
Student where introduced to the operation and organisation of a computer: its component parts how it represents, stores, manipulates and communicates data; how it is managed and controlled; and how it handles real-time events.

The student developed a sound understanding of the hardware and software environments upon which applications are be built. On completion the student should have been able to:

Systems Architecture II / Operating Systems (BSc Software Engineering Management/Computing, Second Year / Level I)
The context for this unit was the multi-user distributed operating environment, based on a network of workstations. Although the unit concentrated on Operating Systems, and Security and Privacy components of the computing benchmark, it also includes topics from the Distributed Computer Systems and Professionalism components.

The unit started with a general introduction, moving on to a discussion of processes, process management, threads, and inter-process communications. Storage management was then discussed including different file system, memory management and the use of virtual memory. The Input/Output subsystem was then discussed including an overview of device drivers. This was followed by a simple overview of a distributed operating environment and the Distributed Control Environment (DCE).

Parallel to this the learner was introduced to basic scripting via a series of examples and exercises. The scripts used to administer the learning environment where examined in order to introduce the learner to basic systems administration tasks.

The unit ended with an introduction to systems security.

Systems Programming (BSc Computing, Second Year / Level I)
This unit addressed the requirements of cross-platform application development based on a heterogeneous network of multi-user systems. The unit brought together topics from the Concurrence and Parallelism and Distributed Computer Systems components of the Computing benchmark.

The unit started with an overview of systems programming, concentrating on the aspects that are common to most operating environments, and highlighting the areas where they differ. The idea of the Application Programme Interface and the Standard was introduced at this stage.

The fundamental data structures where introduced, including lists, queues, strings, data streams, and system independent definitions. This lead on to an overview of the POSIX standard utility library (basic I/O, string handling, file manipulation, time of day). More advanced features where then introduced, including the use of Processes and Threads, Inter-Processes Communication, localisation, and inter-processes communication over a distributed network.

The emphasis of the unit was on those aspects of software development which are common to different operating environments, with particular interest on multi-platform development. Where systems differ, the differences where highlighted and covered separately.

Requirements Analysis and Specification (BSc Computing Framework, Second Year / Level I)
Requirements Engineering (BSc Software Engineering Management/Computing, Second Year / Level I)
Designed to explore the nature and practice of software development with particular emphasis upon the "front end" tasks. It examined and evaluated approaches to, and the technology available for, requirements engineering and enabled competence in the performance of the key requirements engineering tasks.

Student where introduced to a number of Requirements Engineering models, particularly formal modelling (in the form of VDM) and Problems Domains, then they where asked to compare and contract these methods, discussing the advantages and disadvantages of the methods. They where given a problem, of moderate complexity, and asked to develop appropriate elicitation strategies and plans for the analyse, design and specification of the problem. Students where expected to explain the main principal of Requirements Engineering and the means of validating a software product.

Individual Project (BSc Computing Framework, Final Year / Level H)
The project provided an opportunity for students to display their ability and pursue their academic interests in a piece of individually researched work, and to acquire skills and expertise different from those obtainable through taught units. The Project was intended to be completed in accordance with the British Computer Society framework for final year projects and successful completion should qualify the student for exemption from the Project part of the Professional Examination.

The learner had the opportunity to pursue a topic of their choice to some considerable depth. Students where expected to undertake the complete development of a software product, ie, they where expected to use most of the development lifecycle.

Students where asked to submit a preliminary proposal during their placement year, with a full proposal being submitted at the start of the final year. Mid way though the project students where asked to give a progress report to their supervisor and second reader.

A short series of lectures on the research process where given at the start of the unit. A second series of lectures on data analysis, evaluation and the writing of the project report was given mid way thought the year.

Programming Languages (BSc Computing, Final Year / Level H)
Set out to explain the strengths and weaknesses of the different programming paradigms. A number of paradigms where introduced and students where asked to critically evaluate the paradigms suitability for a given purpose. Students where asked to identify the common components of all programming languages and indicate why they are required, and how the different paradigms address these requirements. Finally, the students would be given a problem and asked to make a recommendation as to which paradigm is best suited to the problem and provide a supporting argument for their recommendation.
Compiler Design (BSc Computing, Final Year / Level H)
Enabled the learner to develop more compact code by providing an understanding of the techniques used to implement a high-level programming language. In providing an appreciation of the boundaries and limitation of the different implementation techniques the learner would be able to make a recommendation as to which implementation technology to use under a variety of conditions.

After completing the unit, the student should be able to:

  1. Critically evaluate different implementations of the same programming language.
  2. Explain the different implementation techniques and their effect on the development process.
  3. Identify optimisations at the source code level, and justify the optimisation in terms of the underlying compilation process.
  4. Design and build a simple programming language processor.
Internet Application Development (BSc Software Engineering Management/Computing, Final Year / Level H)
Developed an understanding of the technology used to develop Client-Server and Internet / Intranet / Extranet application over a web-based network. Strong emphasis was placed on web-programming, interactive and hands on web development through the practical project. Students where taken through the beginning and intermediate steps of the development and creation of a business application web site, with a strong emphasis on the technology used to develop data-driven web sites. This unit built on concepts taught in the Software Development and Database units, and complemented the Distributed Systems unit.

Students where introduced to the technology required for developing data driven web-based applications. In particular the techniques required for cooperate web application development where reviewed, with attention being given to web commerce, web-based database integration and overall web development.

Systems Architecture (MSc Software Engineering, Level M)
The platforms supporting modern applications are combinations of hardware, software and communications technologies. The price/performance and functionality of computer systems continually improves and there is an increasing trend towards networked and distributed solutions. A software engineer must be familiar with the underlying technology, aware of the way platforms support applications software and appreciate the implications of alternative system architectures on application design.

The unit aimed to develop a sound understanding of the platforms upon which applications can be built and the implications for system development. On completion of this unit the student should have been able to:

Lecturer at the University of Paisley
Second Year:
Systems Analysis and Design
Business Computing
Degree Year:
Formal Specification
Formal Modelling
Honours Year:
Project Coordinator
Software Engineering
Globalisation and the Internet
Systems Analysis and Design
Systems Analysis and Design (BSc Computing Degree Scheme, Second Year and PgD/MSc Information Technology)
These modules had the same intent, similar content, but where taught differently for the two courses. The intention was to introduce the students to the non-programming activities of software development, informal requirements analysis and systems design. The modules where designed to provide the students with the opportunity to practise and develop their skills in team work, requirements gathering and analysis, and system design.
Formal Specification (BSc Software Engineering, Degree Year)
In this module the students are introduced to the role of formal methods in the specification of software components. This includes predicate calculus, formal reasoning, and set theory. The aim is for the students to be able to read and understand a formal specification written using the Z notation.
Formal Modelling (BSc Software Engineering, Degree Year)
This module was an extension of the Formal Specification module. The students where introduced to schema calculus to aid in the construction of specifications for large, complex software. The use of data and operational refinement to drive an ADA program from a Z specification.

On completion of both modules (Formal Specification and Formal Modelling) the students should be able to take a project from original requirements specification to program derivation using formal methods.

Project Coordinator (BSc Computing Degree Scheme, Honours Year)
The Project was a major part of the honours year. All honours students had to undertake and pass the project before they could achieve an honours degree. It was a substantial investigation into a chosen area, normally involving the development of a substantial piece of software. The project was managed by a member of the academic staff, but was otherwise unsupervised.

My role was to coordinate the projects. This included the allocation of academic managers, and correlating the marks of the written reports and oral presentations.

Software Engineering (PgD/MSc Information Technology)
This module was intended to introduce students to the non-programming aspects of Software Engineering. These included the fundamental concepts of object-oriented design (this part of the module was taught by Dr. Ying Liang), the management of Software Projects, a basic understanding of the use of formal models, and a number of different rigorous testing techniques.
Globalisation and the Internet (MSc European Information Technology Support)
The student was introduced to the emerging Internet, Intranet and World Wide Web technologies. The principles of hypertext, multimedia, and hypermedia where covered and examples given. The mechanisms for preparing information was presented along with the issues of managing a web server. Data integrity and security was discussed in relation to current technology. The effects of the Internet on working practices and community was also discussed.

The aim of this module was to give the student a critical understanding of the potential and limitations of the Internet and Intranets.

Part-Time Lecturer at the University of Teesside
Second Year:
Industrial Systems Implementation
Group Project Coordinator
Real-Time Systems
Formal Descriptive Languages
Industrial Systems Implementation (HND Computer Science, Second Year)
This course was intended to introduce the student to the programming techniques used in embedded and dedicated systems, such as concurrency, abstraction, and object based manipulation. The concept of software being just one component in the system was introduced as was an industrial programming language.

Students where then introduced to advanced programming concepts such as memory management, event handling, low-level control and multi-tasking, and the advantages, dangers and responsibilities associated with each of them.

Group Project Coordinator (HND Computer Science, Second Year)
The Group Project was closely integrated with the Industrial Systems Implementation course, it was intended to provide the student with the skills required for project work. The students worked in small groups, each of which took a substantial application through the complete project life cycle, from requirements analysis to final testing and delivery.
Real-Time Systems (BEng Instrumentation & Control, Second Year)
This course was intended to introduce Instrumentation and Control students to the concepts of computer programming. The students where first introduced to the basic concepts of programming (sequences, conditionals, loops, subroutines, etc) and then went on to introduce the student to concepts particularly relevant to Real Time Systems (even handling, multi-tasking, low-level control, etc).

The students where set a major project at the end of the course that required them to work in small groups to develop a closed loop control system. The project included interfacing (and calibrating) hardware, developing the computer control software and user interface.

Formal Descriptive Languages (MSc Software Engineering)
The course was taught by Dr. Clive Fencott as an intensive introduction to the Z notation and its use in specification. The majority of the course was taught in a workshop/tutorial basis where the students where asked to model a software product known to them. I assisted Clive the in the workshop/tutorial part of this course.