======Programming II - Labs 2018/19====== This page contains materials for the practice lessons of the [[https://is.cuni.cz/studium/predmety/index.php?tid=&do=predmet&kod=NPRG031|Programming II (NPRG031)]] course that is being/has been taught during summer semester 2018/2019 at [[http://www.mff.cuni.cz/|Charles University]] in [[http://www.praha.eu/jnp/cz/home/magistrat/index.html|Prague]], Czech Republic. The course official web page is/was to be found at [[https://kam.mff.cuni.cz/~perm/programovani/NNPRG031/|Martin Pergl]] and [[http://ksvi.mff.cuni.cz/~holan/|Tomáš Holan]]. The practice lessons (labs) are/were backed by many, for this [[https://is.cuni.cz/studium/rozvrhng/roz_predmet_gl.php?tid=&gl=18bNPRG031x09&fak=11320&skr=2018&sem=2|group]], concretely, by [[http://gamedev.cuni.cz/contacts/|Jakub Gemrot]] Permalink: http://bit.ly/mff-uk-prg2-labs-2019 ======Contact====== Jakub Gemrot: [[mailto:jakub.gemrot@gmail.com|jakub.gemrot@gmail.com]] ======Dates====== Standard labs - Monday, 14:00 ======How to get credits====== In order to get credits from me, you have to - Deliver a semester project of your choice - Pass the labs * To pass the labs you must obtain **at least 90 points by the 13.5.2019** * If you do, then there are two ways how to pass the labs - Obtain at least 140 points and pass the "final labs test" (this option is available only during "labs test") - Obtain at least 170 points (if you fail all the "labs tests", you have to go for this one) * **You can get points by:** - **Attending workshops** and writing **quick tests** at their beginning - **Doing homeworks** (and submitting them to ReCodEx or me) * Details can be read within this [[https://drive.google.com/open?id=1sewf3lpyxoZgs04x4c-lLywDsHLE6AbCOOFVKAER7l0|spreadsheet]] (GDrive) * All homeworks have relaxed deadlines, deliver them anytime you want but heed to the dates above! ======Lab Test====== * There are going to be 3 opportunities to do the lab final test - Monday, 13.5.2019, 14:00?, SW2 - Monday, 20.5.2019, 14:00?, SW2 - Monday, 27.5.2019, 14:00?, SW2 ======Semester Project====== * The topic of the semestral project is completely on you! [[https://docs.google.com/document/d/1ASVu4Ju6kEkYUQeRZQICjKA5T5OM5tS-q_t-ORoTCWc/edit?usp=sharing|Some suggestions]]... * When to choose and settle on a topic, copy, fill and send me the [[https://docs.google.com/document/d/1ImYy5oSpeOJqeGweRxZb2MgxwvO_cDno4W3UEP5XkEg/edit?usp=sharing|semester project specification template]] * Delivery deadline: "up-to-you" = to be negotiated :) * Apart from the implementation you will also have to create user's manual and programmer's manual * [[https://drive.google.com/open?id=1dkn6TmHeqm37TeEXAJ_0CipW3ThnWRVa-f9aGq5EzlM|User's manual guidelines]] * [[https://drive.google.com/open?id=1PeRXbtEoPiDQpm291ol9iMMc_0of2FxSdVaD8EeU3og|Programmer's manual guidelines]] * Follow [[https://drive.google.com/open?id=1sraaknvWJtWYsTrSFyw7whwtxRtRspY1q-iHaf89ttg|delivery guidelines]] when submitting your work ======Labs: History====== **Lab 11 - 6.5.2019** * **2 player games w/ perfect information** * [[https://drive.google.com/open?id=19OJseKKspNnJRrfR04lA6IBKVkjQ5mHp|Slides (PDF)]] * Minimax and Branch-and-bound (aka Alpha Beta for games) discussed at class * **Homework 11** * Create Minimax player for TicTacRow * Implement you artificial player for [[https://drive.google.com/open?id=19OJseKKspNnJRrfR04lA6IBKVkjQ5mHp|this template]] * //10 points// **Lab 10 - 29.4.2019** * **Paint** * Led by Tom Holan * Agile programming in practice **Lab 09 - 22.4.2019** * **GDI & Graphs** * [[https://drive.google.com/open?id=1pefbvqqLS9a1TPYjm4XL_2OdycCzmUD4|Slides (PDF)]] * GDI introduction * **Homeworks 09** * Quite a lot of, see slides, choose your favorite! * Up-to 15+20 points! **Lab 08 - 7.4.2019** * **Dynamic Programming** * [[https://drive.google.com/open?id=1E1ay-562yzQpL6ScWl34ihXYmes0U6MI|Slides (PDF)]] * Yeah, this one I really "like"... * **Homework 08** - Longest common subsequence implementation * Expect two lines with two strings and output the result of LCS algorithm over them * //10 points// **Lab 07 - 1.4.2019** * **Theme Hospital Part 3** * [[https://drive.google.com/open?id=1mc9j7EBntGAIZ3VY_hwvKBm6BbH6vORB|Slides (PDF)]] * **Homework 07** - Theme Hospital Simulation * see the slides for the homework details * [[https://drive.google.com/open?id=1MEf9DTs-fC4G0jTFS_eHCyatY5MfgdEd|Example inputs H07]] * //30 points// **Lab 06 - 25.3.2019** * **Theme Hospital Part 2** * [[https://drive.google.com/open?id=1RTcNtNpvj91xb-jjDvO4w5f_WSui0feG|Slides (PDF)]] * Dijsktra, Heap, Debugging and ToString * **Homework 06** - Theme Hospital Path Finding * see the slides for the homework details * [[https://drive.google.com/open?id=1Ae9AvBU5MO5z3DPqBiNvpTpSz6N_HFw9|Example inputs H06]] * //10 points// **Lab 05 - 18.5.2019** * **Theme Hospital Part 1** * [[https://drive.google.com/open?id=1CnxDY_uxXYW3bR0JN0_HLmdshkG3BbcZ|Slides (PDF)]] * Theme Hospital input * Enums, Dictionary, Regex * **Homework 05** - Theme Hospital Input Parser * see the slides for the homework details * [[https://drive.google.com/open?id=16SxmwWxVwxD9MOl1GLEbJF0RezR8DsYN|Example inputs H05]] * //10 points// **Lab 04 - 11.3.2018** * **OOP - Virtual methods** * [[https://drive.google.com/open?id=1VN0sInHrqbmfx_ey3C5DXju14wL4WDAp|Slides (PDF)]] * [[https://drive.google.com/open?id=10CnEK6JfnzoMaWGK36yqUis1bsv-Trsc|C# Method Quiz project]] * **Homework 04.1** - The Snake Stub * see the slides for the homework details * [[https://drive.google.com/open?id=1bDTUIbNXTCGfcPR6ZDESVHVpIh2_JFwP|The Snake Class diagram]] - not the best, it can be improved, you do not need to heed to this; if you opt to change the architecture, send me your class diagram along with the stub! * you have to produce just the stub - practice declarations of classes, interfaces, methods, etc. according to UML! * [[https://drive.google.com/open?id=13k-yzk15LpfP7uQAkX5mVsUD0sz_fL9s|Example Snake]] - done by my former student ;) * //10 points// * **Homework 04.2** - The Snake * see the slides for the homework details * implement the Snake :-) * //15 points// **Lab 03 - 4.3.2019** * **OOP introduction** * [[https://drive.google.com/open?id=19tUA4Gls4drZ3YjjqvZOLggABVQwHKGX|Slides (PDF)]] * **Homework 03.1** - Extendable Calc * see the slides for the homework details * //10 points// * **Homework 03.2** - Draft UML for CalcWithMemory architecture * see the slides for the homework details * you can use, e.g., freeware [[https://www.yworks.com/products/yed|yEd]] tool for drawing an UML Class diagram * //8 points// **Lab 02 - 25.2.2019** * **Tree and Graph crawling using Depth/Breadth-first Search** * [[https://drive.google.com/open?id=1n4JnMy_eH49z0AjdVMnMSf6YYA2deCde|Slides (PDF)]] * **Homework 02** - GameBook - Part 2 * see the slides for the homework details * in a nutshell, you have to create a program that will auto-play me a game book * once you finish Homework 01, you can email me to receive a new template for this homework * //15 points// **Lab 01 - 18.2.2019** * **C# and OOP - Gentle Introduction** * [[https://drive.google.com/open?id=1HOZ7Zin_gwyUmCulA_NimC9cz_WXaqzc|Slides (PDF)]] * **Homework 01** - GameBook - Part 1 * see the slides for the homework details * in a nutshell, you have to create a program that will allow me to play a game book * [[https://drive.google.com/open?id=1dQaTSTHQ5AH4_ydNaQICLqQ7cwwSZUZ6|Homework project stub]] * you can start your implementation from here * [[https://drive.google.com/open?id=19fOP8vZl-9yWiKWTMdawzvwAJ8z-02Yh|Class project stub]] * or you can use impl from the lab * //10 points// **Lab 00 - Prequel** * **C# CrashCourse** * Learn syntax of C# via examples from the following Visual Studio 2017 Project: [[https://drive.google.com/open?id=1opSgC0LjTHSnhDMpB2dD6uBpDk3cdquF|C# CrashCourse]] * **Homework 00** - First Steps in C# * Then you can try to solve the first 22 small C# programs: [[https://drive.google.com/open?id=1fIT9IVm8fpmuzny7-9gyNfYsDNU8GsOi|C# FirstSteps]] * //8 points//