Course syllabus

Home | Lectures | Process | Product | Presentations | Assessment

Smurf-oriented mega-smurfing project

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, 2024.

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 (see below). 

Teaching team:

  • Casper Hansen
  • William Norland
  • Valdemar Stenhammar
  • Arthur Alexandersson
  • Oscar Palm
  • Wincent Stålbert Holm
  • Alex Ionescu
  • Valter Schütz
  • Piero Romare

You'll find a Slack workspace for the course here: 
https://join.slack.com/t/ooprogrammingproject/shared_invite/zt-2t39sx6iu-33vVOkaq22yU~xeSg8tcLA

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.

All lectures will be streamed through https://chalmers.zoom.us/my/tda367oopp (Passcode: 102030), as well as recorded - but you are strongly recommended to be physically present! The lectures will contain active aspects in which you interact with your group, other groups, and the teachers; participating remotely, or only watching recordings, will not give the full social learning experience, and should only be used as a last-ditch effort.

 

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.

 

Course structure and schedule

Will will have:

  • a number of lectures,
  • a seminar,
  • a peer review of the design and code of others,
  • a few workshops,
  • and 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 in the official 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 time shown in the schedule.

TimeEdit

Weekly plan

This is an (coarse, draft) overview of the course per week:

(Study week / Activities)

  1. Coalesce groups. Group contracts, decide on project, GUI sketches, user feedback, early user stories; workshop on Maven/Git
  2. Domain models; more GUI, more user feedback, more user stories; early prototyping; workshop on JUnit/Travis
  3. Settle into iterative process: user feedback-user stories-domain model-design-implementation; design models, early executable; seminar presentations; workshop on Copilot
  4. More iterative development; more design models, MVC
  5. More iterative development; minimal viable product (MVP)
  6. More iterative development; refactoring, extending, improving; peer reviews
  7. More iterative development; integrate peer review feedback into system; final submission
  8. (Holiday break): Take a break. Seriously.
  9. (Post-holiday self-study/re-exam week): Finalize product and documentation; prepare final presentation
  10. (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 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, but will not be used directly as a basis for grading.

Late submission of the project or any compulsory assignments along the way can reflect negatively on the grade.

 

pngwing.com.png

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, 2024.

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:

  • Casper Hansen
  • William Norland
  • Valdemar Stenhammar
  • Arthur Alexandersson
  • Oscar Palm
  • Wincent Stålbert Holm
  • Alex Ionescu
  • Valter Schütz
  • Piero Romare

Det finns ett slack-workspace för kursen här: 
https://join.slack.com/t/ooprogrammingproject/shared_invite/zt-2t39sx6iu-33vVOkaq22yU~xeSg8tcLA

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.

Samtliga föreläsningar streamas via https://chalmers.zoom.us/my/tda367oopp (Passcode: 102030) - men ni rekommenderas starkt att närvara fysiskt! Föreläsningarna innehåller aktiva aspekter där du interagerar med din projektgrupp, med andra grupper, och med lärarna; att delta på distans, eller enbart titta på inspelningar i efterhand, kommer inte ge hela den sociala lärandeupplevelsen, och bör enbart användas som en sista utväg.

 

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.

 

Kursens upplägg och schema

Vi kommer att ha:

  • ett antal föreläsningar,
  • ett seminarium,
  • en kollegial granskning (peer review) av andras design och kod,
  • några ‘workshops’,
  • och 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. 

TimeEdit

Veckoplanering

Här är en (grov, förslag) översikt över kursen per vecka.

(Läsvecka / Att introducera, göra och diskutera på veckomöte)

  1. Formera grupper. Gruppkontrakt, bestäm projekt, preliminärt GUI, användarfeedback, initiala user stories; workshop om Maven/Git
  2. Domänmodell, mer GUI, mer användarfeedback, mer user stories, tidig prototypning; workshop om JUnit/Travis
  3. Sätt den iterativa processen: användarfeedback-user stories-domänmodell-design-implementation; designmodeller, tidig körbar produkt; seminarie-presentationer; workshop om Copilot
  4. Mer iterativ utveckling; mer designmodeller, arkitektur och MVC
  5. Mer iterativ utveckling; Minimal fungerande produkt (MVP)
  6. Mer iterativ utveckling; refaktorisering, utökning, förbättring; kollegial granskning (peer reviews)
  7. Mer iterativ utveckling; integrera feedback från peer reviews i produkten; slutinlämning
  8. (Jullov): Take a break. Seriöst.
  9. (Post-helg självstudie- och omtentaveckor): Finslipa produkt och dokumentation; förbered slutpresentation
  10. (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 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, men kommer inte användas direkt som underlag för betyg.

Sen inlämning av projekt eller dokument kan påverka betyget negativt.

Course summary:

Date Details Due