Arvutiteaduse instituut
  1. Kursused
  2. 2023/24 kevad
  3. Programmeerimine keeles C++ (LTAT.03.025)
EN
Logi sisse

Programmeerimine keeles C++ 2023/24 kevad

  • Pealeht
  • 1. Muutujad ja andmetüübid
  • 2. Keele põhikonstruktsioonid I
  • 3. Keele põhikonstruktsioonid II
  • 4. Klass, struktuur, mallid
  • 5. Dünaamiline mäluhaldus I
  • 6. Dünaamiline mäluhaldus II
  • 7. Kontrolltöö 1

Seitsmendal nädalal toimub 1. kontrolltöö

1. kontrolltöö näidis on Moodles

  • 8. Dünaamiline mäluhaldus III
  • 9. STL andmestruktuurid I
  • 10. STL andmestruktuurid II
  • 11. OOP I Klassid
  • 12. OOP II Pärilus ja polümorfism
  • 13. Erindite töötlemine
  • 14. Täiendavad teemad
  • 15. Kontrolltöö 2

Viieteistkümnendal nädalal toimub 2. kontrolltöö

  • 16. Projekti esitlus
  • Mõned viited - vajalikud kaaslased
  • Vanad materjalid
  • Juhendid
  • Viited

Programmeerimine keeles C++

Praktikumid 7–8: Projekt

Üldised nõuded

Aine lõppu jääb veel üks suur koduülesanne, mille lahendamise käigus saate seniõpitut kasutada. Peate kirjutama programmi, et demonstreerida oma programmeerimisoskust. Projekti teema valige ise.

Lahendamiseks on aega 14 päeva.

Tähtajad

  • projekti püstitus 05.05.2022 23:59:59
  • projekti programm 15.05.2022 23:59:59

Programm peab kasutama praktikumides tutvustatud kaustastruktuuri. Lahendusega peab kaasas olema Makefile (võib kasutada ka cmake, qmake või mõnda teist analoogset süsteemi), mis võimaldab programmi lihtsalt kompileerida kolme praktikumis toetatud kompileerimiskeskkonna (MinGW, Linux, Mac OS X) all. Teekide asukohta peab Makefile sees saama muutujaga määrata.

NB! Doxygeniga dokumenteerida pole vaja.

Ülesanne 1 – Projekti püstitus (3 punkti)

Andke projekti sõnaline püstitus. Teema peab olema teie jaoks huvitav. Selgitage lühidalt programmi ülesehitust ja kasutatavaid programmeerimisvahendeid. Projekti püstitus esitatakse Moodle'sse.

Ülesanne 2 – Projekti programm (10 punkti)

Projekti programmid esitatakse läbi aine veebilehel asuva vormi. Lisaks laetakse programm hindamiseks üles Moodle'i foorumisse. Projekti mahuks on umbes 10 tundi tööd.

Ülesanne 3 – Projekti esitlus (3 punkti)

Esitlege oma projekti praktikumis või salvestage projekti tutvustav videoesitlus (jagage link Moodles projektide hindamiseks). Esitluse pikkus võiks olla 5–10 minutit. Tutvustage programmi koodi ja selle kompileerimist. Demonstreerige programmi tööd.

Ülesanne 4 – Projektide hindamine (4 punkti)

Hinnake vähemalt kahte kaasüliõpilaste poolt esitatud projekti. Iga hindamise eest saab kuni 2 punkti.

Hinnake 5 punkti skaalas (5-suurepärane, 4-hea, 3-rahuldav, 2-nõrk, 1-ebarahuldav) projekti järgmisi karakteristikuid:

  1. teema
  2. kompileerimine ja käivitamine
  3. tehniline teostus
  4. kasutusmugavus

Põhjendage lühidalt enda poolt antud hindeid. Andke ka hinnatava projekti koondhinne, milleks on nende nelja hinde summa.

Näidisteemad

Kerge:

  1. Käsureapõhine trips-traps-trull (mingi krutskiga)
  2. Typeracer (sarnaselt https://play.typeracer.com/ )
  3. Diff (näiteks kuidas 2 tekstifaili teineteisest erinevad, mis real, mille poolest)
  4. Poomismäng
  5. Mullisort (Algoritmi realisatioon kirjeldusega)

Keskmine:

  1. Dijkstra algoritm (Algoritmi realisatsioon kirjeldusega)
  2. Lineaarvõrrandisüsteemide lahendaja
  3. Mõne geneetilise kauguse arvutamine. Raskendav boonus: meetodi kiirendamine Intel X86_64 vektorinstruktsioonidega.
  4. Mõni kasulik algoritm mis on teostatud C++ ja saab kutsuda mõnest teisest keelest (näiteks R, Python, Javascript/Node.js, etc). Sellist lähenemist kasutatakse sageli, et aeglane osa dünaamilises keeles kirjutatud skriptist palju kiiremaks teha.

Raske:

  1. Teise protsessi mälu ruumis tegutsemine ( mälu lugemine/ muutmine ). Oleneb operatsioonisüsteemist, windowsis (Abiks “Windows.h” päis).
  2. Hashcracker (Etteantud parooliräsi brute-forcemine), võib toetada ka ainult ühte algoritmi
  3. Boids -- simuleerimine ja visualiseerimine
  4. Väga lihtne software only ujukoma (liitmine, korrutamine, pöördarv, ruutjuur)
  5. Implicit Runge-Kutta diferentisaalvõrrandite lahendaja (üldine numbriline lahendaja mis võtab sisendiks suvalise funktsiooniobjekti). Tungivalt soovitatav varasem kogemus numbriliste meetoditega. Võib kasutada välist lineaarvõrrandisüsteemide lahendajat.
  6. Valguse simuleerimine ja visualiseerimine 2D ruumis (vaata https://benedikt-bitterli.me/tantalum/tantalum.html). Äärmiselt mahukas teema kui ei ole juba füüsika ja selle simuleerimisega tuttav.
  7. Minesweeperi lahendaja. Peaks suutma lahendada juhuslikult genereeritud intermediate tasemega puslesid keskmiselt enam kui veerand juhtudel.
  8. Jaapani mõistatuste lahendaja. Suudaks mõistlikus ajas lahendada inimestele mõeldud ülesandeid kuni suuruses 50 korda 50. Puslesid peaks saama anda sisendina lihtsas tekstilises formaadis (ei pea vastama täpselt lingis toodule).
  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused