The Official Blurb
The Thematic Systems Project consists of two modules on the development of large-scaled computer systems to solve real-world problems under specific themes such as healthcare, security and surveillance, tourism, etc. Students with complementary technical expertise will form project teams to work on real-world projects under the supervision of CS professors and industrial partners. This first part focuses on the analysis of the real-world problems, formulation of the computing requirements of the desired solution that meets the user’s needs, design of the computer systems according to the requirements, 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.
CS3281 and CS3282 (TSP) provide opportunities for students to experience and put into practice, the following software engineering methodologies and practices, in the context of a complex, large-scale, software system.
- gathering of software requirements
- writing of 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 to work with and contribute to a software team.
The official prerequisites for TSP are CS2103 and one primary module in a CS focus area.
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 large scale systems require an understanding of all of these fundamentals.
- CS3213 Software Systems Design
- CS2102 Database Systems
- CS2105 Introduction to Computer Networking
- CS2106 Introduction to Operating systems
- CS2107 Introduction to Information and System Security
- CS3240 Interaction Design
- CS3230 Design and Analysis of Algorithms
Additional knowledge (such as AI, graphics, multimedia) may be needed, depending on the nature and domain of the project.
TSP is an 8MC module (ok, technically, it’s two 4MC modules taken in the same semester). Each student is expected to spend an average of 20 hours a week, over the semester on the project. Accordingly, a team with k-member is expected to produce deliverables worthy of 260k person-hour of work.
Students taking TSP are expected to plan their timetable properly to allow sufficient time to contribute to the project.
Each team should consists of 3-5 students. At least half of the team must be students in the von Neumann Program or Turing Program.
- Each team will meet two days a week, at least 6 hours a day, for intense work sessions. Up to 8 hours of work (weekly) may be done individually.
- Instructors will join every work session, at least at the beginning
and at the end. Instructor will review and evaluate the work progress of the team (and individual students) at the work session, including conducting code review with individual students.
- Guest “lecturers” may be invited to join the work session to discuss and provide feedback on different aspects of the project.
- A student may need to “learn on the spot” if the project requires a practice or knowledge that the student has no experience in. In this case, the instructors or guest lecturers may assign readings to the student. Such individual learning counts towards to 8-hour individual workload weekly.
- 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 endof every work session.
- A Kanban board (or similar techniques) will be used to keep track of tasks and progresses.
- A room and workspace will be assigned to each TSP team.
- We will use github extensively (if the existing project does not already have a repository)
- Each student will have an opportunity to manage the project, either through rotation or co-managing.
- Week 1-2 (Aug 11 – Aug 22): Requirement analysis and documentation.
- Week 3-4 (Aug 25 – Sep 5): Architecture design, walkthrough, and evaluation of design, and documentation.
- Week 5-11 (Sep 8 – Oct 31): Coding and testing, with possible review of requirements and design. One “releasable” prototype every week. (Recess Week Break: Sep 20 – Sep 28)
- Week 12-13 (Nov 3 – Nov 14): Testing and evaluation of the software system. Final project report.
- Week 14 (Nov 19 – Nov 21): Presentation and evaluation.
Note: for cases where the thematic project is part of an existing project, the first four weeks will be used to review existing codebase and understand the existing systems.
- Grading will be based on 30% team work, 70% individual achievement.
- The individual achievement will be tracked weekly.
- Midterm feedback will be given by instructor to individual students.
- Midterm peer review will be conducted.