Skip to content

Commit

Permalink
🎓 Labs --- Split last labs (#653)
Browse files Browse the repository at this point in the history
  • Loading branch information
jameshughes89 authored Nov 20, 2024
1 parent 6b417b5 commit 94d63bd
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 30 deletions.
1 change: 1 addition & 0 deletions site/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ Lab Sections
labs/lists/2d-lists
labs/lists/references
labs/objects/objects
labs/testing/unittest-objects
labs/objects/data-structures


Expand Down
16 changes: 9 additions & 7 deletions site/labs/objects/data-structures.rst
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,7 @@ Pre Lab Exercises
Before Kattis
=============

#. Add to the ``Person`` class from the previous lab

* A reasonable ``__repr__`` method --- you can decide what the string looks like
* A reasonable ``__eq__`` method --- you can decide what it means for two ``Person`` objects to be equivalent
* Make instances of the class and write ``assert`` tests to verify correctness


#. Have a complete ``Person`` class from the previous lab
#. Write a ``Contacts`` class that will manage a collection of ``Person`` objects

* The class will keep track of many instances of ``Person`` objects
Expand All @@ -60,6 +54,14 @@ Before Kattis
* Make an instance of the class, add/remove ``Person`` objects to it, and write ``assert`` tests to verify correctness


#. Create unittest classes for the ``Contacts`` class

* Write tests for each of the methods in each class
* You may find the ``Course`` class' :download:`unittests helpful <../../../test/test_course.py>`
* Run the tests with ``unittest.main(argv=[''], verbosity=2, exit=False)``
* Ensure all tests pass



Kattis Problems
===============
Expand Down
23 changes: 0 additions & 23 deletions site/labs/objects/objects.rst
Original file line number Diff line number Diff line change
Expand Up @@ -52,29 +52,6 @@ Before Kattis
* Make instances of the class and write ``assert`` tests to verify correctness


#. Create a ``Person`` class

* Attribute for ``first_name``
* Attribute for ``last_name``
* Attribute for ``email_address``
* The constructor will take three parameters for specifying the values of the attributes
* A method returning a string of their ``full_name()`` --- e.g. ``Bob Smith``
* Make instances of the class and write ``assert`` tests to verify correctness


#. Create unittest classes for each of the above classes

* Write tests for each of the methods in each class
* Be sure to reference the :doc:`unittest topic </topics/testing/unittest>`
* You may find the ``Circle`` class' :download:`unittests helpful <../../../test/test_circle.py>`

* Be sure to remove the ``from src.circle import Circle`` line


* Run the tests with ``unittest.main(argv=[''], verbosity=2, exit=False)``
* Ensure all tests pass



Kattis Problems
===============
Expand Down
63 changes: 63 additions & 0 deletions site/labs/testing/unittest-objects.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
********************
Unit Testing Objects
********************

* Feel free to use your laptop
* You are strongly encourage to work with others

* When you get stuck, ask those sitting around you for help
* Get used to working together in the labs
* Peer teaching and peer learning has been empirically shown to be very effective



Pre Lab Exercises
=================

* Have the previous lab complete



Before Kattis
=============

#. Create a ``Person`` class

* Attribute for ``first_name``
* Attribute for ``last_name``
* Attribute for ``email_address``
* The constructor will take three parameters for specifying the values of the attributes
* A method returning a string of their ``full_name()`` --- e.g. ``Bob Smith``
* Write a reasonable ``__eq__`` method --- you can decide what it means for two ``Person`` objects to be equivalent
* Write a reasonable ``__repr__`` method --- you can decide what the string looks like
* Make instances of the class and write ``assert`` tests to verify correctness


#. Create unittest classes for the ``Person`` class

* Write tests for each of the methods in each class
* Be sure to reference the :doc:`unittest topic </topics/testing/unittest>`
* You may find the ``Circle`` class' :download:`unittests helpful <../../../test/test_circle.py>`

* Be sure to remove the ``from src.circle import Circle`` line


* Run the tests with ``unittest.main(argv=[''], verbosity=2, exit=False)``
* Ensure all tests pass



Kattis Problems
===============

* You should be using a scrap piece of paper to work out the ideas for the following problems

* The problems you are to solve are getting too complex to try to solve by just coding
* Trying to solve problems by just typing away will not yield success


#. https://open.kattis.com/problems/everywhere
#. https://open.kattis.com/problems/babelfish
#. https://open.kattis.com/problems/oddmanout
#. https://open.kattis.com/problems/securedoors
#. https://open.kattis.com/problems/modulo

0 comments on commit 94d63bd

Please sign in to comment.