Module
CMPSMC31 - ADVANCED PROGRAMMING CONCEPTS AND TECHNIQUES
- Module Code:
- CMPSMC31
- Department:
- Computing Sciences
- Credit Value:
- 20
- Level:
- M
Course notes will be made available on the Blackboard site for this module.
IDE's and other software packages required for the coursework will be available on the School's computer in the MSc Lab.
Laboratory work will take place during timetabled laboratory periods. The coursework may require students to spend time working in the School's laboratories outside the timetabled hours.
The main library catalogue currently lists numerous software engineering and programming books which are find at location QA 76.
Recommended reading:
Gamma E., Helm R., Johnson R. and Vlissides J. Design Patterns - Elements of Reusable Object-
Oriented Software. Addison-Wesley, 1995.
Other relevant textbooks:
- Malik D.S. C++ Programming: Program Design Including Data Structures, Fourth Edition. Course Technology, CEngage Learning, 2009.
- Liberty J. and Xie D. Programming C# 3.0, Fifth Edition. O'Reilly publishers, 2008.
- Horstmann C. Java Concepts, Sixth Edition. John Wiley & Sons, 2010.
- Lano K. Model-Driven Software Development - With UML and Java. Course Technology, CEngage Learning, 2009.
Web-based material:
http://www.artima.com/index.jsp
Submission:
Written coursework should be submitted by following the standard CMP practice. Students are advised to refer to the Guidelines and Hints on Written Work in CMP.
Deadlines:
If coursework is handed in after the deadline day or an agreed extension:
| Work submitted | Marks deducted |
| After 15:00 on the due date and before 15:00 on the day following the due date | 10 marks |
| After 15:00 on the second day after the due date and before 15:00 on the third day after the due date | 20 marks |
| After 15:00 on the third day after the due date and before 15:00 on the 20th day after the due date. | All the marks the work merits if submitted on time (ie no marks awarded) |
| After 20 working days | Work will not be marked and a mark of zero will be entered |
Saturdays and Sundays will NOT be taken into account for the purposes of calculation of marks deducted.
All extension requests will be managed through the LTS Hub. A request for an extension to a deadline for the submission of work for assessment should be submitted by the student to the appropriate Learning and Teaching Service Hub, prior to the deadline, on a University Extension Request Form accompanied by appropriate evidence. Extension requests will be considered by the appropriate Learning and Teaching Service Manager in those instances where (a) acceptable extenuating circumstances exist and (b) the request is submitted before the deadline. All other cases will be considered by a Coursework Coordinator in CMP.
For more details, including how to apply for an extension due to extenuating circumstances download Submission for Work Assessment (PDF, 39KB)
Plagiarism:
Plagiarism is the copying or close paraphrasing of published or unpublished work, including the work of another student; without due acknowledgement. Plagiarism is regarded a serious offence by the University, and all cases will be investigated. Possible consequences of plagiarism include deduction of marks and disciplinary action, as detailed by UEA's Policy on Plagiarism and Collusion.
Module specific:
- To outline and analyse state of the art essential software engineering concepts for efficient OOA/D (Object Oriented Analysis/Design).
- To describe and analyse the most frequently used Design Patterns.
- To elaborate on the UML notation for OOA/D.
- To introduce relatively novel concepts in Software Engineering such as agile programming.
- To teach advanced features of GPL's such as generics/templates, packages (Java), errorhandling, STL (standard template library - C++) and introducing a new language (C#).
- To consolidate different OO GPL's and outline what they have in common and where they differ.
- To consolidate the Design Patterns with the taught GPL's (C++, C# and Java).
- To elaborate on and/or introduce different popular IDE's such as Visual studio. Netbeans and Eclipse.
- To introduce methods to access the fast multi-core modern GPU's (Graphics Processing Units) for parallel processing using CUDA and OpenCL.
Transferable skills:
- To gain further experience in IT skills by the use of different IDE's and programming languages.
- To practice problem solving using a methodical and iterative approach.
- To write transparent, well-designed and validated programming code.
On completion of this module students should have achieved the following skills:
Module specific:
- To gain experience in software development tools for improved design and quality of software products.
- To learn and familiarize oneself with a number of important Design Patterns as specified by the original Gang of Four.
- To learn how to use the UML as an effective tool to aid in the OO design of medium to large software products.
- To gain further experience in the application of the popular GPL's, i.e. C++ and Java.
- To learn a new language closely related to the above, i.e. C#, and its pros and cons.
- To learn to go beyond basic programming skills by employing generics/templates, error and exception handling and testing.
- To learn how to program the GPU of a video-adapter card to speed up algorithms.
This module is delivered as a program of lectures (30 hours), workshops and laboratory classes (20 hours).
Total hours: 50
Lectures: 30 hours
- Introduction covering software engineering concepts; GPL vs DSL; Java, C++ and C#; IDE's; the (R)UP.
- Software Engineering: Design Patterns and UML
- Software Engineering: Testing, Archiving, Agile programming.
- Java: Generics programming, diverse packages (incl. GUI's), testing.
- Java: Implementing Design Patterns.
- C#
- C++: Class templates and the STL; error and exception handling; run-time type identification.
- The .NET framework, including DLL's.
- Parallel processing on the GPU: CUDA, OpenCL
- Java, C++ and C# put in perspective, Round-up.
Laboratory classes: 20 hours (with provisional weekly schedule)
Coursework


