- Assigned: At the start of a remote laboratory session every Monday
- Due: At the start of the remote laboratory session one week after it was assigned
Building on material in the textbooks and the content covered during the following weeks of the semester, laboratory assignments have the following goals:
-
Equip a learner to solve new problems in the field of discrete structures by applying — in a new way — their knowledge of the facts, techniques, and rules of discrete mathematics and Python programming.
-
Afford a learner the opportunity to compare and contrast implementations of discrete structures in Python, enabling them to find evidence to support both the generalization and specialization of a structure.
-
Enable a learner to develop the skills needed conduct experiments and use experimental results to present and defend judgements about the efficiency, effectiveness, and correctness of discrete structures implemented in Python.
Using the Python functions in a textbook as a starting point, laboratory assignments invite you to complete tasks like the following:
-
Use a text editor and a terminal window to design, implement, test, and use a new Python function, recording its output when provided with different inputs and explaining why you decided to implement it in the chosen fashion.
-
After using a text editor and a terminal window to refactor the implementation of a Python function to ensure that it strikes the right balance between understandability, generalizability, and specialization, justify and reflectively examine your decisions in technical writing.
-
Use a text editor and a terminal window to design, implement, test, and use an experimentation framework to run experiments that evaluate the Python function. Using the data collected from the experiments, evaluate the implementation of the Python function as you consider, for instance, its efficiency and correctness.
-
After using a text editor and a terminal window to design, implement, test, and use an integrated Python program that features user documentation, a test suite, and either a command-line or web-based interface, critique the quality of the program based on pre-defined criteria.