This page provides a number of resources with information on the tools that you will use in the course, and some technologies that you will need to become familiar with. Feel free to use this page throughout the semester to help locate resources for the different technologies we will be using.
You will use Java to implement the term project. This course has a prerequisite of GCIS-124, CSCI-142, or an equivalent course that provides the fundamentals of object-oriented programming. If you need to refresh your knowledge of Java, these resources will help. If your prerequisite course did not use Java as the object-oriented language, it will be your responsibility to learn the language early on in the course so that you will be able to contribute to your project team's implementation work.Be certain to check with your instruction as to what specific version to install prior to engaging in class and project work
Your term project will be a web-based application, and you will use current web application technologies to implement it. These resources can provide you with additional information about working with these technologies.
Angular is a web application platform and framework for building single-page applications. These are some resources for more information about the framework. There are many others that you may find through your research.
Typescript is a strongly typed object oriented programming language built on JavaScript. TypeScript is the primary language for Angular application development.
You will not need to know a lot of HTML/CSS to build this application, but you will need to know some. If you have not done any webpage development before, these resources will be helpful to you.
You will use the Spring framework for creating your REST API service. The Spring framework provides the scaffolding to quickly create an application that responds to HTTP requests for the purposes of managing resources.
One of your project tasks will be to design the applications REST API. To do that design work, you will need a small amount of knowledge about the HTTP protocol. These resources should give you the introduction that you need.
The term project is not a very large project, and your team is relatively small. Even so, one of your challenges will be managing the team and project. The project requires your team to use some online tools to assist with, though not be a silver bullet solution for, these challenges.
Slack is a tool, and should not be used as the silver bullet of team communication. Here are some guidelines and best practices.
Your team will be required to manage the project code and other artifacts using the Git version control system. Students who took GCIS-124 or CSCI-142 as their prerequisite course have some experience using Git in that course. You will host your repository (repo) on GitHub and make use of its issue tracking and pull request review mechanism. These are resources for information on using these tools.
A large percentage of your project work time will be doing code development, debugging, and testing. If you become very familiar with the development tools that you will use, it will save you a lot of time and make you much more productive.
The students coming through GCIS-124 will have experience doing Java development using the VS Code tool.
Testing is done in multiple stages of a software development project. The software developer is responsible for unit testing at the class level. Whenever code is developed in a class, the developer will create unit tests to verify the functionality of the code for both correct scenarios and error checks. These tests should be implemented with the support of a testing framework, such as JUnit. The testing framework provides mechanisms to run the tests and to verify the results. Each class must be tested in isolation which requires the tests to control all dependencies that the class under test has on other objects. Object mocking is a technique for creating objects that the tested class will use during a test. A mocking framework, such as Mockito, supports the definition of mock objects and the responses that should occur when methods are called. The mocking framework also allows the test to check if methods were called the expected number of times during a test. Your team will be required to write unit tests for all non-trivial class in your project.
You should design your program's test suite to test all aspects of functionality of the application. A code coverage tool, such as JaCoCo, can compute execution at the class, method, line, and down to the Java byte code level. Your team should aim to have 100% coverage of your code base.
For the term project, you should not need to do a lot of client side debugging, but it will be helpful to have a way to view the HTTP protocol exchanges. Browsers come with debugging tools for seeing the request and response messages.
You will use the Apache maven tool to build and execute your project. You will not need to do a lot with the pom.xml (program object model) declarations to maven except adding new elements along the way to do unit testing, code coverage, etc. Some knowledge of how maven works will take away the idea that it is all just magic.
You will be asked to describe your design with class structure, sequence, and statechart diagrams using the UML notations. Here are a few tools you might use to do this.
Markdown is a simple formatting notation that you will use for creating your design documentation. All of the documentation including image files for UML models are included in your project's repository. Here are some resources for working with Markdown formatting.
pandoc DesignDoc.md -V geometry:margin=1in -o DesignDoc.pdf