Institute of Computer Science
  1. Courses
  2. 2024/25 spring
  3. Programming in C++ (LTAT.03.025)
ET
Log in

Programming in C++ 2024/25 spring

  • 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öö

2. kontrolltöö näidis on Moodles

  • 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).
  • 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