Welcome to CSE 308! 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. Also note that all students enrolled in this course should have U4 standing, and thus have experience in 300-level classwork, and so must be on track to graduate in either December, 2016 or May, 2017.
This semester, all teams will be developing a Web/Mobile App combo with a fully integrated back end that will be deployed for real at the end of the semester. The technology choices for teams this semester will be limited in comparison to semesters past. The hope is that it prevents teams from spinning their wheels while deciding which APIs to go with. Note that you will get to make some tech decisions (i.e. some APIs), but not regarding the basic platform, and so there may be things you won't like about the tech choices made, but you'll just have to work around those issues.
For the group project, students will be divided into teams of four. Project responsibilities will be carefully divided such that all students are making contributions and the project benefits as a whole. Each team will have four members that fit into one of the roles listed below. This is not to say that students in these roles are solely responsible for these domains, all team members should make contributions as needed to progress the project across all domains. But, the person in each role will be the primary decision maker for that doamin. Note that all students are considered Software Engineers, but additionally, students will be assigned the following roles:
- Lead Programmer - This student 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 Google Dev technologies, but it is assumed that they can quickly 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 design, implementation, and test decisions. While not required, it would be helpful if this person has taken the Internet Commerce Programming and/or Principles of Database Systems courses.
- Project Manager - 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, task assignment, and task dependencies. Think of the project manager as someone who makes sure the project is progressing at the proper rate while using available resources (i.e. team members) efficiently. It is important that the Project Manager work closely with the Lead Programmer to ensure that no team members are stuck on technological dead ends. We want all team members to be productive throughout. This person will use project management software 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.
- Lead Designer - This student is responsible for the look and feel, including interactivity, of the Web app. This person should have good taste, not bad taste. Hopefully this person has some training in Web design or some knowledge of GUI Design Principles. While not required, it would be helpful if this person has taken the Introduction to Web Design & Programming and/or User Interface Development courses.
- Data Designer - This student is responsible for the data persisted to your site's Datastore. This means deciding what needs to be stored there and in what format to put it, and then working to populate the datastore with whatever sample data is needed to get the site up and running. While not required, it would be helpful if this person has taken the Principles of Database Systems course.
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 prescribed Google technologies. Early in the semester there will be individual programming assignments that will introduce students to these technologies. But, teams will be charged with the responsibility of learning some new technologies on their own, which of course is common in the real world. Becoming skilled at self-learning is not easy, but is one of the best way to avoid career obsolescence.
- Mutiny Clause: Teams are not dictatorships, think of Lead Programmers as Prime Ministers. Prime Ministers represent an elected body and can be replaced through a No Confidence Vote. Prime Ministers, however, can drive the agenda, and while maintaining the support of Parliament, can wield significant power via decision making. The idea for our project is that our lead programmers don't lord over the other teammates, but rather, ensure the team makes informed decisions and help teammates in their development (i.e. don't let them get stuck on technological dead ends). Should a 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 another role on the team. Of course these rules apply for the other roles as well and the instructor must be informed of any such role changes.
- 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. The primary reason for this is that the team will be held to account for the performance of all members, and team members should not be taking on multiple roles to cover for individual deficiencies. Lack of participation is key here. If a student is not attending lecture or project meetings, is not completing work, and is not answering emails, the whole team's grade may suffer, so team leaders must try to keep all members on track.
- 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 three weeks of the semester. This means Friday, 9/16, is our official Trade Deadline.
- Well Defined Contributions: We wil be using project management software 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.
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. While working on the team project, 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. Note that students are to work independently on the individual programming assignments as the start of the semester and that this requirement will be strictly enforced.
Development teams, with roles, will be listed below as they are determined. Students may form their own teams if they wish. To do so, first choose an aptly named color that suits your team. Choose one that is not copyrighted (not owned by crayon or paint companies, for example). Your team name will then be your color name plus "Life". So, if your pick the color Nyzema, your team name would be Nyzema Life. Once your color (and thus team name) is selected, specify your team name and members, with roles, in the shared CSE 308 Team Google Sheet. Note that you should set the fill color for your cells to your team color, and make sure the text color is a color with enough contrast such that it is neat and legible. Should your team be missing a member or two, just place a '?' in the cell representing the position you're looking to fill.
Students not assigned to a team by the second lecture will be placed by the instructor. If you are to form your own team, I strongly advise forming teams around similar schedules. For example, past experience has shown that commuting students work well together because they may choose to meet and work off-campus rather than on. Note that should any changes to a team occur, the instructor must immediately be informed, as this is the only official teams list. As teams are formed they will be listed below, which also contains the current pool of students without a team. Finally, note again that students who are not on track to graduate either this semester or next will be dropped from the course, which may include some students listed below, so please check with your teammates before adding them else you may very well lose them and require a last minute substitute.
Web page created and maintained
by Richard McKenna