Skip to content

About

My exercises and assignment submissions for the Software Workshop 2 (Full-Stack Application Development) module of the MSc Computer Science postgraduate course at the University of Birmingham during the 2020–2021 session

Resources

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

software-workshop-2

About

These are my exercises and assignment submissions for the Software Workshop 2 (Full-Stack Application Development) module of the MSc Computer Science postgraduate course at the University of Birmingham during the 2020–2021 session.

Getting Started

Prerequisites

These projects use the PostgreSQL database management system and the Gradle build tool.

All database projects access the default postgres database at address localhost on port 5432. Since some distributions of PostgreSQL require the database to be password-protected, it is assumed that the database is protected by the password password.

It is recommended to use the provided Gradle 6.8.2 Wrappers (gradlew on Unix and gradlew.bat on Windows) to build and run these projects. Although this method does not require a Gradle installation, it does require the installation of a version of the Java Development Kit between 11 and 15, inclusive. It is assumed that the JAVA_HOME and PATH environment variables are correctly set.

Installation

Simply clone the source from this repository.

git clone https://github.com/martindes01/software-workshop-2.git
cd software-workshop-2

The projects of unit-1, unit-2, unit-5/exercises/exercise-1 and unit-7 make use of the music relations. The project of assignment-1 makes use of the jabber relations. These relations can be added to the postgres database by executing the following commands in the PostgreSQL interactive terminal.

\include sql/music/music-def.sql
\include sql/music/music-data.sql
\include sql/jabber/jabber-def.sql
\include sql/jabber/jabber-data.sql

The jabber relations used by assignment-2 differ from the original jabber relations. The original relations can be replaced by dropping the original jabber relations and adding the altered relations as follows.

DROP TABLE jabberuser CASCADE;
DROP TABLE jab CASCADE;
DROP TABLE likes CASCADE;
DROP TABLE follows CASCADE;

\include assignment-2/server/jabber-def.sql
\include assignment-2/server/jabber-data.sql

This method of dropping and redefining relations can be used to reset any of the music and jabber relations.

Exercises

Each unit covers a different topic. The exercises attempted for each unit can be found in the directory named after that unit.

Unit Title
1 Introduction to SQL
2 Advanced SQL
3 Database Design and Entity-Relationship Modelling
4 Unit Testing and JUnit
5 Database Connectivity and the Client–Server Model
6 Threads and Synchronisation
7 The Multithreaded Server Model
8 Introduction to JavaFX
9 Advanced JavaFX and the Model–View–Controller Pattern

Assignment 1

Assignment 2

This repository contains my implementation of both the client and the server. When the group implementation is made public, it will be available here.

Usage

Assignment 1

To build the project, execute the build task in the assignment-1 directory using the provided Gradle Wrapper.

cd assignment-1
./gradlew build

To run the unit tests, execute the test task. Note that this will reset the jabber relations to their initial definitions before the tests are run.

./gradlew test

Assignment 2

To build the project, execute the build task in the assignment-2 directory using the provided Gradle Wrapper.

cd assignment-2
./gradlew build

To start the server, execute the run task of the server subproject. The server will attempt to listen for incoming connections on port 44444.

./gradlew :server:run

To start an instance of the client, execute the run task of the client subproject from another terminal. The client will attempt to connect to the server at address localhost on port 44444.

./gradlew :client:run

License

This project is distributed under the terms of version 3 of the GNU General Public License as published by the Free Software Foundation. See COPYING for more information.

About

My exercises and assignment submissions for the Software Workshop 2 (Full-Stack Application Development) module of the MSc Computer Science postgraduate course at the University of Birmingham during the 2020–2021 session

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages