Networks and Distributed Systems

Home Admissions Course Guide Networks and Distributed Systems

This Course Guide has been taken from the most recent presentation of the course. It would be useful for reference purposes but please note that there may be updates for the following presentation.

COMP S368

Networks and Distributed Systems

Welcome to COMP S368 Networks and Distributed Systems, a 10-credit, higher-level course for the Bachelor of Computing and Bachelor of Computing with Honours in Internet Technology (BCOMP and BCOMPHIT). We hope you will find the course interesting and rewarding, and will acquire useful knowledge and skills as a result of your studies.

This course assumes knowledge of the Java programming language as well as basic knowledge of the Internet. You are advised to have already studied COMP S201 Computing Fundamentals with Java before studying this course. It would also be helpful, though not necessary, for you to have studied the following courses:

  • COMP S311 Advanced Java Programming and Mobile Application Development;
  • COMP S260 Computer Architecture and Operating Systems; and
  • ELEC S212 Network Programming and Design.

The aim of this course is to provide you with an understanding of computer networks and how to develop distributed systems. Both of these topics are at the heart of most computer systems; for example, the design and implementation of scalable and secure websites, and business-to-business applications, require understanding of the concepts underpinning distributed systems.

Given that this area of applied computing is changing rapidly, with new technologies emerging and trends changing all the time, we intend to give you a good grounding in the principles of networks and distributed systems. By helping you to understand how things work 'under the hood,' you will get a good foundation to work from, whether you go on to be part of a team implementing and putting together a distributed system, or whether your role is to communicate with others about such systems and to make professional judgements.

During your studies you will be using a combination of study texts and software activities using Java and the NetBeans IDE.

 

Purpose of this Course Guide

This Course Guide tells you briefly what the course is about and how you can work your way through the material. It suggests the amount of time you will likely need to spend in order to complete the units and the course, and it will give you a general idea of when your assignments are due. For detailed information on assignments, however, please refer to the Assignment File, and for information on the cut-off dates (due dates) for work to be submitted, please refer to the Presentation Schedule. In this Course Guide you will also be given information on the types of support you can expect to receive on the course.

 

Course aims

The overall aim of the course is to help you develop knowledge and skills in the specification, design, implementation and evaluation of networks and distributed systems.

Specifically, the course aims to:

  • provide you with knowledge of networks and distributed systems; and
  • enable you to participate in the design and implementation of distributed systems.

 

Learning outcomes

On completion of the course, you should be able to:

  • explain the principles and concepts associated with networks and distributed systems;
  • illustrate the different contexts in which distributed systems are used, and how users interact with them;
  • elaborate on the syntactic structures of Java that are central to the implementation of large distributed systems;
  • reason out the core issues within distributed systems at an abstract level, as well as their implementation using Java;
  • critically evaluate a range of techniques for dealing with problems occurring in distributed systems and apply appropriate problem- solving techniques;
  • indicate the changing nature of this subject field, and identify some current research developments;
  • amend a given system according to new requirements and construct programs with the use of an up-to-date Java IDE; and
  • implement basic research techniques and exercise professional judgement on issues related to the design of distributed systems using specialist language.

This is the nuts-and-bolts, informative section, providing information such as what materials are needed, and how the assignments and marking are arranged. Please read it carefully.

 

Course organization

The course is divided into ten units, all developed by HKMU.

Unit 1 aims to introduce computer networks as these are the essential building blocks of any distributed system. The unit will emphasize the challenges that a computer network needs to face in a scalable and practical environment. It will also cover two important architecture designs of computer networks, namely layered architecture and data packets, which make computer network implementation possible.

At the end of the unit, we will cover the basic TCP and UDP socket implementations as an example of layered software architecture of computer networks, and appreciate the benefits of system complexity management and interoperability brought about by the layered architecture.

Unit 2 assists you to understand the definition of a distributed system, the motivations behind the use of distributed systems, the characteristics that a distributed system generally has as well as various types of distributed system architecture. This unit also uses the computer network as a working example of a distributed system, and we will describe several IP routing algorithms as examples of distributed algorithms required in a distributed system.

Unit 3 introduces the use of multi-tasking in distributed systems and the implementation and utilization of multi-tasking itself. The unit will explain the difference between process and thread, and the use and implementation of several multi-tasking coordination mechanisms: namely lock for mutex access control, and condition for multi-task dependency enforcement. At the end of the unit, we will use the multi- threading library in both Java and Python languages as working examples to illustrate the implementation of multi-tasking and multi- task coordination, as well as extending the client-server programming examples in Unit 2 into multi-threaded server implementation.

Unit 4 introduces the Java Enterprise Edition (Java EE) software architecture, and focuses on data persistence in distributed systems. It describes relational databases, transactions, and programming database access using the Java Persistence API (JPA). The emerging technology of NoSQL databases is also discussed.

Unit 5 covers the client and presentation tier of distributed systems. It begins by discussing the different types of clients, and then emphasizes web development. Web technologies are described and Web application implementation using Spring MVC framework is studied.

Unit 6 begins with an overview of the business logic in two-tier systems, three-tier systems, and the Java EE platform. It demonstrates how to implement business logic using Enterprise JavaBeans (EJBs). The views, types and advanced use of EJBs in developing distributed applications are explained.

Unit 7 deals with security. The unit begins with the security goals of information systems and the concepts of cryptography and secured network protocols. It then describes common threats to Web applications and general protections against them. Security implementations in Java EE and Web applications are discussed and demonstrated.

Unit 8 examines the use of Web services for system integration. It discusses Web service architectures of Simple Object Access Protocol (SOAP) and Representational state transfer (REST). Programming of these two types of Web services is explained and demonstrated using Java EE technologies.

Unit 9 covers messaging systems and asynchronous programming. It describes the point-to-point and publish/subscribe models of messaging. The messaging technologies of Java Message Service (JMS) and Message-Driven Beans (MDBs), and asynchronous session beans are discussed and demonstrated in building Java EE applications.

Unit 10 discusses the emerging topic of cloud computing. It explains the concept of cloud computing and describes its different types. Cloud application development on the Google App Engine (GAE) is studied. The unit also introduces the concept of big data and the MapReduce operation.

 

Course overview

The following chart gives an overview of the course structure.

 

UnitTitleStudy weeks
1Introduction to computer networks3
2Introduction to distributed systems2.5
3Multi-tasking programming2.5
4Persistence and transactions4
5Client and web development4
6Developing business logic4
7Security4
8Web services4
9Messaging3
10Cloud computing3
 Revision2
 TOTAL36

 

Course materials

Printed materials

The main printed materials for this course are in the form of study units. There are a total of 10 study units.

 

Set textbook

There is no compulsory textbook for the course.

 

Non-print media

Computer software required for this course will be freeware, which is free of charge.

The course website, accessible from your Online Learning Environment (OLE) account, will contain up-to-date news and information. We recommend that you check the course website at least once a week during your studies.

You will need to access the following items as these are not provided as printed items:

 

Equipment requirements

You are expected to have access to a PC with an Internet connection. The following PC specifications are stated here only as minimum requirements, recognizing that you may be able to access much more powerful equipment.

 

Hardware

A PC-compatible computer is needed with at least a dual-core 2GHz processor, 2GB RAM, and 3GB free disk space. The standard features such as a keyboard, a mouse and a display unit are also expected.

 

Software

Windows XP (or a newer OS) and MS Word are needed.

The programming environment that you will be expected to work with for this course is the NetBeans Integrated Development Environment (IDE) and Python 3. Instructions for downloading and installation will be provided in the course material.

 

Course assessment

The course uses assignments and a final examination as the two major means of formal assessment of your performance. Assignments serve as the continuous assessment during the study period and account for 30% of the total course assessment. A final examination conducted at the end of the course accounts for the other 70% of the total course assessment.

To pass the course, you are required to obtain at least 40% or above on the average of assignment scores and 40% or above in the final examination.

 

Assignments

There are four assignments for this course. Each assignment you complete must be submitted to your tutor by a means specified in the Assignment File. It will then be marked by the tutor and returned to you. You will also receive comments and feedback from your tutor.

You must download the assignment questions from the Online Learning Environment (OLE). Each of them should be available, at the latest, one month before the cut-off date. You would then have at least four weeks to work on the assignment. Please check the OLE regularly for the availability of the assignment questions.

You must submit the assignments on or before the cut-off dates. It has been found that submitting the assignments on time benefits course performance. Late submission is likely to ruin your study schedule and disrupt your progress. Your tutor is authorized to grant an extension of up to one week only. Your Course Coordinator can approve late assignments up to three weeks. The Dean may approve assignments up to four weeks late given valid reasons.

Among the four assignments, only the marks of the best three assignments are counted into the score of continuous assessment. The score of continuous assessment contributes 30% of the total course mark. The schedule is as follows:

 

Assignment Assignment areasDate of submissionPercentage towards overall course score
1Units 1 - 3At the end of Unit 310%
2Units 4 - 5At the end of Unit 510%
3Units 6 - 7At the end of Unit 710%
4Units 8 - 10At the end of Unit 1010%

 

Examination

At the end of the course, you are required to attend a final examination. The examination aims to test your thorough understanding in the areas covered in the course. The examination will be a three-hour, closed book written examination.

The total score of the examination paper contributes 70% of the overall course score.

 

Assessment summary

The assessment items are summarized in the following table.

 

Assessment typePercentage towards
overall course score
Four assignments
The scores for the best three assignments will count towards the final assessment.
30%
(10% each * 3)
Examination
The three-hour examination will comprise compulsory short questions and the best three out of four long questions.
70%
Total100% *

* An average score of at least 40% for the assignments and a score of 40% or above in the final examination are required to pass the course.

There are two ways for providing support for you during the course — through direct personal contact and through electronic means.

 

Personal support

The course supports you through telephone tutoring, tutorials and surgeries.

 

Tutors and tutorials

The course includes 10 tutorial meetings of two hours each — 20 contact hours in total. The tutorials are not conducted using a lecture presentation, but are conducted to provide an opportunity for you to receive some course progress guidance from your tutor. In addition, you have an opportunity to share your study experiences and difficulties in your peer-to-peer group discussions.

It is not compulsory to attend tutorials. However, it is strongly recommended that you attend all tutorials because they provide considerable assistance in your study of this course. Moreover, you will have the chance to meet other distance learners who are studying at HKMU.

You will be assigned to a tutorial group led by a tutor. The part-time tutors at HKMU are often full-time IT professionals who are interested in teaching. They are experienced in the IT field and would share with you valuable observations and knowledge.

Your assignments will be marked and commented on by your tutor, who will keep an eye on your progress and assist you if you encounter problems during the course. You should always keep a copy of each assignment submitted for marking, just in case the assignment is lost in the post, you have something to fall back on.

Details of the dates, time and location of the tutorials will be posted on the OLE in due course.

 

Surgeries

Surgeries are different from tutorials in that they are designed at a more personal consultation level. An on-duty tutor will chair each surgery session. You should prepare and bring along your own individual study problems. You can then discuss them with the tutor and gain insights on the problem or learn the direction in which a solution could be found.

The tutor on duty would speak to the whole group of students, so that the problem and solution of one student could be shared with others. It might happen that the problem discussed is also the one that you have!

 

Telephone tutoring

When you have any difficulties in your studies, you may consult your tutor by telephone in the assigned time slots. A tutor will set aside four hours each week to handle consultations. During the telephone tutoring, you can seek advice on the study topics, guidance on assignments, and help in preparing for the examination. Sometimes, a tutor may be busy discussing with other students and you might not get through. You are encouraged to resort to other means such as the online discussion forum or email.

Many students in the past felt that discussing computing over the telephone is difficult. Your tutor may prefer email and the discussion board on the OLE. He or she will let you know the best way of communication.

 

Electronic communication

Discussion forum

A discussion board will be established on the OLE for you to discuss the study topics as well as to share your learning experiences. In a distance- learning course, you may find that the opportunities to meet with other learners are rather limited. This channel provides some remedy for this deficiency.

 

Electronic mail

You may also submit your study problems to your assigned tutor through email. This channel provides flexibility to both you and your tutor in overcoming the limitations of telephone tutoring in solving the more technical issues.

COMP S368 Networks and Distributed Systems is intended to develop your understanding of networks and distributed systems, as well as broaden your knowledge of developing and constructing distributed systems using currently available solutions. You will need to read extensively and study across a wide range of applications. You should try your best to put the knowledge and techniques learned into practice in your career. We wish you success in this course and trust you will enjoy a challenging and inspiring learning experience.

Mr Chris Ching-hong Leung

Leung Ching-hong Chris is experienced in embedded system software design and development, particularly in the field of wireless communication digital processing. He received his Bachelor of Computer Engineering (First Class Honours), Master of Philosophy of Computer Science (major in computer networking) and Master of Science of IC Design Engineering from the Hong Kong University of Science and Technology (HKUST). He was previously a teaching assistant at HKUST for courses in computer architecture and computer networks, and has been a part-time tutor in Hong Kong Metropolitan University for the course Networks and Distributed Systems since 2008. He is now Principal Engineer leading a development team for the design and implementation of next generation mobile system infrastructures like LTE-A base stations.

 

Mr Kendrew Chu-man Lau

Lau Chu-man Kendrew has developed various types of systems in his career, ranging from visualization and simulation applications to wireless telephone systems. He received his Bachelor of Engineering (Honours) and Master of Philosophy, both in Information Engineering, from the Chinese University of Hong Kong, and holds Java certifications of SCJP, SCWCD, SCBCD, SCDJWS, and SCSNI. He has taught Java programming and computing subjects at the City University of Hong Kong and other universities, and operates a consulting business focusing on system development. His recent interest is in developing Web applications and mobile applications in Blackberry Playbooks and Android devices.