Programming I - Labs 2019/2020

This page contains materials for the practice lessons of the Programming I (NPRG030) course that is being/has been taught during winter semester 2019/2020 at Charles University in Prague, Czech Republic. The course official web page is/was to be found at Tomáš Holan's webpage. The practice lessons (labs) are/were backed by many, for this group, concretely, by Jakub Gemrot

Permalink: http://bit.ly/mff-uk-prg1-labs-2019


Dates

Monday's labs, 15:40, SW2, Jakub Gemrot: jakub.gemrot@gmail.com


Interesting

VisuAlgo - visualization of algorithms including AVL trees! Puzzle Prime - great box of puzzles (kudos to Simon Williams who brought this up)


How to pass the labs

  • Max TWO absences
  • Do ALL homeworks I give you
    • Almost no excuses here, it has very good motivation I('ll) share during the first lab
  • Pass a lab exam
    • Two dates: 16. 12. 2019 / 6. 1. 2020

Submitting homeworks

Send me an email (jakub.gemrot@gmail.com) containing a link where I can download your homework / project.

Ideally use DropBox or One Drive or WeTransfer; from time to time I have problems downloading files from GDrive (they are having wild JavaScripting that gets blocked by my filters occasionally).

Always use subject: PRG1 - 2019 - L[lab number] - [homework name]

Example: PRG1 - 2019 - L01 - Recodex

The subject is crucial! My mailbox is often overflowing and I have to process emails in batches - at these times, I'm searching for your homeworks via subject names.


Labs History

Lab 09

  • Homework
    • PRG1 - 2019 - L09 - Paddle
      • Do at least one thing from the following:
        1. Implement (at least one) power-up(s), e.g.: bigger ball, faster ball, bigger paddle, faster paddle, etc.
        2. Implement 3 different level layouts: level 1 - checkerboard, level 2 - circle, level 3 - full brick wall (standard)
        3. Implement (at least one additional) brick type, e.g.: non-destroyable, needs-to-be-hit-twice, ball-slowing, ball-fasting, random direction bounce, etc.

Lab 08

  • 9.12.2019
  • Python Q&A, Algorithmization
  • Homeworks
    • PRG1 - 2019 - L08 - Train crossing the bridge
    • PRG1 - 2019 - L08 - Reusable ids

Lab 07

Lab 06

  • 18.11.2019
  • Revisiting modules again (finishing the Lab 05 story)
  • Classes and Objects!
  • Homework
    • PRG1 - 2019 - L06 - ImLib
      • Create your own class for holding value of a complex number
      • Implement add, sub, mul operators
      • Implement greater/less then relations (compare real component first, then imaginary)
      • Implement negation operator
      • Provide interoperability with Python number types (int and float) wrt. to operators/relations above

Lab 05

Lab 04

Lab 03

  • 21.10.2019
  • Intro continues :-)
  • We will be playing with
  • Homework is in Recodex!
    • There are following assignments in order, which is advised to implement them in
      1. 5P 0.2 Hello World 2
      2. Caesar cipher
      3. Is a number symmetric in Python?
      4. Prime factorization
      5. Součet řady celých čísel
      6. Maximum value in a sequence (with occurrences) in Python
      7. Bases

Lab 02

Lab 01

  • 7.10.2019
  • Welcome to Programming!
  • Some introductory formal / informal info
  • First batch of homeworks :)
    1. PRG1 - 2019 - L01 - Recodex
      1. Create an account in ReCodEx; this can be done IF AND ONLY IF you have entered your email adress into the CAS
      2. Send me an email with you CUNI number and login to ReCodEx
    2. PRG1 - 2019 - L01 - Prisoners
      • Solve the following problem, Prisoners, and ideally (but optionally) prove that your solution is working
    3. PRG1 - 2019 - L01 - Coins
      • Solve the following problem, Wizard & Prisoner - Coins, in a way that the description also serves as a proof that your algorithm is working
    • Deadline: 13.10.2019 23:59
programming_i_2019-20_winter_semester.txt · Last modified: 2019/12/16 17:40 by jakub.gemrot