Welcome!
Welcome to the CSE 308 Web site. If you are enrolled in the course, be sure to periodically check the course schedule for all materials and changes as the semester moves along. Note that all grades will be posted to Blackboard.
The Project
This semester, all teams will work on the same Web Development project using Java Enterprise Edition (Java EE). Note that all students enrolled in this course should have U4 standing, and thus have experience in 300-level classwork. An understanding of Web Technologies and Databases helps, so having taken CSE 305 or CSE 336 may help, but it is not required. In your project you will build an interactive Web application. The Web app will work as described in lecture early in the semester. This project will be done using Java's Enterprise Edition. The Java EE 6 Tutorial is a good place to start for understanding the tools we'll use.
Roles
Project responsibilities will be carefully divided such that all students are making contributions and the project benefits as a whole. Students may be assigned the following roles:
- Lead Programmer - These students will both supervise and contribute to the implementation stages of the project. Each team will have one lead programmer. These students will have their hands full because in addition to their own coding responsibilities, they will need to have a general understanding of all the technologies being used and all the implementation work being done at any time. Note that it is not assumed that lead programmers come into the semester being fully schooled in Java EE or Database technolgies, but it is assumed that they can pickup an understanding of how these components will work and fit together. Note that the lead programmer will be responsible for directing group decision making regarding any technical aspects of the project, including which technologies to use, how to divide the system into modules, and how to assign project/module reponsibilities to team members.
- Software Engineer - All remaining members of the team will serve as Software Engineers (in fact the lead programmer is one as well). These team members will be given responsibilities for specific technologies and modules for which they will become experts. It is recommended that each package in the project's design be given an owner, who is responsible for its design, development, documentation, and testing. For example, it would wise for each team to select a single student to work on the database aspect of the project.
- Project Manager - Each team will select one of its Software Engineers to serve in part as project manager. Project Managers are still Software Engineers, and so will still make other development contributions, but will also have additional responsibilities. A project manager drives the project, which means working with the lead programmer to direct the meetings (i.e. make the meeting agenda, assign action items, follow up on action items, take meeting minutes), develop the Project Specifications, help divide project responsibilities, develop Gantt and Pert Charts for managing work measurement, forecasting, task breakdown, taks assignment, and task dependencies. This person will use project management software like Microsoft Project to organize the project. Note that teams may decide to make this a floating position, rotating responsibility from one member to another. At the end of the semester, full project management documentation must be provided specifying the full arc of the project.
Rules
Before starting the semester, there are a few rules of note that everyone must understand.
- Self-Learning is Key: This is not a web technologies course, yet the projects use Web technologies. So, while we'll touch upon some of the topics needed for building Web apps, much will be left for team members to discover on their own. Note that all teams are required to use the JavaEE libraries, and so will have a rich choice of libraries like Java Server Faces and Java Persistence API available. So, teams will be charged with the responsibility of learning lots of new technologies on their own, which of course is common in the real world. Some support will be given through tutorial sessions and lectures on specific technology topics, and early in the semester there will be homework assignments to help get you up to speed on how these things work, but teammates will also be teaching each other how to use new tools and libraries. Becoming skilled at self-learning is not easy, but is one of the best way to avoid career obsolecence.
- Mutiny Clause: Should a project manager or lead programmer be unable to perform in their assigned role, the team may make a change via a majority vote. Note that any team member may bring this decision to a vote during a team meeting. Reasons for making a change must be professional and legitimate and not personal in nature. Note that should a lead programmer be changed, that person may then take on the role of software engineer on the team.
- The Apprentice Clause: Should a team member consistently fail to make required contributions to the project, the team may decide to take a vote and then collectively say You're Fired!. Note that this is not something to be taken lightly. Teams must present a case to the instructor as to why a student is failing the team, and so deserves to be cut. Students who are cut from a team should drop the course, but if that is not an option, would be required to complete the assignment on their own, which is not a position any student should like to find themselves in.
- Software Engineer to be named later Clause: Should personal differences arise on a team and create problems for the project, teams may consult with other teams to try and work out a student-for-student trade. Note that only one-for-one trades will be allowed, and that in order for trades to go through, all parties must agree. This means a unanimous vote on both teams (including the students being traded). Note again, only single-student for single-student trades are allowed, so there will be no 2-for-1 deals or students being traded for cash or code or themselves. We don't want any Harry Chitis. Note that trades may only be made within the first four weeks of the semester. This means Friday, 9/21, is our official Trade Deadline.
- Well Defined Contributions: We wil be using project management software like Microsoft Project this semester for managing all aspects of the development process, and part of this will involve carefully defining each student's responsibilities and contributions. All students are expected to make significant contributions to the team and these contributions should be clearly defined and documented for review by the instructor. Students who fail to make expected contributions may receive a project grade lower than their teammates.
Team Programming
One of the principles that will be emphasized this semester is team programming, which involves multiple programmers working collaboratively on the same task. This is an efffective technique for preventing stalls in the development process. Students will be encouraged to do all programming using this technique and in addition, for all project responsibilities, teams will designate backup developers who will aid in the completion of a task when needed and will take over a task when a developer is overloaded.
Teams
Development teams, with roles, will be listed below as they are determined. Note that should any changes to a team occur, the instructor must immediately be informed, as this is the only official teams list. Note that each team should select a name for itself, but choose wisely, you may be stuck with it for the rest of your life.
| Adventure | |||
![]() Mark Birula (Lead Programmer) |
![]() Stephen Enders (Project Manager) |
![]() Danielle Sabol (Software Engineer) |
![]() Nick Tagliasacchi (Software Engineer) |
| Photo Hunt | |||
![]() Andrew Gratta (Lead Programmer) |
![]() Charles Huang (Project Manager) |
![]() Alex Ng (Software Engineer) |
![]() William Polenz (Software Engineer) |
| Quantum | |||
![]() Joseph Graham (Lead Programmer) |
![]() Firat Bakioglu (Project Manager) |
![]() Eric Kudler (Software Engineer) |
![]() Andrew Zheng (Software Engineer) |
| Trekker | |||
![]() James McNally (Lead Programmer) |
![]() Lisa Dang (Project Manager) |
![]() Nick Chu (Software Engineer) |
![]() Joseph Skufca (Software Engineer) |
| TriPlanner | |||
![]() Ankush Manaktala (Software Engineer) |
![]() Brook Zhou (Software Engineer) |
![]() Byung Park (Software Engineer) |
|
| Trip Junkie | |||
![]() Angad Sidhu (Lead Programmer) |
![]() Vincent Tsuei (Project Manager) |
![]() Austin Hudson (Software Engineer) |
![]() James Griffiths (Software Engineer) |
| Trip Ninja | |||
![]() Andrew Marrell (Lead Programmer) |
![]() Alexei Tikhonenko (Project Manager) |
![]() Michael Lishnevsky (Software Engineer) |
![]() Daniel Arnold (Software Engineer) |
| Tripster | |||
![]() Nicholas Branzburg (Lead Programmer) |
![]() Imran Brown (Project Manager) |
![]() Nahin Bari (Software Engineer) |
![]() Victor Okon (Software Engineer) |
| Venture | |||
![]() Charles Magyar (Lead Programmer) |
![]() Zeynep Doganata (Project Manager) |
![]() Michael Cannon (Software Engineer) |
![]() Akinola Orederu (Software Engineer) |
| Viatar | |||
![]() Jay Patel (Software Engineer) |
![]() Min Sung Jung (Software Engineer) |
![]() Vipin Khurana (Software Engineer) |
![]() Hiep Truong (Software Engineer) |
Web page created and maintained
by Richard McKenna







































