- Introduction
- Course Description
- Course Textbooks
- Instructor Correspondence
- Course Schedules
- Learning Objectives
- Assignment Types
- Assessment Strategy
- Course Assignments
- Review Sheets for Examinations
- Team Assignment
- Course Resources
This repository contains all of the course planning documents for Computer Science 102 Fall 2020, Discrete Structures. This course introduces the mathematical foundations of Computer Science, ensuring that students can effectively create and manipulate discrete objects in a Python programming environment. More details about the course are available in the course syllabus. A collection of slides for each week of the course is also available in the course slides repository.
An introduction to the foundations of computer science with an emphasis on understanding the abstract structures used to represent discrete objects. Participating in hands-on activities that often require teamwork, students learn the computational methods and logical principles that they need to create and manipulate discrete objects in a programming environment. Students also learn how to write, organize, and document a program’s source code so that it is easily accessible to intended users of varied backgrounds. During a weekly laboratory session students use state-of-the-art technology to complete projects, reporting on their results through both written documents and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.
- Programming and Mathematical Thinking: A Gentle Introduction to Discrete Math Featuring Python by Allan M. Stavely, Available on Amazon
- Doing Math with Python: Use Programming to Explore Algebra, Statistics, Calculus, and More! By Amit Saha, Available on Amazon
- Email on 08-12-2020: Introduction
- Email on 08-27-2020: Laptop Survey
- Email on 08-31-2020: First Class Meeting
Please note that the course instructor will primarily use the course's Slack workspace for communication with students.
- Laboratory Assignment One: Mastering the Software Tools Used in Discrete Structures
- Laboratory Assignment Two: Implementing and Testing a Python Program for Quadratic Root Finding
- Laboratory Assignment Three: Implementing and Debugging an Iterative Python Program for Exponentiation
- Laboratory Assignment Four: Implementing and Testing a Python Program for Data Input and Summarization
- Laboratory Assignment Five: Using Iteration and Functions to Summarize Real-World Population Data
- Laboratory Assignment Six: Conducting an Experiment to Study the Efficiency of Python Containers
- Laboratory Assignment Seven: Experimentally Evaluating the Performance of List Uniquification in Python
- Laboratory Assignment Eight: Using the Set Discrete Structure to Check for a Unique Word in a File
- Laboratory Assignment Nine: Experimentally Comparing Different Approaches to Computing a Number in the Fibonacci Sequence
- Practical Assignment One: Translating a Temperature Conversion Equation to a Python Function
- Practical Assignment Two: Implementing a Python Program for Iteratively Searching a Contact Database
- Practical Assignment Three: Using Iteration to Construct a List of Ordered Pairs Containing Factorial Numbers
- Practical Assignment Four: Performing Mathematical Computations with Higher-Order Functions
- Practical Assignment Five: Using Iteration to Compute the Numbers in the Fibonacci Sequence
- Practical Assignment Six: Iteratively Computing and Visualizing the Numbers in the Collatz Sequence
- Practical Assignment Seven: Implementing a Python Program to Compute the Cartesian Product of Sets
- Practical Assignment Eight: Using a Dictionary to Perform Fast Lookups in Real-World Population Data
- Practical Assignment Nine: Using Lists and Dictionaries to Create an Object-Oriented Scheduling Program
- Technical Challenge One: Using Typer to Implement a Command-Line Interface
- Technical Challenge Two: Using Ordered Pairs to Support Exponentiation with a Number Sequence
- Technical Challenge Three: Implementing a Python Program that Counts Lines in Input Files
As part of an interactive technical challenge assignment, students will demonstrate that they can use a terminal window to complete the following steps: (i) use Docker Desktop Community Edition to enter into an interactive Docker container, (ii) use Poetry to install the dependencies for a Python program, (iii) run a Python program in a virtual environment created by Poetry, and (iv) explain how the Python program's source code will cause it to create the output evident in the terminal window.
Please note that you must click the instructor-provided link in Slack to start each of the laboratory, practical, and technical challenge assignments.