Network Programming - Syllabus

Course Overview and Structure

Embark on a profound academic exploration as you delve into the Network Programming course () within the distinguished Tribhuvan university's BCA department. Aligned with the BCA Curriculum, this course (CACS355) seamlessly merges theoretical frameworks with practical sessions, ensuring a comprehensive understanding of the subject. Rigorous assessment based on a 60+20+20 marks system, coupled with a challenging passing threshold of , propels students to strive for excellence, fostering a deeper grasp of the course content.

This 3 credit-hour journey unfolds as a holistic learning experience, bridging theory and application. Beyond theoretical comprehension, students actively engage in practical sessions, acquiring valuable skills for real-world scenarios. Immerse yourself in this well-structured course, where each element, from the course description to interactive sessions, is meticulously crafted to shape a well-rounded and insightful academic experience.


Course Description 

This course is designed to extend students' knowledge and practice in analysis and design of computer networks by focusing on computer network programming. It includes introduction, Internet Address, URLs and URis, HTTP, URLConnections, Socket Programming, IP Multicast and RMI. The JAVA programming language will be used throughout the course. It does not entirely focus on theoretical concept but also strongly focuses on practical skill based knowledge.

Course objectives 

The general objectives of this course are to provide theoretical as well as practical knowledge of network programming to make students capable of developing, implementing, managing and troubleshooting the issues of network programming in their personal as well professional life.


Units

Key Topics

  • Characteristics of Distributed Systems
    IN-1.1

    This topic covers the key characteristics of distributed systems, including decentralization, resource sharing, and concurrency.

  • Design Goals of Distributed Systems
    IN-1.2

    This topic explores the design goals of distributed systems, including scalability, fault tolerance, and security.

  • Types of Distributed Systems
    IN-1.3

    This topic discusses the different types of distributed systems, including client-server, peer-to-peer, and hybrid systems.

  • Case Study: The World Wide Web
    IN-1.4

    This topic presents a case study of the World Wide Web as a distributed system, highlighting its architecture and key features.

Key Topics

  • Introduction to Computers
    IN-01

    An overview of computers and their significance in today's world. This topic sets the stage for understanding the basics of computers.

  • Digital and Analog Computers
    IN-02

    Understanding the difference between digital and analog computers, their characteristics, and applications.

  • Characteristics of Computers
    IN-03

    Exploring the key characteristics of computers, including input, processing, storage, and output.

  • History of Computers
    IN-04

    A brief history of computers, from their inception to the present day, highlighting key milestones and developments.

  • Generations of Computers
    IN-05

    Understanding the different generations of computers, including their features, advantages, and limitations.

Key Topics

  • URIs and URLs
    UR-1

    Understanding the basics of URIs and URLs, including relative URLs.

  • The URL Class
    UR-2

    Working with the URL class, including creating new URLs, retrieving data, splitting URLs, and comparing and converting URLs.

  • The URI Class
    UR-3

    Constructing and working with the URI class, including resolving relative URIs and comparing and converting URIs.

  • URL Encoding and Decoding
    UR-4

    Understanding and working with URL encoding and decoding using the x-www-form-urlencoded format.

  • Proxies
    UR-5

    Working with proxies, including system properties, the ProxyClass, and the ProxySelector Class.

  • Server-Side Communication with GET
    UR-6

    Communicating with server-side programs using the GET method.

  • Accessing Password-Protected Sites
    UR-7

    Accessing password-protected sites using the Authenticator Class, PasswordAuthentication Class, and JPasswordField Class.

Key Topics

  • HTTP
    HT-1

    Introduction to HTTP (Hypertext Transfer Protocol) and its role in web communication.

  • Request and Response Message Format
    HT-2

    Understanding the structure and components of HTTP request and response messages.

  • Common Web Application Architectures
    HT-3

    Overview of popular web application architectures and their characteristics.

  • MVC Pattern
    HT-4

    Introduction to the Model-View-Controller (MVC) pattern and its application in web development.

Key Topics

  • URIs and URLs
    UR-1

    Understanding the basics of URIs and URLs, including relative URLs.

  • The URL Class
    UR-2

    Working with the URL class, including creating new URLs, retrieving data, splitting URLs, and comparing and converting URLs.

  • The URI Class
    UR-3

    Constructing and working with the URI class, including resolving relative URIs and comparing and converting URIs.

  • URL Encoding and Decoding
    UR-4

    Understanding and working with URL encoding and decoding using the x-www-form-urlencoded format.

  • Proxies
    UR-5

    Working with proxies, including system properties, the ProxyClass, and the ProxySelector Class.

  • Server-Side Communication with GET
    UR-6

    Communicating with server-side programs using the GET method.

  • Accessing Password-Protected Sites
    UR-7

    Accessing password-protected sites using the Authenticator Class, PasswordAuthentication Class, and JPasswordField Class.

  • Guessing MIME Media Types
    UR-8

    Learn how to guess MIME media types from a server response. Understand the importance of MIME types and how to determine them.

  • HttpURLConnection
    UR-9

    Explore the features and methods of HttpURLConnection. Learn about request methods, disconnecting from the server, handling server responses, proxies, and streaming mode.

Key Topics

  • Errors in Numerical Calculations
    SO-1

    This topic covers the sources of errors in numerical calculations, propagation of errors, and a review of Taylor's Theorem.

  • Trial and Error Method
    SO-2

    This topic explains the trial and error method for solving non-linear equations, including its convergence.

  • Half-Interval Method
    SO-3

    This topic covers the half-interval method for solving non-linear equations, including its convergence.

  • Newton's Method
    SO-4

    This topic explains Newton's method for solving non-linear equations, including its convergence and application to calculating multiple roots.

  • Secant Method
    SO-5

    This topic covers the secant method for solving non-linear equations, including its convergence.

  • Fixed Point Iteration
    SO-6

    This topic explains the fixed point iteration method for solving non-linear equations, including its convergence.

Key Topics

  • Using ServerSockets
    SO-701

    Learn how to use ServerSockets for serving binary data, creating multithreaded servers, writing to servers with sockets, and closing server sockets.

  • Logging
    SO-702

    Understand what to log and how to log in a server environment.

  • Constructing Server Sockets
    SO-703

    Discover how to construct server sockets without binding.

  • Getting Information about Server Socket
    SO-704

    Learn how to retrieve information about a server socket.

  • Socket Options
    SO-705

    Explore socket options such as SO_TIMEOUT, SO_REUSEADDR, SO_RCVBUF, and Class of Service.

  • HTTP Servers
    SO-706

    Build different types of HTTP servers, including a single file server, a redirector, and a full-fledged HTTP server.

Key Topics

  • Challenges and Approach of E-government Security
    SE-1

    This topic covers the challenges faced by e-government in terms of security and the approaches to address them. It explores the importance of security in e-government and the ways to mitigate risks.

  • Security Management Model
    SE-2

    This topic introduces a security management model for e-government, outlining the key components and processes involved in ensuring the security of e-government systems.

  • E-Government Security Architecture
    SE-3

    This topic delves into the architecture of e-government security, including the design and implementation of secure systems and infrastructure for e-government services.

  • Security Standards
    SE-4

    This topic covers the security standards and guidelines for e-government, including international standards and best practices for ensuring the security of e-government systems and data.

  • Data Transaction Security
    SE-5

    Security measures for protecting data during transactions in e-commerce.

  • Security Mechanisms
    SE-6

    Various security mechanisms used in e-commerce including cryptography, hash functions, digital signatures, authentication, access controls, intrusion detection systems, and secured socket layer (SSL).

  • javax.servlet.http Package
    SE-7

    Exploring the javax.servlet.http package, including key classes and interfaces. Understanding how to use the package to develop HTTP-based servlets.

9.1 An Example Client and Server

9.2 Buffers: Creating Buffers, Filling and Draining, Bulk Methods, Data Conversion, View Buffers, Compacting Buffers, Duplicating Buffers, Slicing Buffers, Marking and Resetting, Object Methods

9.3 Channels: SocketChannel, ServerSocketChannel, The Channels Class, Asynchronous Channels, Socket Options

9.4 Readiness Selection: The Selector Class, The SelectionKey Class

Key Topics

  • UDP Protocol
    UD-1

    Introduction to the UDP protocol, its features, and characteristics.

  • UDP Clients
    UD-2

    Understanding UDP clients, their role in network communication, and how they interact with UDP servers.

  • UDP Servers
    UD-3

    Understanding UDP servers, their role in network communication, and how they interact with UDP clients.

  • DatagramPacket Class
    UD-4

    Exploring the DatagramPacket class, its constructors, get methods, and set methods in UDP programming.

  • DatagramSocket Class
    UD-5

    Understanding the DatagramSocket class, its constructors, sending and receiving datagrams, and managing connections.

  • Socket Options
    UD-6

    Configuring socket options in UDP programming, including SO_TIMEOUT, SO_RCVBUF, SO_SNDBUF, SO_REUSEADDR, SO_BROADCAST, and IP_TOS.

  • UDP Applications
    UD-7

    Building UDP applications, including simple UDP clients, UDP servers, and UDP echo clients.

  • DatagramChannel
    UD-8

    Using DatagramChannel in UDP programming for efficient and scalable network communication.

Key Topics

  • Multicasting Fundamentals
    IP-11.1

    This topic covers the basics of multicasting, including multicast addresses and groups, clients and servers, and routers and routing.

  • Working with Multicast Sockets
    IP-11.2

    This topic explores the use of multicast sockets, including the constructor and communicating with a group.

Key Topics

  • Relational Database Design Using ER-to-Relational Mapping
    RE-1

    Learn how to design relational databases using ER-to-relational mapping, including mapping of regular entities, weak entities, relationship types, multivalued attributes, and N-ary relationships.

  • Informal Design Guidelines for Relational Schemas
    RE-2

    Understand informal design guidelines for relational schemas, including semantics of attributes in relations, redundant information in tuples and update anomalies, NULL values in tuples, and generation of spurious tuples.

  • Functional Dependencies
    RE-3

    Study functional dependencies, including definition, inference rules, Armstrong's axioms, attribute closure, equivalence of functional dependencies, and minimal sets of functional dependencies.

Lab works

Laboratory Work

Laboratory work should be done covering all the topics listed above and a small project work should be carried out using the concept learnt in this course using Java programming Language.