SEM510 Theory and Practice of Programming.
Last Given in Autumn 1996.

SEM510 A) Practical Programming.
DURATION: The whole of week 1 and the 2 hrs per week for weeks 2-6 + lab sessions.
LECTURES: 12 hrs in week 1. 5 hrs in weeks 2-6.
TUTORIALS: 5 hrs in weeks 2-6.
LABORATORY SESSIONS: 8 x 2hrs in week 1, 3 x 2hrs per week in weeks 2-6.
METHOD OF ASSESSMENT : Documented Programs.
IT Stream. Practical experience of Pascal programming language running under Microsoft windows in the Pentium Lab.
SE Stream Practical experience of C++ as first language running under UNIX.
AI Stream. Practical experience in an AI language running on the UNIX lab.

SEM510 B) Programming Methodology.
DURATION: 2 hrs per week for weeks 2-6.
LECTURES: 10 and about 20 hours of private study each week.
METHOD OF ASSESSMENT : Practical work and January Examination.


Week One, Lectures 1 & 2.
Definition of Software Engineering. The need for formal methods and structured programming. Documentation. Use of pseudo-code and data tables. Modularisation. Definition of module interface and documentation for a module. BS6224 and flow charts as an alternative to pseudo-code.

Exercise for Week One. Take Pascal listings of procedures and produce data tables, pseudo-code, flow charts and BS6224 diagrams. Hand in documentation for any one procedure.
See the attached file for examples of Flow charts and BS6224 diagrams. The "Mastermind Prgram" was the first exercise for the IT workshop that year.
Week Two, Lectures 3 & 4.
Program testing. Black-box and Glass-box testing. Equivalence partitioning. Boundary-value analysis. Functional and mutation testing. Types of cohesion. Cohesion and coupling.

Exercise for Week Two. Design a detailed testing strategy for the current workshop exercise and hand in the listing, documentation and testing strategy for ONE module.

Week Three, Lectures 5 & 6.
Data flow diagrams, control flow and structure charts. Production of structure charts for given examples. First and higher level factoring. Requirements definition, analysis and specification. Validation, completeness, consistency and testability of requirements.

Exercise for Week Three. Structure charts and factoring for some examples. One to be handed in.

Week Four, Lectures 7 & 8.
Testing large systems. Top-down & bottom-up testing. Types of testing. C.A.S.E. tools. Z and formal methods.

Exercise for Week Four. Z-specification for a small problem.

Week Five, Lectures 9 & 10.
Object-oriented design. Data encapsulation, Object-oriented approach. Inheritance.

The examination paper set in January 1997 is included here.