School of Computer Science

Module 06-19321 (2011)

Software System Components 2

Level 2/I

Robert Hendley Seyyed Shah Semester 2 20 credits
Co-ordinator: Robert Hendley
Reviewer: Rami Bahsoon

The Module Description is a strict subset of this Syllabus Page.

Aims

The aims of this module are to:

  • improve students' programming skills generally, and develop students' programming design and development skills to cope with large programs
  • provide programming experience with more advanced but commonly used Java class libraries and other packages as appropriate
  • teach specific skills in databases, web programming and concurrency, and distributed computing

Learning Outcomes

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

  • use Entity-Relationship diagrams to construct and explain conceptual models of databases, and then design tables for a relational database
  • write and explain SQL queries for a relational database
  • query and update a relational database from Java
  • explain the servlet model and structure, including the servlet lifecycle and application/session/request/page scope
  • configure, install and use servlet based web applications, implementing correct servlet request and response code, including html form processing, session handling, database connectivity and security
  • explain and evaluate web application architecture and technologies
  • explain the concepts and issues of threads and synchronisation, including thread pools
  • implement, debug and test multithreaded programs with appropriate synchronisation, in a variety of contexts such as Swing, collection classes and network I/O mechanisms
  • explain and implement socket based communication
  • implement programmatic email sending
  • explain and use object serialisation and use RPC to interact with remote objects

Teaching methods

3 hrs/week lectures/tutorials, 2-3 hrs/week labs.


Assessment

  • Sessional: 2 hour examination (80%), continuous assessment (20%).
  • Supplementary: By examination only.

Detailed Syllabus

  1. An Introduction to the design and use of Database systems (4 weeks)
    • Background, alternatives and justification of DBMSs
    • Relational Databases: i. Relational model ii. Introduction to SQL iii. creating & manipulating DBs iv. Introduction to Transactions and concurrency
    • Database Design – ER diagrams and mapping to DB implementation
    • Java & SQL – using a DB through JDBC
  2. Distributed Computing and Sockets (2 weeks)
    • Background: the network communication models
    • Sockets: purpose, justification and methods of application
    • Clients, servers and protocols
    • Implementation issues in distributed systems
  3. Threads and Concurrency (3 weeks)
    • Background to concurrent processing
    • Threads: purpose, justification and methods of application
    • Concurrent processing and shared resources
    • Multi-threaded programming caveats
    • Patterns for concurrent systems
  4. Internet Computing (2 weeks)

Programmes containing this module