Er du klar til DM i Programmering 2010?

DM i Programmering 2010 finder i år sted i både Århus og Lyngby. Studerende fra hele landet kan deltage, og førstepræmien er et rejsegavekort på 10.000 kroner.

Lørdag den 2. oktober fyger det atter med kodelinjer på skærmen, når studerende fra landets it-uddannelser dyster i DM i Programmering.

For første gang afholdes konkurrencen både i Århus og Lyngby.

De studerende har fem timer til at løse 8-12 programmeringsopgaver, og der er valgfrihed mellem sprogene C, C++ og Java. Førstepræmien er et rejsegavekort på 10.000 kroner.

Indtil videre har hold med navne som 'Programming Acrobats Supreme', DTU, og 'Lambdabamserne' fra Datalogi på Københavns Universitet tilmeldt sig konkurrencen i Lyngby, mens for eksempel 'All Your Bacon Are Belong To Us' og 'Followers of Knuth' er blandt de tilmeldte i Århus.

Holdene må bestå af op til tre deltagere.

Konkurrence i både øst og vest

Konsulentfirmaet Netcompany har været vært for DM i Programmering siden 2009, hvor dysten løb af stabelen på DTU i Lyngby.

I år afholdes konkurrencen altså både på Datalogisk Institut ved Aarhus Universitet og på DTU i Lyngby, så det denne gang kun er fynboerne, der må vælge, om de skal rejse øst- eller vestpå for at deltage.

»Det blev en lang dag for jyderne sidste år, hvor de måtte stå tidligt op for at nå til DTU i Lyngby inden konkurrencens start,« siger HR-koordinator i Netcompany, Susanne Hansen, om årsagen til at fordele programmeringskonkurrencen på de to byer.

Faktisk var Netcompanys oprindelige motivation for at blive vært for NCPC's programmeringskonkurrence netop at udbrede kendskabet til konkurrencen i resten af landet.

»Vi syntes, det kunne være sjovt at lave én stor programmeringskonkurrence, hvor studerende fra hele landet kunne få en hyggelig og social dag ud af det,« siger Susanne Hansen.

DM i Programmering 2010 er en del af Nordic Collegiate Programming Contest for studerende i hele Norden, der har været afholdt siden 2005.

Nye hold har tilmeldingsfrist 27. september.

Opdatering: Susanne Hansen oplyser nu, at tilmeldingsfristen er fredag den 1. oktober klokken 10.00.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (20)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Frej Soya

Der savnes større valgfrihed af sprog, i det mindste mulighed for forskellige paradigmer. Det nuværende er valgfrihed til at vælge det samme.

Men der er sikkert nogle logistiske årsager og vurderingsproblemer?

PS: Jeg har sagt det til Susanne Hansen fra Netcompany, men blev mødt med at man både kunne bruge engelsk og dansk, hvilket nu var min fejl fordi jeg ikke sagde _programmerings_sprog ;).

Man bliver fanget i sin egen verden...

  • 0
  • 0
Mikkel Høgh

Nu er der jo en del mennesker som aldrig har beskæftiget sig med de nævnte sprog, men stadig beskæftiger sig med programmering.

Det undrer at man har valgt at udelade C#, Python, Perl, Ruby, m.fl. På den anden side ville det jo nok være konkurrenceforvridende for alle de stakler der sidder og kæmper med de mindre dynamiske sprog…

  • 0
  • 0
Andreas Mieritz

C# er udeladt af praktiske årsager så vidt jeg ved. Her på DTU i lyngby skal vi bruge terminaler som sættes til rådighed af DTU. Terminalerne kører Solaris, og køres på hovedserveren. Denne server har SPARC processorer, så Mono kan heller ikke bruges.

Selvfølgelig burde folk have lov at programmere på deres egne computere, men ideen er at sætte alle på lige fod. Java, C og c++ er sprog der kører rimeligt hurtigt når de er compilerede, og hastigheden af programmet giver vidst også lidt point, så dynamiske sprog ville tabe stort der.

  • 0
  • 0
Mikkel Høgh

Her på DTU i lyngby skal vi bruge terminaler som sættes til rådighed af DTU. Terminalerne kører Solaris, og køres på hovedserveren.

Det svarer vel lidt til at arrangere VM i Dans hvor man fastsætter at deltagernes fødder ikke må løftes mere end 10 cm. fra gulvet. Nok lidt svært for dem der danser ballet eller tango.

Jeg synes det virker elitært og ringeagtende over for de mange programmører som aldrig har beskæftiget sig med nogen af de tre nævnte sprog, og nok meget symptomatisk for den tankegang man ofte støder på at hvis man ikke har mindst en kandidatgrad, så er man ikke rigtig programmør…

  • 0
  • 0
Thorbjørn Andersen

En god programmør vil typisk (også) have kigget på java og c/c++. Så er problemet altså heller ikke større....

Derudover er det heller ikke en obligatorisk konkurrence - så situationen er ikke så slem som flere datamatikerskoler, hvor man tvunget til C# - og skolen dermed mere eller mindre direkte giver offentlig støtte til Microsoft.

  • 0
  • 0
Martin Hundebøll

Efter at have læst opgaver fra sidste år[1], synes jeg de skal omdøbe konkurrencen til: "DM i matematik"

Der er jo kun én slags opgaver og ingen af dem dækker emner som "minimering af resourceforbrug", "kodens læsbarhed", "low level programming", "high level programmering", etc...

  • 0
  • 0
Mikkel Høgh

En god programmør vil typisk (også) have kigget på java og c/c++

(citation needed)

Det er netop den slags generaliseringer, jeg mener er et problem.

Der er rigtig mange der som jeg har mange års erfaring med programmering i PHP, JavaScript, Perl, Python, Ruby, m.fl., men jeg er ofte stødt på den holdning at disse “scripting-sprog” (som de nedsættende bliver kaldt) ikke er fine nok til at man kan kalde sig “programmør”.

Det synes jeg selvsagt er en snæversynet holdning. Internet-applikationer der mere eller mindre ekslusivt bruger “scripting”-sprog er altså programmering. Det kan godt være at vi ikke har samme algoritmetunge matematikbaggrund som de “rigtige” programmører, men jeg synes det er dybt pinligt at man kalder et event som dette DM i /Programmering/. Kald det dog DM i /Computervidenskab/.

  • 0
  • 0
Jacob Christian Munch-Andersen

Det opgavesæt passer så med at det her er resultatlisten: http://ncpc.csc.kth.se/standings/

Det er begge steder tydeligt at A, B, D og I er de lette opgaver.

Jeg må sige at resultaterne generelt forekommer utroligt ringe, 29% af holdene har kun løst en enkelt opgave. De 4 ovenstående opgaver burde enhver programmør kunne løse, måske ikke på 5 timer, men man skal da virkelig snøvle for ikke i det mindste at nå 2 af dem.

  • 0
  • 0
Mathias Falkenberg

En god programmør vil typisk (også) have kigget på java og c/c++.

Kigget på, ja. Men da slet ikke i en grad hvor jeg ville føle mig komfortabel ved at skulle løse en opgave på relativt begrænset tid.

Med det sagt kan det egentlig godt undre mig at Microsoft ikke har kastet sig ind i kampen og stillet nogle maskiner og licenser til rådighed... Det ville vel være i deres egen interesse?

Men konkurrencen er måske ikke højprofil nok...

  • 0
  • 0
Anonym

Jeg er nok lidt 'farvet' af bla. den finansielle verden.

Men en interessant 'prøvelse' kunne være følgende:

"Beregn den effektive rente for obligationer ud fra den aktuelle pengestrøm[1]"

[1] I 'min tid' kunne man få de aktuelle pengestrømme leveret på bånd fra kreditforeningerne.

Opgaven lyder simpel, men implicerer dels forretningsviden, dels logistik med levering af disse pengestrømme.

  • 0
  • 0
Henrik Schmidt

Man kunne vel kalde det DM i algoritmik, men så ville man også få nogen på nakken :) I hvertfald en del af opgaver hinter mod at bruge diverse tricks af den natur.

Det ser ud til, at opgaverne ikke er så voldsomt afhængige af rå perfomance, så i bund og grund er der ikke noget teknisk i vejen med at skrive det i Ruby, Python, Scala etc. Der er jo også en del funktionelt inspirerede ting som ville være rare at have i situationen.

Jeg er dog blevet straffet performance-mæssigt for at lave noget stærkt CPU-bundet i Ruby, men det var før jRuby kom ud, og der var tale om tungere ting. En reimplemetering i Java gav en speedup på 300x!

Dog må jeg sige, at jeg helt klart mener, at en god programmør bør være nogenlunde komfortabel i mindst et af de store kompilerede sprog, samt et eller flere scripting sprog og funktionelle/multiparadigme sprog.

I øvrigt er det ikke veldefineret, hvad man i opgave A får som output ved input 1 0 1. Skal man have stack overflow eller uendelig løkke?

  • 0
  • 0
Jesper Louis Andersen

Tricket er at træne typen af opgaver i C, C++ eller Java. Som regel er det lidt den samme type af opgaver. Derfor skal man træne indtil man kan skrive standard IO og oprette et par af standardalgoritmerne hurtigt. Det hjælper en hel del.

Det er lidt synd man ikke må bruge andre sprog end Java, C eller C++, for det udelukker klart min lyst til at være med. Skulle jeg være med, ville C klart være mit valg.

  • 0
  • 0
Mark Greve

Det er rigtigt nok en algoritmisk programmeringskonkurrence, så det vil være en fordel at have noget kendskab til algoritmik. Det er selvfølgelig korrekt, at programmering handler om meget andet, men meget af det kan være svært, hvis ikke umuligt, at teste i en 5-timers konkurrence, hvor der bruges automatiserede tests af løsningerne. Det skal også lige siges, at konkurrencen ikke kun tester ens evner inden for algoritmik, men også opgaveforståelse, programmering, debugging og holdarbejde, som alle er vigtige evner for programmører.

Et andet godt argument for at bruge denne form for opgaver i en programmeringskonkurrence er, at mange store internationale virksomheder som f.eks. Google og Microsoft bruger denne slags opgaver i tekniske interviews for at bedømme om folk er dygtige programmører. Det er ud fra den overbevisning, at hvis man er god til at løse den slags opgaver, så er man også en dygtig programmør.

Grunden til at begrænse antallet af sprog er primært historisk. Konkurrencen startede i 1977 (den internationale udgave, ACM/ICPC World Finals, som vinderholdene fra NWERC bliver inviteret til. NWERC er den efterfølgende konkurrence for DM i programmering), hvor man oprindelig kunne bruge C og Pascal. Efterhånden er Java så kommet til, og Pascal er blevet udfaset. En anden grund er, at opgaverne er lavet så, man automatisk kan teste om løsningerne er korrekte og effektive (primært CPU-tid og hukommelsesforbrug). Softwaren på dommermaskinerne skal kunne håndtere alle tilladte sprog, og man skal også sætte fornuftige tidsgrænser for de forskellige sprog. Typisk tillader man dobbelt tid i Java i forhold til C++. Det kan være utroligt svært at sætte en fornuftig tidsgrænse i mange dynamiske sprog som Python og lign., da de ofte kan være op til 30x langsommere (for Python i hvert fald) end C++. Udover det skal der også skrives en løsning til hver opgave i alle de tilladte sprog for at verificere, at det er muligt at løse opgaven inden for de tidsgrænser, man har valgt.

Hvis man gerne vil deltage i en algoritmisk programmeringskonkurrence, hvor man ikke er begrænset af tilladte sprog, kan man prøve kræfte med Google Code Jam. Her er den eneste begrænsning på sproget, at enhver skal kunne få fat på en compiler (eller fortolker) til det.

Deadline for registrering er i øvrigt flyttet til d. 30. september kl. 18.

Sorry for det lange post, men jeg håber, at det svarer på mange af de spørgsmål, der er blevet bragt på banen.

  • 0
  • 0
Mark Greve
1 og #2:

Jeg er med at til at arrangere konkurrencen (og deltager også selv) på Aarhus Universitet, og i den forbindelse fik jeg en mail fra en ph.d.-studerende, om hvilket sprog konkurrencen var på. Jeg svarede så prompte, at det var C, C++ og Java. Det viste sig så, at han ikke mente den slags sprog, men gerne ville vide, om opgaverne var på engelsk eller dansk. Så selv blandt dataloger kan det godt betale sig at være lidt mere præcis :)

  • 0
  • 0
Log ind eller Opret konto for at kommentere