Institute of Computer Science
  1. Courses
  2. 2020/21 spring
  3. Programming in C++ (MTAT.03.158)
ET
Log in

Programming in C++ 2020/21 spring

  • Pealeht
  • Praktikumid
    • Lahenduste esitamine
    • Tulemused
  • Eksamiajad
  • 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 06.05.2020 18:00
  • projekti programm 17.05.2020 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 ja vaadatakse koos õppejõuga praktikumis läbi.

Ülesanne 2 – Projekti programm (10 punkti)

Projekti programmid esitatakse läbi aine veebilehel asuva vormi.

Ülesanne 3 – Projekti esitlus (3 punkti)

Esitlege praktikumis oma projekti 5–10 minutit. Demonstreerige programmi tööd.

NB: (2021 kevad toimub teistmoodi, vt. Slack)

Ülesanne 4 – Projektide hindamine (4 punkti)

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

Projektid on väljas Moodle'i foorumis. Hinnake 5 punkti skaalas (5-suurepärane, 4-hea, 3-rahuldav, 2-nõrk, 1-ebarahuldav) järgmisi projekti 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.

Teemad

Kerge:

  1. Käsureapõhine trips-traps-trull
  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).
  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment