1

COMSM1401...Group Project Overview

Ian Holyer What industry wants 2 There are three levels for you to work through: Coder Programmer Developer The type of companies you are likely to be interested in want developers, which mostly means ability to work in a team Communication skills are critical How this unit works 3 Web site: csijh.gitlab.io/COMSM1401/ You will be in teams of about 6 Each team will implement a graphical game or application using agile development tools and techniques At the end, each team will submit their project and a report, and give a presentation and demo Presentation/demo day involves a small panel of markers How to form a team 4 The questions you should be asking each other are: who would you prefer to work with? what language/library would you prefer? is there a strong programmer? is there a strong leader/organiser? are there artistic/creative skills? is there an English expert Teams can work well with or without a good mix of programming, organisational and creative skills It works better if you form the teams First assignment 5 form a team give me a piece of paper with the usernames of the team get a team letter (A, B, C, ...) invent a team name tell me the team name Team names this year should be based on a team or family from TV or films, e.g. "The Simpsons", "The Pokemons", "The Thundercats", "The Turtles" Aims 6 The aims of the unit are for you to: develop an understanding of software development gain experience with teamwork, techniques, tools become better prepared for development in industry And, of course, to come up with a good team name which starts with your allocated letter Development Objectives 7 The sort of things you should understand are: advanced programming issues object oriented design software lifecycles agile development Teamwork Objectives 8 The sort of things you should gain experience with are: project management pair programming unit testing version control continuous integration Industry Objectives 9 These are woollier: check how what you've learned works in industry reflect on your experiences think about your CV investigate career paths There may be one or two visits by local industrialists Project topic 10 It helps to have an area that we are all working in The aim is to produce a game or application which is attractive to youngsters, but also has an educational element, exploring some aspect of computer science "how can computing concepts be demystified to a young audience?" Project reports from previous years are available Initial concepts 11 When you have formed a team, you will come up with two initial concepts decide on your target audience (young/old, technical/artistic) decide on attractive and educational aspects present the ideas to the rest of us we will have a non-binding vote to advise you The process is not competitive, so it pays for teams to support and encourage each other Amount of work 12 The unit is only 20 credits, so there is only room for about 240 hours of development A team could take on something simple and polish it But more likely, you will produce a prototype Typically, it should work when you demonstrate it, but not necessarily when you let other people loose on it Assessment 13 Although the product is important, we understand that it is not likely to be highly polished But we are just as much interested in the quality of the teamwork, and the experience gained with agile tools and techniques We want the experience to be reasonably relaxed, cooperative, and fun, and the final panel will aim to give credit for whatever aspects you excel in, rather than looking for 'mistakes' For a distinction mark, though, you need good aspects all round Groups and individuals 14 We will award a group mark Each group will provide a table of percentage contributions (average 100%) We will use an individual's percentage to form an individual mark gm + (ip - 100)/2, e.g. 90% = subtract 5%, 110% = add 5% The best groups try for equal contributions, and tackle problems early, head on, supportively, without blame Contributions can be programming, ideas, organisation, writing, presenting, morale, ... Platforms 15 Platforms you might use are: in the lab Linux on your own desktop/laptop Mac OS X Windows You might use all of them in your group! Other possibilities 16 Android or iOS are not recommended because you have to develop on Linux/Mac/Windows anyway, and then use an emulator or upload each version onto a mobile device, and that is slow (you can do an Android project in COMSM0103) Special hardware is not recommended because it tends to take over the project, swamping the software development aspects, and it has greater risks (but see Richard/Beth if you want) The safest option is to stick to a stand-alone application Platforms 17 How do you make Linux/Mac/Windows compatible and standards conforming? The answer is to use a , and keep your installation clean If you install packages randomly, a new installation can break things that were already installed You particularly need to pay attention to standards if you want to use multiple platforms within the same team Linux 18 Ubuntu is recommended for individuals (CentOS works better in the lab) Use the package manager, or It can be difficult to keep your configuration clean One way is to re-install Linux from scratch and be careful Another is to use the nix package manager Mac OS X 19 Since OS X, Macs have become very Linux-compatible The homebrew package manager is recommended To keep your installation clean, type brew doctor now and then, and act on every warning it gives until there aren't any Windows for C, C++ 20 Direct native development (Visual Studio) is not recommended because the compiler & library doesn't even meet C90, let alone C99/C11/Posix (though C++ support is better, and Visual Studio can be adapted to clang) The system provides a standard and Linux/Mac- compatible environment, but graphics support is poor - the setup program is also your package manager MSYS2 allows native development with gcc and good graphics, but there are pitfalls you need to avoid - pacman is your package manager Editors, IDEs 21 There are two schools of thought: use an IDE because of the productivity features use a plain (programmer's) editor because typing is much faster than mousing, you have more control, you can mix it with command line tools If you use an IDE (e.g. free version of IntelliJ) make sure you can customize it properly, and extract your program for delivery Languages and libraries 22 Some possible choices for the project are: C and SDL (simple, low level, no widgets) C or C++ and GTK+ (high level, complex, widgets) C++ and OpenGL (low level, no devices) C++ and FLTK (medium level, efficient) Java and JavaFX/Swing (OO, high level, complex) C# and Unity (high level, complex, 3D, physics) JavaScript and canvas (avoid, see COMSM0104) Pros and Cons 23 Which language should you choose?

Language Pro Con total control low level C or C++ help from Ian DIY OO Design Java complex platforms not very OO C# good for CV not git-friendly