======Programming II - Labs 2017/2018====== 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 2017/2018 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=17bNPRG031x11&fak=11320&skr=2017&sem=2|group]], concretely, by [[http://gamedev.cuni.cz/contacts/|Jakub Gemrot]] Permalink: http://bit.ly/mff-uk-prg2-labs-2018 ======Contact====== Jakub Gemrot: [[mailto:jakub.gemrot@gmail.com|jakub.gemrot@gmail.com]] ======Dates====== Standard labs - Friday, 10:40, SW2 Optional extra labs - Friday, 12:20, S7 ======How to get credits====== In order to get credits from me, you have to - Deliver a semestral project of your choice - Pass the labs * To pass the labs you must obtain **at least 90 points by the 18.5.2018** * 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://docs.google.com/spreadsheets/d/1sewf3lpyxoZgs04x4c-lLywDsHLE6AbCOOFVKAER7l0/edit?usp=sharing|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 test - Friday, 25.5.2018, 10:40-12:10, SW2 - Friday, 1.6.2018, 9:00-12:10, SW2 - Friday, 15.6.2018, 9:00-12:10, SW2 ======Semestral 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|semestral 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 10 - 11.5.2018** * **Graph Algos** * Graph algos, Springy algo * [[https://drive.google.com/open?id=1yY2kqUT_smJJ_Cf7DBZ5psKDEJZfOsZv|Slides (PDF)]] * **Homework 10** - Graph algos * see the slides for the homework details * Springy algo //10 points// * Component labeling //5 points// * Transitive closure //5 points// * Visitor pattern //5 points// * Minimum spanning tree //5 points// * [[https://drive.google.com/open?id=0B49ID9s3-zhTNlRyelluZVdGV3M|Example graph inputs]] **Lab 09 - 4.5.2018** * **WinForms Basics** * Forms, Event, Exceptions * [[https://drive.google.com/open?id=1BmD6dkWC2FhNgfJADkSriilu6ZzJvs-W|Slides (PDF)]] * **Homework 09** - Sierpinsky Triangle * see the slides for the homework details * //5 points// **Lab 08 - 27.4.2018** * **Dynamic Programming** * [[https://drive.google.com/open?id=1kxBZFFCEYqBdP0Xpk41drNCd9RfvXzc3|Slides (PDF)]] * What is Dynamic Programming * Example problems **Lab 07 - 20.4.2018** * **Theme Hospital Part 2** * [[https://drive.google.com/open?id=1NSa_CKecQR7ys9WgDRTCyszgVk4Y-Xsz|Slides (PDF)]] * Path-finding in Theme Hospital * Dijkstra's algor * List vs. SortedSet vs. Heap * [[http://c-sharp-snippets.blogspot.cz/2010/03/runtime-complexity-of-net-generic.html|Collections' operations time complexities]] * **Homework 07** - Theme Hospital Navigation * see the slides for the homework details * no deadline ;) * [[https://drive.google.com/open?id=1PBsTa0oF_Xc32JRCTjNxB4bqU5PMHlu4|Example inputs]] * //15 points// **Lab 06 - 13.4.2018** * **Theme Hospital Part 1** * [[https://drive.google.com/open?id=1iwrriwIscmdcsUdLsG0zeP9mTyTfCJJD|Slides (PDF)]] * Theme Hospital input * Enums, Dictionary, Regex * **Homework 06** - Theme Hospital Input Parser * see the slides for the homework details * **DEADLINE: 19.4.2018** !!! * [[https://drive.google.com/open?id=1EigUAksumPHoklZmWbFY_x9hqFtVwsKf|Example inputs]] * //10 points// **Lab 05 - 6.4.2018** * **Implementing the Snake** * [[https://drive.google.com/open?id=1c-eMIrRizBkwjVEfP_w6YAtmS1__Ngkf|Slides (PDF)]] * I've been showing some bits from "how-to implement Snake" * Example Snake stub will appear in here * **Homework 05** - The Snake * see the slides for the homework details * implement the Snake :-) * you can check the code we've been working on during the lab: [[https://drive.google.com/open?id=1_kjPyHRhL4SJRkoOSzSyXBJoY6KvdpFj|Snake - Lab]] * //15 points// **Lab 04 - 16.3.2018** * **OOP - Virtual methods** * [[https://drive.google.com/open?id=1P7RVKq-wlGuRRJcY6I-Kb5Gax8xwCFFE|Slides (PDF)]] * [[https://drive.google.com/open?id=10CnEK6JfnzoMaWGK36yqUis1bsv-Trsc|C# Method Quiz project]] * **Homework 04** - The Snake Stub * see the slides for the homework details * 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// **Lab 03 - 9.3.2018** * **OOP introduction** * [[https://drive.google.com/open?id=1vPTIZInPo8e-dnxZumnOKeOM0AFJRIl4|Slides (PDF)]] * **Homework 03** - Extendable Calc * see the slides for the homework details * you can start from the following [[https://drive.google.com/open?id=1VZU3LQS9ZyCwA9CLg-_YMvrqJHWVFAyX|code template]] * //10 points// **Lab 02 - 2.3.2018** * **Tree and Graph crawling using Depth/Breadth-first Search** * [[https://drive.google.com/open?id=19MAKwS7yfh2kVhzh9iQfLyxnB9XSNd3q|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 - 23.2.2018** * **C# and OOP - Gentle Introduction** * [[https://drive.google.com/open?id=1AjfQ2JH794pBqHtkQRH-ctXw7cTok_R6|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=1zR27WHcZuJ1eX2nDP6gf2oEtEBvnEmR0|Homework project stub - from lab]] * or you can download more developed version 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=1auZqMPlB8tgEPgI7G1OAeVklDFChEO2o|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=1ne6n1jkjXqycGnaL48jzcqhczMlGYlkr|C# FirstSteps]] * //8 points//