Resources for Orbital CP2106 Independent Software Development Project
· 7 min read
Orbital (a.k.a., CP2106: Independent Software Development Project) is the School of Computing’s 1st year summer self-directed, independent work course. This programme gives students the opportunity to pick up software development skills on their own, using sources on the web. All while receiving course credit in the form of 4 modular credits of Unrestricted Electives (UE). SoC provides the Orbital framework for helping students stay motivated and driven to complete a project of their own design, by structuring peer evaluation, critique and presentation milestones over the summer period.
Summary of the Level of Achievements
Vostok
Features
- Basic features
- Use of database (workload must be justified otherwise if there is no database)
Planning / Version Control (via Git + GitHub)
- GitHub repo + Basic version control (e.g., add / commit / push / pull)
Design
- Use cases and features
- Flow and architecture
Implementation
- Organization of files into folders
- Code level comments
Testing
- System testing by the developers
Documentation
- Proper description of the system in project README, project poster and project video
Quality of peer evaluation given
- Average feedback rating >= 2
Gemini
Features
- Basic / Intermediate features
- Use of database (workload must be justified otherwise there is no database)
Planning / Version Control (via Git + GitHub)
- GitHub repo + Basic version control (e.g., add / commit / push / pull)
Design
- Use cases and features
- Flow and architecture
Implementation
- Organization of files into folders
- Code level comments
Testing
- System testing by the developers
Documentation
- Proper description of the system in project README, project poster and project video
Quality of peer evaluation given
- Average feedback rating >= 3
Apollo 11
Features
- Basic / Intermediate / advanced features with complexity
- Use of database (workload must be justified otherwise there is no database)
Planning / Version Control (via Git + GitHub)
- GitHub repo + Basic version control (e.g., add / commit / push / pull)
- GitHub issues with (monthly) milestones / labels / tags / assignee + Intermediate version control (branching, pull request)
Design
- Use cases and features
- Flow and architecture
- Design diagrams (drawn with tools): Sequence diagram, activity diagram, class diagram, ER diagram, etc.
- Design principles + pattern
- Design decisions (alternatives, criteria, comparison and justification)
Implementation
- Organization of files into folders
- Code level comments
- Coding Standard
Testing
- System testing by the developers
- Multi-level (unit / integration / system) testing with automation + User testing
- Proper test strategy (planning / test case design)
Documentation
- Proper description of the system in project README, project poster and project video
- SE evidence in every stage of the development process in project README, project poster and project video
Quality of peer evaluation given
- Average feedback rating >= 4
Artemis
Features
- Basic / Intermediate / advanced features with complexity
- Use of database (workload must be justified otherwise there is no database)
Planning / Version Control (via Git + GitHub)
- GitHub repo + Basic version control (e.g., add / commit / push / pull)
- Github issues with (monthly) milestones / labels / tags / assignee + Intermediate version control (branching, pull request)
- 2-week sprint with objectives / allocation / tracking.
- Github Projects + Code Review + CI/CD
Design
- Use cases and features
- Flow and architecture
- Design diagrams (drawn with tools): Sequence diagram, activity diagram, class diagram, ER diagram, etc.
- Design principles + pattern
- Design decisions (alternatives, criteria, comparison and justification)
Implementation
- Organization of files into folders
- Code level comments
- Code Review
Testing
- System testing by the developers
- Multi-level (unit / integration / system) testing with automation + User testing
- Proper test strategy (planning / test case design)
Documentation
- Proper description of the system in project README, project poster and project video
- SE evidence in every stage of the development process in project README, project poster and project video
Quality of peer evaluation given
- Average feedback rating >= 4
General suggestions for the last phase of Orbital
- Design
- I know that design by itself is a skill and a broad area to master, however, I think it is an important aspect because whatever you have built, it has an interface for users to interact with. The interface should be user-friendly and easily understandable. If you need inspirations, you may want to look out for designs on websites like https://dribbble.com/ ... I don't mean to say that your design should be fancy, but they should follow some of the basic design principles and be comfortable for anyone to use. You may want to explore things like https://coolors.co/ which gives you a good combination to start with. For mobile design, you can look at existing applications on https://mobbin.com/browse/ios/apps
- Testing
- It's an area that's lacking in most groups
- User testing: things like usability testing https://www.nngroup.com/articles/usability-testing-101/ and your typical surveys, interviews etc
- Software testing: this can be specific to your tech stack, but in general it is of the form of unit, integration and end-to-end testing
- It's an area that's lacking in most groups
- Deployment
- It is important for your project to be "available" and "usable" for anyone to use and test. Please do not just leave everything deployment related at the end, thinking that you should only deploy when the entire software is built. This can be dangerous because the deployment process may require you to change the code somehow, or even making you realize later that some stuff doesn't work on certain platforms. So PLEASE start early if you have not done so, try it out, ensure that you are able to deploy way before the deadline.
Resources
-
Git and GitHub
- CS2103T Software Engineering textbook
- Feel free to explore other software engineering topics in related pages as those are actually quite important if you have not been doing SE projects before
- An Intro to Git and GitHub for Beginners (Tutorial)
- Git and GitHub for Beginners - Crash Course
- CS2103T Software Engineering textbook
-
Frontend
- Quick overview
- Besides searching tutorials on Youtube (especially those from the channel freeCodeCamp and Web-Dev-Simplified), you can make use of the free udemy account provided by national library board that gives you access to high quality tutorials. See the link here: Udemy Business
-
User testing and design for usability
- A short write-up on how you don't need many test users to get effective feedback https://www.nngroup.com/articles/why-you-only-need-to-test-with-5-users/
- A case study that includes very relevant points that are often included in the user study and prototyping phase, can consider using some of the techniques mentioned and add some of these in your own README https://uxdesign.cc/meetup-a-usability-case-study-e909c33f1e3e
- some heuristics to think about when you are designing your interface https://www.nngroup.com/articles/ten-usability-heuristics/
-
Software testing