Hide menu

TDDE25 Project: Starting

  1. General project information, before you start (this document)

  2. How to complete a project

  3. Final demo, presentation, hand-in

Why a project? Why now?

This programming project is important for several reasons.

  • It gives you direct hands-on experience in using programming to solve interesting problems at an early stage in your university education.

  • It is sufficiently large to let you produce a very interesting final "product", in contrast to ordinary short lab exercises.

  • It lets you use your own creativity in extending the initial, mandatory part of the project.

  • It allows you to practice working without constant guidance and to take personal responsibility for what you do, how you do it, and how much you learn.

Though this course is comparatively early in your studies, the project part does not start until the second period, when your first programming course has been completed. We therefore expect you to be able to enthusiastically dive head first into the world of software development, to work hard and spend a great deal of time on the project, to write a lot of code, to try different approaches to solving problems, to make mistakes, to learn and recover from those mistakes, and to show us what you have learned.

Groups and Project Types

There are five project types, each of which has a senior person with the ultimate responsibility for the project definition and an assistant taking care of questions, progress reports and other day-to-day contact with each group.

NameAssistantSenior
Capture the Flag 1Harald GrantCyrille Berger
Capture the Flag 2David HasselquistCyrille Berger
XPilot-AIDaniel de LengTommy Persson
Lego MindstormsNoah HellmanJonas Kvarnström
Map ApplicationsAlexander WilkensMikael Nilsson
Humanoid Robot Soccer Sofia Thunberg, Erik Örjehag, Fredrik Löfgren
Mattias Tiger

Groups and projects are assigned as follows:

  1. You read the project descriptions linked above and sign up for a first and second hand choice in WebReg by the deadline given at the project lecture.

  2. We randomly divide you into preliminary groups of 3. Project preferences will be taken into account, but we must also consider limitations in equipment, space and supervision.

  3. You meet your preliminary partners during the first period and ensure that everyone is actually going through with the project.

  4. We may have to change the project groups slightly in case someone has dropped out.

The random assignment has similarities to working at a software company, where you cannot expect to personally choose your coworkers. Getting used to this is important for your professionalism.

If someone drops out or "disappears" and cannot be contacted during the second period, inform your assistant immediately so we can try to minimize the impact. Don't wait a week.

Setting Up and Using Version Control

After the project groups have been finalized and before the project starts, we set up Git projects for all groups in GitLab. Using version control is mandatory – here, in most companies, and in most open source projects.

Starting in 2017, everyone should have used Git in earlier courses and no additional instructions should be necessary.

Please check in (and push) your code often, at least every day!

How to pass the course (important!)

The only grades given for the project are U (Fail) and G (Pass).

The requirements for passing this course include:

  • Participating in project discussions and development together with your group
  • Participating in weekly progress report sessions, as described in the general instructions
  • Finishing the mandatory part of the project according to the project-specific instructions linked above
  • Demonstrating your project to your assistant during the final progress report session
  • Presenting your project in Ada Lovelace (previously Visionen) during the last week
  • Handing in the final code together with any documentation that may be described in the project-specific instructions

If you reach the end of the course period without satisfying these requirements, or you miss the mandatory demo or presentation, your next opportunity to finish this course and receive course credits will be in the re-exam period in April. Contact your assistant well before this period!

Note that each project has a mandatory part that each group must finish. This part is defined based on the assumption that the group consists of beginners who have learned Python programming corresponding to finishing the Python course TDDE23, and who are continuing to learn more in TDDE24 in parallel with the perspectives course.

As in any course, those who have more experience will of course be able to finish the course more easily. This gives you an opportunity to surpass the minimum requirements and extend the projects in new and interesting ways!

How to work

  • When you are having problems: Saying "I didn't get anywhere this week" or "I didn't know how to continue so I haven't done anything" is obviously not sufficient, not here and not when you finish your education and get a job.

    Be active and proactive! Try to find more information about the problem, from different sources. Try again. Think, abstractly, but also write code and experiment with programming.

    Ask the assistant – and ask in a way that provides the necessary information so the assistant can understand what the problem is, when it arises, and what you have already tried.

  • If you are inexperienced, you must still try, and you must make sure you get your share of coding time. Be active, and be proud of what you learn!

  • If you are experienced, you must also work hard. If the basic project isn't challenging, then challenge yourself by spending time elaborating it, designing new functionality, and exploring new aspects of programming. No project is so simple it cannot be expanded into something that you can learn from.

    But don't take over the project. Leave a third of the basic functionality to each participant – however inexperienced they may be, they are not helped by having someone else do their job. The product we aim to produce consists of knowledge and skills, not the project code.


Page responsible: Jonas Kvarnström
Last updated: 2017-10-27