SENG 5199-2: Web Application Development

Spring 2017, 3 credits

Instructors
  • Mike Calvo (mjcalvo@gmail.com)
  • Adam Keyser (adam.keyser@gmail.com)
  • Marc Kapke (kapkema@gmail.com)
Class Meetings
  • EE/CSci 2-260
  • Alternating Fridays and Saturdays from 1/21/2017 to 5/6/2017 from 10:00AM to 12:45PM
  • There will be no class on Saturday, 3/18/2017
Teaching Assistant
TBD
Office Hours
After class or by appointment. Seek help from instructors via Slack. Instructions on how to sign up will be explained in class.
Course Objectives
This course is an in-depth discussion of the challenges and complexities involved in designing and implementing modern web applications. Students will gain experience designing and implementing a project during in the course of the semester. This process will give students experience with the following concepts:
  • Domain-driven design, persistence techniques and transactions
  • Web services using REST patterns
  • Model-View-Controller design patterns
  • Single page web applications
  • Responsive web design
  • Agile development frameworks
  • Unit testing
  • Dynamic programming languages
Equal time will be spent on server and client side issues. We will discuss these topics both from theoretical and practical perspectives. Throughout the course we will also discuss agile development best practices and have an opportunity to implement many as we complete projects. Discussions will focus on best practices highlighted with relevant, industry accepted approaches. The vast majority of frameworks and tools featured will come from best-of-breed open source projects. We will look at these projects not only to understand how they can be successfully used, but also critically on how they fail to address the core challenges of modern web application development.
Prerequisites

This course assumes existing knowledge of and experience with modern development practices such as integrated development environments (IDEs), debugging, source code compilation, and build tools. The course will be tought using the following technologies and libraries:

  • Spring Boot
  • Javascript, Node and ReactJS
  • HTML, CSS, Twitter Bootstrap

No previous experience with these technologies is required. However, students who are not familiar with basic web development concepts or object-oriented languages will may need to spend extra time coming up to speed or working through issues.

We will discuss other technologies and compare them to the ones that are being covered. Students are encouraged to explore other technologies and optionally use them to build their application if desired.

Textbook
Spring Boot in Action by Craig Walls
Course Website
http://mikecalvo.github.io/msse/
Assignments

The course is designed around 3 programming assignments which are to be completed throughout the semester. Topics will be covered in a sequence which aligns with the due dates of the programming assignments.

The programming assignments will be completed in two person teams. Each assignment will be focused on a core set of application development concepts (such as data, UI, integration, etc). Each assignment will require successful implementation of core requirements with functioning code and in some cases usable application. Requirements must be confirmed via unit tests to receive full credit.

Programming assignments will be due and must be submitted via email to Instructor before midnight on the due date. Programming assignments must be submitted as a link to a source code repository (with optional tag or branch). The assignemnts must build and run without any special help outside of normal Gradle build, test and run commands. If your project requires anything special (this is strongly discouraged), you must provide these instructions or your assignment will be deemed late until the point you provide the correct instructions or fix the error.

Class Format
The class will be conducted in a lecture - discussion format. Lectures will serve to introduce, clarify, and extend the reading materials, but will not necessarily cover all the material in the assigned reading. Much of the in-class lecture time will be spent reviewing code examples and writing code related to the discussed topic. Students with access to a laptop computer will find it useful to bring their laptop to class and attempt reviewed techniques for themselves in class.
Grading

The final grade will be determined based entirely on the programmng assignments. Each assignment will carry equal weight (33%).

Students are required to submit all three assignments to pass the course.

Assignments can be turned in late. For each week that an assignment is late, the total possible grade will be lowered by a full letter (for example an assignment turned in 1 week late can receive a maximum score of a "B"). Lateness is based on a full week basis. For example, any assignment turned in after the due date/time but before 7 days after the due date and time will be considered 1 week late.

Programming assignments will be graded on their successful implementation of assignment requirements. A grade of "A" will be earned only if all requirements are implemented and verified (by unit tests for non UI) requirements. Simply having compiling code or working code will not suffice for full credit.

The class is not graded on a curve.

Collaboration and Cheating

All assignments will be group assignments, with individual peer assessments. You may discuss the assignments in general terms among yourselves or on the class forum, but you must not share specific assignment deliverables outside the group that is to be credited with the work.

Programming assignments require involvement and effort by both team members. Ideally, work will be divided as equally as possible.

Incompletes
Incompletes will only be given on request, and then only if you have substantially completed the class. For example, if you were seriously ill during the final exam period, you could request an incomplete. Incompletes must be made up before the middle of the following semester, and as a practical matter, the longer you wait to clear an incomplete, the less likely it is that you would succeed.
Expected Workload

You can expect to spend on average 4-6 hours/week outside of class on reading and assignments.

You may find that weeks when projects are due may require spikes of increased time and effort.