About CS3283/4 Media Technology Projects (MTP)

The Official Blurb

According to the official NUS bulletin, CS3283 and CS3284 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.”

What CS3283/4 Really Is

This is a module 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 Thursday 4-6pm, in COM1 Level 2, Video Conferencing Room. Ooi Wei Tsang is the instructor for the module.

Teaching and Learning

CS3283 and CS3284 provide 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. Each student is expected to spend an average of 10 hours a week each semester on the project. Accordingly, at the end of the academic 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).

Students taking MTP are expected to plan their timetable properly to allow sufficient time to contribute to the project.

Class Activities

Each team will meet for 5 hours (consecutively) a week, for intense work sessions (think hackathon-type of intensity). Instructors will join every work session, at least at the end. Instructors will 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 (or bi-weekly) release cycle and test-driven development where test cases will be developed (and tested) during development.

There will be a stand up meeting at the beginning and the end of every work session. A Kanban board (or similar techniques) will be used to keep track of tasks and progresses. We will use github extensively (if the existing project does not already have a repository).

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

Assessments

There are two components to the final grade assigned: 70% individual grade, and 30% team grade. As you can see, unlike other project modules, the evaluation will based heavily on individual contributions.

The evaluation will also be done continuously instead of at the end of the semester. A letter grade will be assigned to the performance of each student every four weeks. The final individual grade will be the cumulative grade over the semester.

The final team grade will be assessed through the final report, demonstration, and presentation, to be held during the reading week.