CS3283/4 Media Technology Projects (MTP)

2016/17 Semester 2


What is CS3283/4?

CS3283 and CS3284 Media Technology Project I and II (MTP) are two modules “on the development of media technology systems such as interactive systems, games, retrieval systems, multimedia computing applications, etc. Students will form project teams to work on media technology projects. This first part focuses on the analysis of the user’s needs, formulation of the computing requirements of the desired solution that meets the user’s needs, design of the systems according to the requirements, implementation of first-cut prototype for evaluation purpose, and evaluation of the design.” The second part “focuses on the development of algorithms required for the systems, implementation and testing of the algorithms and the systems, and evaluation of the systems according to the users? requirements.”

Basically, MTP is where teams of students get together, hone their software engineering skills, put the computing knowledge learned in the classroom into practice, and build something cool.

When, Where, and Who?

The class is scheduled for lecture on Friday 4-6pm, in COM1 Level 2, Video Conferencing Room. Ooi Wei Tsang is the instructor for the module.

Teaching and Learning

MTP provides opportunities for students to experience and put into practice, the following software engineering methodologies and practices.

  • eliciting software requirements
  • writing software requirements documentation
  • designing the architecture of a software system
  • designing the user interaction and user experience
  • evaluation of different design choices and algorithms
  • writing of software design documentation
  • developing software based on the given requirements and design
  • practicing clean coding
  • reviewing code from peers
  • developing test cases
  • using tools for static code analysis
  • using tools for automated functionality and UI testing
  • testing and evaluation of the developed software
  • planning and scheduling of project tasks
  • using revision control system and issue trackers
  • managing the a team-based software development projects

At the end of the project, students should be able to:

  • apply rigorous and principled software development methodologies and techniques to develop user-friendly, robust, secure, and efficient software systems
  • apply appropriate mathematics and computer science principles in one or more specialization to analyze and formulate an application problem, and to design, implement, and evaluate the solution of the problems.
  • demonstrate strong communication and teamwork skills, and
  • contribute to a software team.

Prerequisites

The official prerequisites for MTP are CS2103 and one of the 3000-level media modules (the later requirement can be waived for non-CM students).

Having relevant experience of the following modules, however, are extremely useful. Each team should have one or more students who have relevant experience related to these modules. Almost all software systems require an understanding of all of these fundamentals.

  • CS2102 Database Systems
  • CS2105 Introduction to Computer Networking
  • CS2106 Introduction to Operating systems
  • CS2107 Introduction to Information Security
  • CS3240 Interaction Design
  • CS3230 Design and Analysis of Algorithms

Additional knowledge (such as AI) may be needed, depending on the nature and domain of the project.

Workload

Each of CS3283 and CS3284 is worth 4 MCs. Thus, each student is expected to spend an average of 20 hours a week in the semester on the project. Accordingly, at the end of the semester year, a team with k-member is expected to produce deliverables worthy of 260k person-hour of work. To put that into perspective, a 4-member team should produce a work that is equivalent to about 6.5 person-month (8 hours/day, 20 days/month).

MTP is twice as heavy as your normal 4 MC module. Students taking MTP are expected to plan their timetable properly to allow sufficient time to contribute to the project.

Class Activities

Each team is expected to meet for 10 hours a week (split into 5-5), for intense work sessions (think hackathon-type of intensity). Instructors will join at some of the sessions to review and evaluate the work progress of the team (and individual students) at the work session, including conducting random code review with individual students.

We will adopt a somewhat agile methods where there is a weekly release cycle and test-driven development where test cases will be developed (and tested) during development. Continuous integration and continuous deployment will be adopted for all projects.

A Kanban board (or similar techniques) will be used to keep track of tasks and progresses. We will use GitHub extensively.

We will also have lectures in the early part of the semester for discussions and recap of various software engineering principles. See the class schedule for details.

Assessments

Your final grade will be calculated from two components: a team grade (40%) and an individual grade (60%).

Team Grade

I expected everyone in to contribute almost equally to the team. As such, the team grade will be the same for everyone. I, however, may increase or decrease the grade for individuals if there is a team member that contributes significantly more or less than others.

Individual Grade

The individual grade is given to an individual student, independent of how other students is doing in the team.

Continuous Assessments

The evaluation will also be done continuously instead of at the end of the semester. There will be three CAs at the following checkpoints:

  • CA1 @ Week 4 : CA1 (20%) is based on the software requirement analysis and design report produced at this time. The grade for CA1 is given as a team grade.

  • CA2 @ Week 9: CA2 (40%) is based on the implementation and testing done from Week 5 to Week 9. The grade for CA2 is given as individual grade.

  • CA3 @ Week 13: CA3 (40%) is based on the work done in the final phase of the project: including evaluation and further testing of your project, bug fixing, etc, and your final deliverables: presentation, demonstration, project video, project poster, and final report. Half of CA3 grade is given as team grade, the other half as individual grade.

Individual Work Log, Github Commits, Peer Reviews

As you can see, individual work contributes significantly to your final MTP grade. The assessment of individual grade will be based on:

  • Individual Work Log: Students should maintain a work log which is to be submitted at the end of every week. Basically, students should detailed the work that they have done in that week. I will evaluate the quality and amount of work done based on what the student claims.

  • Github Commits: I read git commits and and the code to know exactly how much a student has contributed to the code base and the quality of the work done.

  • Peer Reviews: Comments from peers will serve as additional signals to whether a student is contributing his/her share to the team and what his/her major contributions are.

Tools

Lectures

  1. Requirements
    Slides | Notes
  2. Requirements + Design
    Slides | Notes
  3. Design + Planning
    Slides | Notes
  4. Implementation
    Slides | Notes
  5. Usability
    Slides | Notes
  6. Performance
    Slides | Notes
  7. Wrapping Up
    Slides | Notes