Lesson Weekend

This week, we'll add an additional layer of complexity and interactivity to everything we've learned so far. We'll continue to write object-oriented Java applications using the Behavior-Driven Development process, JUnit, and Gradle. We'll also begin creating web-based front-end user interfaces with a tool called Spark.

Over the weekend we'll learn a little about how the internet in general works. This includes HTTP requests and responses, IP addresses, and the meaning behind URL. This may be review for some students, but this information will assist greatly in our understanding of the Spark framework, and the complex routing that will occur in our apps.

Then, we'll learn about a tool called Handlebars that will allow us to create dynamic, reusable HTML to display in our web applications. With Handlebars, we'll even be able to execute small amounts of Java logic directly in our HTML!

When we can successfully create and launch Spark applications in our browser we'll begin integrating more and more user interactivity. First, we'll add forms to collect information and dynamically display results. Then, we'll create, manipulate, and display entire Java objects with user-provided information.

Beginning on Monday, we'll spend multiple days building a much larger project together. We'll create a simple blog where we can store posts and comments. We'll start by creating a basic application with only a few pages. Throughout the week we'll integrate more features, including class-wide methods and variables to keep track of all objects, saving objects of one variety within objects of another variety to better organize our applications, and RESTful routing that follows best practices. We won’t be storing data in a database yet, but once you have worked through week 3 of our curriculum, you’ll be able to add a database for data persistence

There will be a lot of new information introduced in the early and mid portions of the week. We'll spend extra time practicing all these new concepts on Thursday. Only a few additional tips and tricks will be introduced Wednesday night; like automatically cleaning up between tests, creating project templates, and handling errors.

It's going to be a great week!

Independent Project Objectives

At the end of the week, you will create an independent project using the concepts we've learned. It will be reviewed for the following objectives:

  • App builds and runs without error - no 404 errors, 500 server errors or other runtime errors are observed during normal use.
  • Tests have complete coverage for all behaviors.
  • All tests are passing. Even on failing test fails the project as a whole.
  • Spark routes process GET and POST requests/responses successfully.
  • Spark routes follow RESTful conventions.
  • Looping, Branching and Logic is executed correctly in Handlebars templates.
  • CRUD methods are tested correctly and implemented correctly in App.java and Handlebars.
  • Previous objectives are met (see below).
  • If prompted, you can discuss your code with an instructor using the correct terminology.
  • Project is in a polished, portfolio-quality state - a well laid out user interface, basic styling, informative labelling of input forms, etc.

Previous Objectives

  • Getter methods are present and functioning.
  • Objects are created from a custom class with a custom constructor.
  • Logic is easy to understand.
  • Unnecessary files are discluded from Git with a .gitignore file.
  • Code and Git documentation follows best practices (descriptive variables names, proper indentation, detailed commit messages, well-formatted README.)