TDA367 / DIT213 Objektorienterat programmeringsprojekt
Home | Sessions | Process | Product | Presentations | Assessment | AI
Welcome!
[Instructions in Swedish below]
Welcome to the course webpage for DIT213/TDA367 Object-oriented programming project. This course is delivered by the Department of Computer Science and Engineering at Campus Johanneberg during study period 2, 2025.
Software development requires a lot more than just a technical understanding of programming. In previous courses you have learnt various aspects of software development as a craft: design, implementation, user interfaces, etc. This course continues to build on this by:
- giving you the opportunity to deploy and practice these software craftsmanship skills in a larger practical project.
- introducing the step prior to design, through analysis and requirement specification, user stories, and domain models.
- introducing and strengthening competencies and processes around working in teams.
This course is also for many an appreciated and anticipated opportunity to be creative; to develop something entirely new and unique, within the framework of their education.
Links to official course plans:
Contact
Course responsible and examiner: Niklas Broberg, niklas.broberg@chalmers.se, tel. 031 772 1058. Office in EDIT 6446. Preferred mode of contact is through Slack.
Teaching team:
- Adina Anisculaesei
- Casper Hansen
- George Granberry
- Mustafa Hassan
- Piero Romare
- Samuel Kajava
- Valter Schütz
- Wincent Stålbert Holm
You'll find a Slack workspace for the course here:
https://join.slack.com/t/ooprogramming-8bt9446/shared_invite/zt-3g3ewgfl2-ZyLCuEam6b2jZIU36dIKWg
Slack is the best and fastest way to get answers to questions (DMs are fine), but emails will of course also be answered, in due time.
Each group will have a separate channel in the Slack workspace. After having been assigned to a project group here in Canvas, you will find your Slack channel (#teamXYchannel) under "All channels" in the left-hand menu in Slack.
Student course representatives
These awesome people are your spokespeople and direct line to me and the teaching team. If you have any concerns that you do not feel comfortable approaching one of us directly with, talk to your local representative and have them bring the issues to me.
Course purpose
This course is intended to provide knowledge about, and practice in, professional software development through a practical team project. The course presents a simple, test-driven, object-oriented process. Terms like iterative development, object-oriented analysis and design, domain and design models, are introduced. Different aspects of analysis and design are covered: testability, dependencies, requirements and user stories, etc. Based on these, the students, in groups of five, implement an independent project.
Much focus will also be given to working as part of a team. We will discuss, and put into concrete practice, concepts like psychological safety, inclusivity, diversity of thought, constructive conflict, equitable participation, self-reflection, feedback literacy, coaching, and many more.
Course structure and schedule
Will will have:
- a number of discussion seminars, where attendance and active participation are key
- an early presentation of project ideas
- a few technical workshops
- opportunities for pitch sessions and drop-in sessions with teaching staff
- a peer review of the design and code of others
- a final presentation
In parallel, the students conduct, in groups of five, a complete development project in the form of a smaller software system. Compulsory weekly supervision meetings are part of the project.
Note that the times allotted for supervision ("handledning") in the official TimeEdit schedule are simply recommendations for when the group should meet their supervisor once per week. In practice, you need to have a weekly 45-60 minute meeting, which is agreed upon with the group's assigned supervisor. This means you do not have to be available for all the times shown in the schedule.
Weekly plan
This is an (coarse, draft) overview of the course per week:
(Study week / Activities)
- Coalesce groups. Group contracts, decide on project, GUI sketches, user feedback, early user stories; workshop on Git
- Domain models; more GUI, more user feedback, more user stories; early prototyping; workshop on Maven
- Settle into iterative process: user feedback-user stories-domain model-design-implementation; design models, early executable; seminar presentations; workshop on Copilot
- More iterative development; more design models, MVC
- More iterative development; minimal viable product (MVP)
- More iterative development; refactoring, extending, improving; peer reviews
- More iterative development; integrate peer review feedback into system; final submission
- (Holiday break): Take a break. Seriously.
- (Post-holiday self-study/re-exam week): Prepare final presentation
- (Post-holiday exam week): Final presentations
Learning outcomes
After having completed the course, the student should have the following knowledge, skills and abilities:
Knowledge and understanding
- Explain development methods in technical projects, especially software projects.
- Describe the phases of a development project: problem identification, problem description, user analysis, specification, design, implementation, testing, evaluation, etc.
- Describe basic concepts in software development, e.g. requirements and development process.
- Describe key challenges in collaborative team work, and methods and strategies to address them.
Skills and abilities
- Run a small scale object-oriented software project in a group according to predefined development process and schedule.
- Write a report of the project, containing a basic specification of requirements and design.
- Apply skills from previous programming courses, such as design principles and patterns, in the design and development phase of the project.
- Use modern software development tools, such as testing frameworks, 'build automation', and version management.
- Plan and conduct an oral presentation with a professional and academic approach.
- Apply and describe skills, methods and strategies that support inclusive collaboration in teams.
Judgement and approach
- Reflect on good object-oriented design and implementation in the project.
- Reflect on communicative, relational and organisational strategies that support inclusive collaboration in teams.
Examination
Examination is done through individual assessment of participation in the team project work. The assessment is based on (not exclusively):
- Active participation in discussion seminars.
- Active participation in weekly supervision meetings.
- Self-assessment through weekly reports.
- Documented activity in the project.
- Documented inclusive collaboration in the team.
- Well conducted presentations.
A peer review system, through which students assess each other in the group, will be used for further data.
Late submission of the project or any compulsory assignments along the way can reflect negatively on the grade.
Policy for AI usage
Generative AI tools (e.g., ChatGPT, Copilot, Gemini) may be used in this course provided that their use supports your learning and understanding, and that all use is clearly acknowledged and responsibly managed. For guidelines on the proper and recommended use of AI tools, see the Guidelines for use of generative AI tools
Permitted use
You may use AI tools as aids for exploration, brainstorming, debugging, documentation drafting, language editing, or reflection — provided that the outcome remains your own and that you can explain and justify the work produced. AI should help you learn, not replace the skills you are expected to demonstrate.
Prohibited use
You may not present AI-generated code, text, or other material as your own work without critical review or revision. Submitting AI-generated output verbatim or without understanding constitutes academic misconduct, similar to using unacknowledged sources or copying from peers.
Transparency and reflection
Whenever AI tools significantly contribute to your work, make this explicit — for example, in weekly reflections, reports, or comments in your code. Briefly describe what tools were used, how they were used, and what decisions you made based on their output.
Assessment
Grading is based on your individual achievement of the learning outcomes. Any use of AI that prevents us from assessing your own understanding, reasoning, or contribution will negatively affect your grade, regardless of the quality of the output.
Välkommen!
Välkommen till kurshemsidan för DIT213/TDA367 Objektorienterat programmeringsprojekt. Kursen ges av Institutionen för Data- och informationsteknik på Campus Johanneberg under läsperiod 2, 2025.
Programvaruutveckling kräver mycket mer än bara teknisk förståelse för programmering. Ni har i tidigare kurser lärt er om olika aspekter av programvaruutveckling som hantverk: design, implementation, användargränssnitt, mm. Denna kurs bygger vidare på detta genom att
- ni får möjlighet att omsätta och öva dessa hantverkskunskaper i ett större praktiskt projekt
- introducera försteget till design, med analys och kravspecifikation, user stories och domänmodeller
- introducera och vidareutveckla kompetenser och processer kring arbete i team.
Denna kurs är också en för många uppskattad och efterlängtad möjlighet att få vara kreativ, att utveckla något helt eget och nytt, inom ramen för sin utbildning.
Officiella kursplanen hittar du här:
Kontaktuppgifter
Kursansvarig & examinator: Niklas Broberg, niklas.broberg@chalmers.se, tel. 031 772 1058. Kontor i EDIT 6446. Kontakta mig helst via Slack (se nedan).
Övriga handledare:
- Adina Anisculaesei
- Casper Hansen
- George Granberry
- Muhammad Mustafa Hassan
- Piero Romare
- Samuel Kajava
- Valter Schütz
- Wincent Stålbert Holm
Det finns ett slack-workspace för kursen här:
https://join.slack.com/t/ooprogramming-8bt9446/shared_invite/zt-3g3ewgfl2-ZyLCuEam6b2jZIU36dIKWg
Slack är bästa sättet att få svar på frågor (direktmeddelande går bra), men givetvis kommer mail också besvaras.
I Slack kommer finnas en kanal för varje grupp. Efter att ni tilldelats en projektgrupp här i Canvas hittar ni er kanal (#teamXYchannel) under "All channels" i vänstermenyn i Slack.
Kursens syfte
Kursen avser att ge kunskap om och övning i professionell utveckling av mjukvara genom praktiskt projektarbete. Kursen presenterar en enkel, testdriven, objektorienterad process. Begrepp som iterativ utveckling, objektorienterad analys och design, domän- och designmodell introduceras. Olika aspekter på analys och design gås igenom: testbarhet, beroenden, krav och user stories, m.fl. Utifrån detta implementerar studenter, i grupper om fem, ett självständigt projekt.
Mycket fokus kommer också att läggas på att arbeta som en del i ett team. Vi kommer att diskutera, och konkret öva på, koncept som psykologisk trygghet, inklusivitet, idémässig mångfald, konstruktiv konflikt, deltagande på lika villkor, självreflektion, återkopplingskompetens, coachande, och många fler.
Kursens upplägg och schema
Vi kommer att ha:
- ett antal diskussionsseminarier, där närvaro och aktivt deltagande är centrala
- ett tidig presentation av projektidéer
- några tekniska workshops
- möjlighet till pitch sessions och drop-in-pass med undervisare
- en kollegial granskning (peer review) av andras design och kod
- en slutpresentation
Parallellt med detta genomför studenterna, i grupper om fem, ett fullständig utvecklingprojekt i form av ett mindre mjukvaruprojekt. I projektet ingår obligatoriska veckovisa handledarmöten.
Notera att tiderna för handledning i schemat är en rekommendation om när gruppen ska möta sin handledare en gång per vecka. I praktiken handlar det om en tid på runt 45-60 minuter, som bestäms genom överenskommelse med gruppens handledare. Ni behöver alltså inte vara tillgängliga all den tid som visas i schemat.
Veckoplanering
Här är en (grov, förslag) översikt över kursen per vecka.
(Läsvecka / Att introducera, göra och diskutera på veckomöte)
- Formera grupper. Gruppkontrakt, bestäm projekt, preliminärt GUI, användarfeedback, initiala user stories; workshop om Git
- Domänmodell, mer GUI, mer användarfeedback, mer user stories, tidig prototypning; workshop om Maven
- Sätt den iterativa processen: användarfeedback-user stories-domänmodell-design-implementation; designmodeller, tidig körbar produkt; seminarie-presentationer; workshop om Copilot
- Mer iterativ utveckling; mer designmodeller, arkitektur och MVC
- Mer iterativ utveckling; Minimal fungerande produkt (MVP)
- Mer iterativ utveckling; refaktorisering, utökning, förbättring; kollegial granskning (peer reviews)
- Mer iterativ utveckling; integrera feedback från peer reviews i produkten; slutinlämning
- (Jullov): Take a break. Seriöst.
- (Post-helg självstudie- och omtentaveckor): Förbered slutpresentation
- (Post-helg tentaveckan): Slutpresentationer
Lärandemål
Efter fullgjord kurs skall studenten besitta följande kunskaper, färdigheter och förmågor:
Kunskap och förståelse
- Redogöra för arbetsmetodik i tekniska utvecklingsprojekt, speciellt mjukvaruprojekt.
- Beskriva alla faser i ett utvecklingsarbete: problemidentifiering, problemformulering, användaranalys, specifikation, design, implementation, testning, utvärdering, etc.
- Beskriva grundläggande koncept inom mjukvaruutveckling, t.ex. krav och utvecklingsprocess.
- Redogöra för centrala utmaningar i gruppsamarbete, samt metoder och strategier för att möta dessa.
Färdigheter och förmågor
- Genomföra ett mindre objektorienterat mjukvaruprojekt i grupp enligt fastställd utvecklingsprocess och tidsplan.
- Dokumentera projektarbetet i form av en grundläggande kravspecifikation och ett enklare designdokument.
- Tillämpa färdigheter från tidigare programmeringskurser, så som design-principer och -mönster, i en projektliknande miljö.
- Använda moderna hjälpmedel för programutveckling t.ex. testramverk, ‘build automation’, och versionshanteringssystem.
- Planera och genomföra en muntlig presentation med ett professionellt och akademiskt förhållningssätt
- Tillämpa och redogöra för kompetenser, metoder och verktyg som stödjer samarbete i grupp.
Värderingsförmåga och förhållningssätt
- Reflektera över god objektorienterad design och implementation i projektet.
- Reflektera över kommunikativa, relationella och organisatoriska strategier som stödjer samarbete i grupp.
Examination
Examination sker genom individuell bedömning av deltagande i grupparbete. Underlag för bedömningen är bland annat:
- Aktivt deltagande i diskussionsseminarier och team workshops
- Aktivt deltagande i veckomöten med handledare.
- Självrapportering genom veckorapporter.
- Dokumenterad aktivitet i projektet.
- Dokumenterat väl fungerande arbete i grupp.
- Väl genomförda presentationer.
Ett peer-review system där studenter "bedömer varandra" i gruppen kommer finnas, för mer precis data.
Sen inlämning av projekt eller dokument kan påverka betyget negativt.
Policy för användning av AI
Generativa AI-verktyg (e.g., ChatGPT, Copilot, Gemini) får användas i kursen under förutsättning att deras användande stödjer ditt lärande och din förståelse, och att all användning tydligt redovisas och hanteras ansvarsfullt. För riktlinjer kring vettig och rekommenderad användning av AI-verktyg, se Riktlinjer för användning av generativa AI-verktyg.
Tillåten användning
Du får använda AI-verktyg som hjälpmedel för att utforska, spåna idéer, debugga, skapa utkast på dokument, förbättra språk i texter, och att reflektera — under förutsättning att resultatet är ditt eget och att du kan förklara och stå bakom det som producerats. AI bör hjälpa dig att lära, inte ersätta de färdigheter du förväntas demonstrera.
Otillåten användning
Du får inte framställa AI-genererad kod, text, eller annat material som ditt eget arbete utan kritisk granskning eller revision. Att lämna in AI-genererat material ordagrant eller utan förståelse utgör akademisk oredlighet, jämförbart med att använda oredovisade källor eller att kopiera från andra.
Transparens och reflektion
När AI-verktyg har bidragit väsentligt till ditt arbete ska detta framgå tydligt — till exempel i veckoreflektioner, rapporter eller kommentarer i din kod. Beskriv kort vilka verktyg som använts, hur de har använts och vilka beslut du fattade baserat på deras resultat.
Bedömning
Betygsättningen baseras på din individuella måluppfyllelse. All användning av AI som förhindrar oss från att bedöma din egen förståelse, ditt resonemang eller ditt bidrag kommer att påverka ditt betyg negativt, oavsett kvaliteten på det AI-genererade materialet.
This course content is offered under a CC attribution non-commercial share alike license. Content in this course can be considered under this license unless otherwise noted.