By the end of this course you will finish a Service Oriented Java Web Application that is available on the www and is either accessible via browser, mobile application or desktop application.
The course targets the mainstream software development approach utilized widely today through Agile methods.
The course is targeted towards learning through doing, hence we will be doing lot of lab work
There will be quizzes every lecture that cover the material of the previous lecture
Topics Covered:
- SOA and Cloud Computing
- Running Java Web applications on Eclipse
- Git setup
- Maven
- Spring and Jersey frameworks
- Web Services and Microservices Architectures
- Deploying your application on the cloud (Heroku, Cloud Foundry, other?)
- Agile Software Development
- Connecting to data stores - Mongo, Postgres
- Web Sockets
- Consuming Web Services and front-end JavaScript frameworks (Angular)
- Web Sockets
Dates:
Jan 22
Jan 29
Feb 5
Feb 12 Course Project decisions
Feb 19
Feb 26
Mar 4
Mar 11
Mar 18
Mar 25
Apr 1 - Projects presentations
Apr 8
Apr 15
Apr 22
Apr 29
May 6 - Project Presentations
Grading
50% quizzes - 10-20 min (there will be at least 5 quizzes)
quizzes will cover material of the previous lecture and homework
makeup chance will be given only in exceptional cases and can be taken within 1 week (usually at the beginning of the next weeks lecture before I returned the previous quizzes)
50% course project - no late submissions will be accepted
Mar 11 presentation - 10%
Apr 8 presentation - 10%
May 6 presentation 30%
Letter Grades - Graduate:
97% - 100% A+
93% - 96% A
89% - 92% A-
85% - 88% B+
81% - 84% B
77% - 80% B-
73% - 76% C+
69% - 72% C
Letter Grades - Undergraduate:
95% - 100% A+
90% - 95% A
85% - 90% A-
80% - 85% B+
75% - 80% B
70% - 75% B-
65% - 70% C+
60% - 65% C
PROJECT REQUIREMENTS
- 30% You must write REST services - at least 4 services, each has to be of different type (GET, POST, PUT, DELETE)
- for example this file has 6 services (4 GET, 1 PUT and 1 DELETE) https://github.com/gnurmatova/jersey-with-MongoHQ/blob/f750171414f26b72013a708294446bd5482d1a93/src/main/java/com/luckypants/books/BookService.java
- You would still have to add one more that is POST
- I will look through the code of these services, this is where you may lose your points
- Are you handling errors/exceptions well and notifying user of incorrect data passed? This means that if there was error (data was not inserted into DB, etc) the application should not crash and should not also send "success" response
- Are your services formed well (meaningful). For example: a search API should not be using search keywords in path parameters
- Code has to be readable
- Services absolutely must be written Java, other languages are allowed in conjunction with Java
- If not Java, then F on the course
- Front-end framework can be written in any language
- (15%) Must have front-end interface consuming the REST services
- any programming language, ex. Java, JavaScript, iOS, Python
- (10%) Must be hosted on Heroku (other Iaas/PaaS allowed)
- (10%) Must be in git, with clear increments through the course
- If I do not see history that started more than a month ago, you will start losing points here
- (10%) You must present it and be able to answer questions about your code/choices
- Application code (git URL) has to be submitted 2 days before the presentation even if it's not complete. There will be enough code for me to ask questions.
- 2 questions will be asked (followup questions possible)
- For Data Storage, you can chose anything you are comfortable with or something you want to explore.
- (5%)You must use properties file
- (20%) Completeness of the project
- Is application complete? are all areas functional? For example, if it's a book library application, there should be a function to borrow a book, return a book, possibly delete a book and create a book, and all these areas should work
- Completeness of the submission - your application has to come with documentation of all API's and sample data for them listed (you can make this a separate HTML file within your application and upload to heroku along with your application)
- If the project is very simple, I will be looking for additional research made independently (integrated in the project)
- 3rd party API's (Weather, Currency exchange, etc)
- java packages not covered in the class, used meaningfully
- additional tools - Solr, NoSQL (any other than Mongo), front-end frameworks, etc
References:
http://it-ebooks.info/book/2979/
https://jersey.java.net/documentation/latest/index.html
https://devcenter.heroku.com/articles/create-a-java-web-application-using-embedded-tomcat
https://devcenter.heroku.com/articles/getting-started-with-java#introduction
http://spring.io/guides/gs/rest-service/
http://www.msit2005.mut.ac.th/msit_media/1_2557/NETE4640/Materials/20130713172714AN.pdf