Bcs Level 6 Professional Graduate Diploma In It Programming Paradigms

Transcription

BCS LEVEL 6 PROFESSIONALGRADUATE DIPLOMA IN ITPROGRAMMING PARADIGMSSYLLABUSSeptember 2021 v3.0This is a United Kingdom government regulated qualificationwhich is administered and approved by one or more of thefollowing: Ofqual, Qualifications Wales, CCEA Regulation or SQA.

CONTENTS3. Introduction4. Qualification Suitability and Overview4. SFIA Levels5. Learning Outcomes6. Syllabus12. Examination Format12. Question Weighting13. Recommended Reading14. Using BCS Books14. Document Change History

IntroductionThe final stage within the BCS three-stage Higher Education Qualification programme, the Level 6Professional Graduate Diploma (PGD) enables candidates who have already achieved the Level 5 Diploma inIT to gain depth of knowledge and expertise in their field.Our modules have been created in-line with the SFIAPlus framework and latest developments in theindustry, giving you a competitive edge in the IT job market and showing your dedication to the industry.You will have the opportunity to learn about topics such as advanced database management, networkinformation systems, web engineering and programming paradigms, as well as to build upon knowledgeand skills developed during the Level 5 Diploma.To successfully achieve the qualification, candidates need to complete:··One core module (Professional Project in IT)Four optional modulesDepending on entrance conditions, completing the Level 6 PGD in IT may support entry onto a Master’sdegree course at selected global universities.Programming Paradigms optional moduleThe Programming Paradigms module is an optional module that forms part of the Level 6 PGD in IT – thefinal stage within the BCS three-stage Higher Education Qualification programme.Candidates will develop an overview of modern programming languages and the programming paradigmsthey implement, as well as an appreciation for the new perspectives on software construction thateach language offers. This module explores a range of software development tools and programmingtechniques, and is designed to showcase the contribution language designers can make to softwareengineering practice.3

Qualification Suitability andOverviewCandidates must have achieved the Diploma in IT or have an appropriate exemption in order to be enteredfor the Professional Graduate Diploma (PGD). Candidates can study for this PGD by attending a trainingcourse provided by a BCS accredited Training Provider or through self-study, although it is stronglyrecommended that all candidates register with an approved centre. Studying with an approved centre willdeliver significant benefits.Candidates are required to become a member of BCS, The Chartered Institute for IT, to sit and be awardedthe qualifications. Candidates may apply for a four-year student membership that will support themthroughout their studies.The Level 6 PGD is suitable for professionals wishing to gain an advanced formal IT qualification, and thismodule may be particularly relevant for candidates who are interested in career opportunities such as web,app, software or game development.Total Qualification Time(Certificate)Guided Learning Hours(Module)Assessment Time(Exam)1414 hours250 hoursThree hoursSFIA LevelsThis award provides candidates with the level of knowledge highlighted within the table, enablingcandidates to develop the skills to operate successfully at the levels of responsibility indicated.LevelLevels of KnowledgeK7Levels of Skill and Responsibility (SFIA)Set strategy, inspire and mobiliseK6EvaluateInitiate and influenceK5SynthesiseEnsure and tK1RememberFollow4

SFIA PlusThis syllabus has been linked to the SFIA knowledge skills and behaviours required at Level 6.PROG4Designs, codes, verifies, tests, documents, amends and refactors complex programs/scripts and integrationsoftware services. Contributes to selection of the software development approach for projects, selectingappropriately from predictive (plan-driven) approaches or adaptive (iterative/agile) approaches. Appliesagreed standards and tools, to achieve well-engineered outcomes. Participates in reviews of own work andleads reviews of colleagues’ work.Further detail around the SFIA Levels can be found at www.bcs.org/levels.Learning OutcomesUpon completion of this module, candidates will be able to: Compare and contrast a range of programming paradigms.Evaluate programming language features critically with respect to the way they support good softwareengineering practiceDiscuss the appropriateness of the use of a given programming paradigm within a given environment.5

Syllabus1. The nature of programming languagesLearners will be able to:1.1 Critically compare imperative and declarative languages.Indicative contentGuidancea. General characteristics ofImperative languagesb. General characteristics ofdeclarative languagesThis considers the general distinction between specifying howthe computer should perform a task (i.e. an imperative style) andwhat the computer should do (i.e. a declarative style). Candidatesshould be able to compare these two general paradigms, considerthe application of these for a problem and discuss examples ofdifferent languages.1.2 Discuss different styles of language.Indicative contentGuidancea.b.c.d.Understanding different styles of programming languages isimportant to help chose appropriate tools for a problem. Candidatesshould be aware of the main concepts and the similarities anddifferences between these language styles. Candidates should alsobe able to discuss examples of these styles of development andconsider when some are more appropriate than others for a giventask.Object-oriented languagesProcedural languagesScripting languagesData-oriented languages1.3 Discuss event-driven programming and its use.Indicative contentGuidancea. Events and event handlersb. Use in programs withgraphical user interfacesc. Use in web developmentEvent-driven programming is typically used in systems with userinterfaces, including desktop, mobile and web systems. Candidatesshould be familiar with the ideas of events and event handlers, andhow these are used to develop systems.6

1.4 Discuss language standardisation and its use.Indicative contentGuidancea. Purpose of standardisationfor a programming languageb. Benefits for developers andtool vendorsc. Potential drawbacks ofstandardisationd. Awareness standardisationbodies, e.g. ECMA, ANSI, ISOThis section of the syllabus aims to consider the benefits of havinga definition of a language that developers and tool vendors canwork with and how that helps with portability and tool support.Candidates should be aware of some of the standardisation bodiesand be able to discuss possible problems with standardisation interms of the speed of change and getting agreement for changes.2. Programming environmentsLearners will be able to:2.1 Describe the use of compilers and interpreters and how they work.Indicative contentGuidancea. Process of converting codeinto executable programsb. Compilationc. Interpretersd. Hybrid use of compilationand interpreterse. Steps for compilation andinterpreters, e.g.:i. Tokenisingii. Parsingiii. Code generationiv. LinkingComputer programs need to be converted from some humanreadable format into a format that can be executed on thecomputer. Different languages use compilation, interpretationor a mixture of these techniques to produce executable code.Candidates should be familiar with the concepts and understandthat different languages require their own tools for this process.They should have an awareness of the similarities and differencesof the main processing stages for compilers and interpreters.7

2.2 Discuss interactive development tools (IDE) and their use.Indicative contentGuidancea. Purpose and architecture/framework of IDEb. Tools available, e.g.:i. Code editingii. Syntax highlightingiii. Code completioniv. Debuggingv. Testingvi. Build toolsvii. Version controlh. Support for teamdevelopmentThis considers how IDEs provide a way to bring together a set ofdevelopment tools into a single development environment. Thereare numerous IDEs available, some of which are designed fora single language or development environment and some thatprovide support for multiple languages. Candidates should have anawareness of the typical tools that are available and how they canbe used to support development of a system and also collaborationwithin a team.2.3 Discuss the purpose and use of debugging tools.Indicative contentGuidancea. Purpose of debugging insystem developmentb. Common features indebugging tools, e.g.:i. Runii. Pauseiii. Step intoiv. Step overc. Inspecting valuesd. Watch valuese. BreakpointsDebugging tools provide invaluable support to developers tointerrogate the state of a system while it is running. Candidatesshould understand the key functions and how these can be used toinvestigate and solve problems in the logic of the system.2.4 Discuss the purpose and use of testing tools.Indicative contentGuidancea. Purpose of testing toolsb. Automated testing, e.g.:i. Using unit testingframeworksii. UI testing frameworksc. Use of static checking, e.g.:i. Linte. Role of testing in continuousintegrationCandidates should show an understanding of the relevance oftesting tools for software development and how tests can beautomated to have repeatable tests for different parts of thesystem. Automated tests may include testing the code duringexecution or running static analysis to catch common issues. Thereshould be an awareness of how continuous integration is used inmodern systems to run tests.8

2.5 Describe configuration management.Indicative contentGuidancea. Build toolsb. Version control systems, e.g.:i. Gitii. Subversionc. Building different versions ofsoftwareConfiguration management is used to manage dependencies,build software, track the development of different versions ofthe software, and rebuild specific versions of software systems.Candidates should be able to discuss the general processes andexample tools that can support this.3. Object orientationLearners will be able to:3.1 Discuss concepts of object-oriented programming.Indicative contentGuidancea. Basic concepts, e.g.:i. Objectsii. Classesiii. Methodsiv. Overloading methodsv. Messagesb. Inheritance, e.g.:i. Single inheritanceii. Multiple inheritanceiii. Overriding methodsiv. Interfaces (e.g. in Java)v. Generalisationc. Encapsulationd. PolymorphismObject oriented systems are a popular way ofdeveloping modern systems and they are anexample of imperative programming. Candidatesshould be able to describe the main concepts andapply them to example problems to show how theconcepts are used in programs.9

4. Functional programmingLearners will be able to:4.1 Discuss the concepts in functional programming.Indicative contentGuidancea. Definition of functionsb. Domain and range offunctionsc. Total and partial functionsd. Strict functionse. Recursive functions anddifferences betweenrecursion and iterationf. Examples of applyingthese concepts to a sampleproblemFunctional programming is a programming paradigm thatcreates programs by composing and applying functions. As wellas functional languages such as Haskell, some of the functionalconcepts are being adopted in other programming languages. Anawareness of these concepts gives candidates an alternative wayto think about developing software, and an understanding of howthese concepts can be applied in other programming languages.Candidates should be able to write a short extract of code in afunctional language, e.g. Haskell.4.2 Discuss the concept of side-effects and referential transparency.Indicative contentGuidancea. Purpose of side-effectsb. Pure functionc. Referential transparencyCandidates should have an understanding of side-effects and theirrelevance for functional and non-functional languages.5. Logic programmingLearners will be able to:5.1 Discuss the concepts in logic programming.Indicative contentGuidancea. Definition and semantics of alogic programb. Facts, queries and rules,atoms, types and structuresc. Recursiond. First-order logicThis aims to provide a grounding in logic programming so that alearner understands the main concepts and how they compare andcontrast with other programming paradigms. Candidates should befamiliar with Prolog as an example logic language and be able tounderstand and write simple programs.10

5.2 Discuss the use of queries.Indicative contentGuidancea. Existential queriesb. Conjunctive queriesc. The application of rulesThis section of the syllabus is about using queries to interrogatethe knowledgebase as part of a logic program. This is an importantaspect that makes active use of the facts that are defined in thesystem.5.3 Discuss and show understanding of goal reduction.Indicative contentGuidancea. Specifying goalsb. Control flow, e.g. cut operatorCandidates should be able to demonstrate an understanding ofhow goals are processed and how the control flow can be managed5.4 Discuss negation in logic programming.Indicative contentGuidancea. Closed world assumptionb. Negation as failureThis is about what knowledge is contained within a logic programand what that means for processing when knowledge is notcontained within the knowledge base.6. Related issuesLearners will be able to:6.1 Discuss the term concurrency.Indicative contentGuidancea. The purpose of concurrentsystemsb. Mutual exclusion blocksc. Semaphoresd. Race conditione. DeadlockModern computer systems run concurrently, and candidates areexpected to be aware of the key issues of concurrency and howit can be used in systems. They should have an awareness ofgeneral techniques such as how to handle shared data betweenthe concurrent parts of the system. Candidates should also be ableto apply the ideas to a problem, and also show an awareness ofproblems that can exist in concurrent systems.11

Examination FormatThis module is assessed through completion of an invigilated written exam.Type Three written questions from a choice of five, each with equal marksDuration Three hoursSupervised YesOpen Book No (no materials can be taken into the examination room)Passmark 10/25 (40%)Delivery Paper format onlyAdjustments and/or additional time can be requested in line with the BCS reasonable adjustments policyfor candidates with a disability or other special considerations.Question WeightingCandidates will choose three questions from a choice of five. All questions are equally weighted and worth25 marks.12

Recommended ReadingPrimary textsTitle: Concepts of Programming LanguagesAuthor: Sebesta, R.Publisher: PearsonDate: 2016ISBN: 978-1292100555Title: Programming Language PragmaticsAuthor: Scott, M.Publisher: Morgan KaufmannDate: 2015ISBN: 978-8131222560Title: Programming Languages: Principles and ParadigmsAuthor: Gabbrielli, M., Martini, S.Publisher: SpringerDate: 2010ISBN: 978-184882913813

Additional textsTitle: Programming Language PragmaticsAuthor: Scott, M.Publisher: Morgan KaufmannDate: 2015ISBN: 978-0201710120Title: Concepts in Programming LanguagesAuthor: J. C. MitchellPublisher: Cambridge University PressDate: 2002ISBN: 978-0521780988Title: Programming Languages: Principles and Paradigms (secondedition)Author: A. Tucker and R. NoonanPublisher: McGraw-HillDate: 2006ISBN: 978-0072866094

Using BCS BooksAccredited Training Organisations may include excerpts from BCS books in the course materials. If youwish to use excerpts from the books you will need a license from BCS. To request a license, please contactthe Head of Publishing at BCS outlining the material you wish to copy and its intended use.Document Change HistoryAny changes made to the syllabus shall be clearly documented with a change history log. This shall includethe latest version number, date of the amendment and changes made. The purpose is to identify quicklywhat changes have been made.Version NumberChanges MadeVersion 1.0July 2021Document Creation14

CONTACTFor further information please contact:BCSThe Chartered Institute for IT3 Newbridge SquareSwindonSN1 1BYT 44 (0)1793 417 445www.bcs.org 2021 Reserved. BCS, The Chartered Institute for ITAll rights reserved. No part of this material protected by this copyright may be reproduced or utilised in any form,or by any means, electronic or mechanical, including photocopying, recording, or by any information storage andretrieval system without prior authorisation and credit to BCS, The Chartered Institute for IT.Although BCS, The Chartered Institute for IT has used reasonable endeavours in compiling the document it does notguarantee nor shall it be responsible for reliance upon the contents of the document and shall not be liable for anyfalse, inaccurate or incomplete information. Any reliance placed upon the contents by the reader is at the reader’ssole risk and BCS, The Chartered Institute for IT shall not be liable for any consequences of such reliance.Copyright BCS 2021BCS Level 6 Professional Graduate Diploma inProgramming Paradigms v1.0

4. Functional programming Indicative content a. Definition of functions b. Domain and range of functions c. Total and partial functions d. Strict functions e. Recursive functions and differences between recursion and iteration f. Examples of applying these concepts to a sample problem Guidance Functional programming is a programming paradigm that