module specification

CS6002 - Distributed and Internet Systems (2017/18)

Module specification Module approved to run in 2017/18
Module status DELETED (This module is no longer running)
Module title Distributed and Internet Systems
Module level Honours (06)
Credit rating for module 30
School School of Computing and Digital Media
Total study hours 300
 
90 hours Scheduled learning & teaching activities
210 hours Guided independent study
Assessment components
Type Weighting Qualifying mark Description
Coursework 25%   Distributed system and Report
Coursework 25%   Cybersecurity system and Report
Practical Examination 10%   Demonstration of Workshop Tasks
Unseen Examination 20%   Unseen Exam (1.5 hours)
Unseen Examination 20%   Unseen Exam (1.5 hours)
Running in 2017/18

(Please note that module timeslots are subject to change)
Period Campus Day Time Module Leader
Year North Monday Morning

Module summary

This module equips students with professional level programming skills required for developing distributed software systems to solve real-world problems. Students are taught alternative conceptual paradigms, design patterns, frameworks and programming techniques for developing distributed systems for local networks, Internet or the Web. The typical phases of software development life cycle are covered using industry standard languages and tools, for example modelling (UML, XML), design, implementation and testing using popular IDEs, thereby improving students’ employment prospects. Successful completion of this module will give students an opportunity to gain professional Java certification or similar and essential modern requirements of risk assessment prior to embedding appropriate cybersecurity.

Prior learning requirements

Successful completion of level 5 or equivalent

Module aims

  • Understanding theoretical concepts related to the use of paradigms, models and software patterns for distributed applications
  • Learning approaches and techniques for programming distributed systems
  • Acquiring practical skills in design, programming and integration of distributed software systems over local networks, the Internet and on the Web
  • Applying analytical knowledge and practical skills for building typical distributed systems
  • Assessing risk and applying appropriate security
  • Developing ability to compare alternatives and estimate trade-offs during design of distributed systems using different design patterns, development  frameworks and programming techniques
  • Building professional competence and increasing employability through the use of industrial technologies and enterprise tools for software development (Integrated Development Environment, IDE), engineering and re-engineering (Computer-Aided Software Engineering, CASE)

Syllabus

  1. Distributed systems Overview. Principles, classification and examples. Software architectures and protocols.
  2. Processes and inter-process communication. Layers and sockets
  3. Concurrency and parallelism. Threads, multithreading and synchronization
  4. Client/Server Systems. Local and remote objects. Naming, proxies and remote method invocation
  5. Enterprise systems. Tiers, containers and components. Trustworthy software. Principles, software technologies and tools.
  6. Peer-to-peer Systems. Unicast and Broadcast Models. Local Resources, Remote Services and Service Discovery
  7. Asynchronous Systems. Communication using messaging and PUSH. Technologies for building asynchronous systems for the Internet, e.g. AJAX, JSON, etc.
  8. Security and risk assessment in Distributed Systems. Information security, network security, operation security and cybersecurity
  9. Network security. Security toolbox: Identification, Authentication, Access Control and Encryption
  10. Web Security. Web browser attacks, Web server attacks and Web user attacks
  11. Security on the Cloud. Cloud Identity Management. Cloud Security Tools and Techniques. Securing IaaS

Learning and teaching

The Learning and Teaching Strategy in this module combines

  • Lectures for defining concepts, describing methods and discussing alternative choices
  • Workshops for demonstrating software tools, configuring working environments, building solutions, discussing alternatives and acquiring hands-on experience
  • Individual coursework for reporting technological research and technical solutions, comparing design alternatives and personal reflection
  • Blended learning through the use of Virtual Learning Environments (VLE) for setting problem scenarios, providing prepared solutions, submitting assessment materials and obtaining feedback
  • Public demonstration of software solutions for evaluation and reflection of individual practice during workshops in Computer Lab

Learning outcomes

On successful completion of this module the student should be able to:

LO1: Demonstrate understanding of different distributed paradigms, their limitations and applicability for developing standalone, client/server and peer-to-peer applications, software components and services for the Internet and the Web
LO2: Design software architectures for distributed systems based on functional specifications, analytical models and design patterns
LO3: Interpret, transform and implement design specifications in pseudo-code, UML and XML into working code using suitable industrial tools, standard APIs, third-party software libraries and products
LO4: Integrate existing software components, products and services for implementing distributed, Internet and Web-based systems using suitable frameworks, development tools and software APIs
LO5: Evaluate alternatives for implementation of distributed, Internet and Web-based systems, justify design decisions, estimate trade-offs  and critically evaluate their impact at different stages of the software lifecycle
LO6: Apply for level one professional certification for programming.
LO7: Undertaking risk assessment and apply appropriate security

Assessment strategy

The assessment strategy in the module is based on combining regular assessment of the progression through demonstrating of the prepared solution of workshop tasks, periodic assessment of the systematic progress through individual coursework dedicated to solving relatively large practical problems, intermediate diagnostic test for evaluating the progress towards the end goal, and one final two-hours exam for assessing the overall achievements in the end of the Academic Year.

• The coursework will involve designing, implementing, testing and documenting of distributed, Internet and Web-based applications with control of the security, and is aimed at developing students’ skills, professionalism and problem solving strategies [LO2-LO5].
• The workshop materials, activities and feedback opportunities will be dedicated to supporting student learning and provide working examples of typical distributed, Internet and Web-based applications and security solutions. Students will have the opportunity to demonstrate their work on the workshop exercises and receive regular feedback to enhance their learning [LO2-LO4].
• Students’ overall understanding of the subject, analytical and problem-solving skills will be assessed through the end of year final exam [LO1, LO2-L5]
• A special optional diagnostic test in the end of the first semester will be used to indicate their preparation for professional certification [LO6]

Bibliography

Core Textbooks

  • Coulouris, G., Dollimore, J., and Kindberg, T., Distributed Systems: Concepts and Design, third or later edition, Addison Wesley; 2005, ISBN 0321263545
  • Anderson, R., Security Engineering, second or later edition, Wiley, 2008; ISBN: 0470068523

Additional Textbooks

  • Graba, J., An Introduction to Network Programming with Java, second or later edition, Springer, 2006; ISBN 1846283809
  • Pfleeger, C., Pfleeger,  S., and Margulies, J. Security in Computing, fifth or later edition, Prentice Hall, 2015; ISBN: 0134085043