This repository contains information about Discrete Structures, including the course objectives, policies and the schedule. Please check this repository regularly for updates to the policies and the schedule.
- SCHEDULE
- Instructor
- Meeting Times
- Discord
- Course Calendar
classDocs/
- Deliverable
- Course Description
- Textbooks
- Course Policies
- Grading
- Assistance
- Schedule
Dr. Oliver Bonham-Carter (Note: said and written as Bonham-Carter, not Carter)
Office Location: Alden Hall 105
Email: [email protected]
Session | Day | Time | Location |
---|---|---|---|
Class | Monday | 1:30pm - 2:20pm | Alden 101 |
Class | Friday | 1:30pm - 2:20pm | Alden 101 |
Class | Wednesday | 1:30pm - 2:20pm | Alden 101 |
Lab | Tuesday | 2:30pm - 4:20pm | Alden 101 |
If you are already on the department's Discord server, then you will be given access to the course's Discord channel, called #discrete-structures
. If not, then you will need to join the department's Discord server before you can be added to the course's channel.
All materials given out in class will be accessible using the classDocs/
repository. Note: The HTTP link works in absence of SSH keys.
Main site on GitHub: ClassDocs/
- Due: 16th December 2022, 7:00pm
- Course code for final exam: F
Credits: 4
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.
Prerequisite: Knowledge of elementary algebra.
Distribution Requirements: QR, SP
-
Programming and Mathematical Thinking: A Gentle Introduction to Discrete Math Featuring Python by Allan M. Stavely
-
Doing Math with Python: Using Programming to Explore Algebra, Statistics, and More by Amit Saha
-
Suggested Reading: The below reading list is strongly recommended to improve students build technical writing skills and to gain a firm understanding in how to conduct responsible research in computer science.
-
BUGS in Writing: A Guide to Debugging Your Prose. Lyn Dupre.
-
Writing for Computer Science. Justin Zobel.
-
On Being a Scientist: A Guide to Responsible Conduct in Research (Third Edition)}. Committee on Science, Engineering, and Public Policy, National Academy of Sciences, National Academy of Engineering, and Institute of Medicine.
-
Along with reading the required books, you will be asked to study many additional articles from a wide variety of conference proceedings, journals, and the popular press.
The grade that a student receives in this class will be based on the following categories. All percentages are approximate and, if the need to do so presents itself, it is possible for the assigned percentages to change during the academic semester.
Category | Percentage | Assessment metric |
---|---|---|
Class Participation | 5% | check mark grade |
Midterm Exam | 10% | letter grade |
Final Project | 15% | letter grade |
Source Code surveys | 15% | check mark grade |
Programming Projects | 15% | check mark grade |
Engineering Efforts | 40% | letter grade |
Total | 100% |
Letter | Range | Letter | Range | Letter | Range |
---|---|---|---|---|---|
A | 96 - 100 | A- | 90 - 95.9 | ||
B+ | 87 - 89.9 | B | 83 - 86.9 | B- | 80 - 82.9 |
C+ | 77 - 79.9 | C | 73 - 76.9 | C- | 70 - 72.9 |
D+ | 67 - 69.9 | D | 63 - 66.9 | F | 59.9 and below |
-
Class Participation: All students are required to actively participate during all of the class sessions. Your participation will take forms such as answering questions about the required reading assignments, completing in-class exercises, asking constructive questions of the other members of the class, giving presentations, leading a discussion session in class.% and in the course's Slack channels.
-
Exams: The exams will cover all of the material in their associated module(s). The finalized date for each of the exams will be announced at least one week in advance of the scheduled date. Unless prior arrangements are made with the course instructor, all students will be expected to take these exams on the scheduled date and complete the exams in the stated period of time.
-
Final Project: This project will present you with an opportunity to design and implement a correct and carefully evaluated programming solution for a specific problem. Completion of the final project will require you to apply the knowledge, programming and technical skills that you have acquired during the course. The details for the final project will be given approximately a month before the project due date (during finals week).
-
Source Code Surveys: Graded on a checkmark basis and building on material in the textbook and the content covered during that day's in-person classroom session, technical challenges have the following goals: (i) help a learner to demonstrate that they can remember learned material by recalling facts, basic concepts, and answers to questions presented in the textbook and (ii) allow a learner to demonstrate an understanding of facts and ideas by translating, interpreting, and stating the main technical ideas presented in the textbook.
-
Programming Projects: Graded on a checkmark basis and building on material in the textbook, the content covered during that week's in-person classroom session, and the weekly technical challenges, the programming projects further 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 rigorous Python programming.
-
Engineering Efforts: These assignments invite students to explore different techniques for rigorously designing, implementing, evaluating, and documenting real-world Python programs. These assignments will invite students to use tools like a text editor, a terminal window, and a modern Python development environment to implement functions that strike the right balance between understandability, generalizability, and specialization. Students will also use the data collected from running experiments to evaluate the implementation of a Python function as they consider, for instance, its efficiency and correctness.
Your class instructor will be using GitHub Classroom to collect all assignments. It is expected that you are able to effectively use git
to submit your work. If you require help, please see your peers, the Technology Leaders, or your instructor.
All assignments will have a stated due date. The electronic version of the class assignments are to be turned in at the beginning of the lab session on that due date. Submissions after the beginning of class are counted as being late. Assignments will be accepted for up to one week past the assigned due date with a 15% penalty. All late assignments must be submitted at the beginning of the session that is scheduled one week after the due date. The honor code (see below) is assumed for all submitted work.
Unless special arrangements are made with the course instructor, no assignments will be accepted after the late deadline. If you are requesting extensions for a lab assignment, then you are to email me with your request and also provide a valid reason for your extension. This request must come before the due date of the lab and not on the due date.
Requests will not be granted where the reason appears to be insignificant. Extensions are 24 hours of extra time (after the original due date) and are given out at my discretion. The decision to provide you with an extension (or not) will be weighed in light of fairness to your peers who are still able to complete their labs, regardless of their own busy schedules.
It is mandatory for all students to attend the class and laboratory sessions. If you will not be able to attend a session, then please see/email the course instructor at least one week in advance to describe your situation. Students who miss more than five 4unexcused classes, laboratory sessions, or group project meetings will have their final grade in the course reduced by one letter grade. Students who miss more than ten of the aforementioned events will automatically fail the course.
Unless special arrangements are made with the course instructor, no assignments will be accepted after the late deadline. If you are requesting extensions for a lab assignment, then you are to email me with your request and also provide a valid reason for your extension. This request must come before the due date of the lab and not on the due date. Requests will not be granted where the reason appears to be insignificant. Extensions are 24 hours of extra time (after the original due date) and are given out at my discretion. The decision to provide you with an extension (or not) will be weighed in light of fairness to your peers who are still able to complete their labs, regardless of their own busy schedules.
The submission of homework comprises the Honor Code pledge of the student(s) completing the work. For any assignment completed in a group, students must also turn in a one-page reflection that describes each group member's contribution to the submitted deliverables.
If you should find yourself in difficult circumstances that significantly interfere with your ability to prepare for this class and to complete assignments, please inform me immediately so that we can work something out together! Do not wait until the last day of class to ask for exceptions to what is stated in this syllabus. In such a situation, you may also find it helpful to contact one of the available resources on campus:
- Maytum Center for Student Success
- Allegheny College Counseling Center
- The Winslow Health Center
- Student Life
Various digital channels will be used in this course for communication, including email, Discord, and the GitHub issue tracker. It is strongly advised for the student to install the Discord app on their computer and smart-phone to be sure to receive all communications from the instructor, as well as, the other members of the class.
Additionally, the course website will be used to store the syllabus, course schedule and information about the classDocs/
repository using the GitHub. Your grades will be communicated to you by a Gradebook GitHub repository.
The classrooms in the Department of Computer Science no longer provide machines for student use. You are to bring your own wifi-ready device to class to be able to follow along with course material. If the class is meeting online using Zoom, then please be sure that you machine is configured correctly to use these services to connect you to the class. As it is your responsibility to maintain your machine, please perform online research to determine how to configure your machine accordingly, or to install any necessary software to enable online meetings.
During the semester, you will be told which software to install on your machine to be prepared for class. Some of the prominent software that we may be using include;
- Git and GiHub: (a software development software system
- VSCode: (an editor)
- Docker: a software container system
- Installing Docker
- Basic tutorial from Docker
- Play with Docker
The Americans with Disabilities Act (ADA) is a federal anti-discrimination statute that provides comprehensive civil rights protection for persons with disabilities. Among other things, this legislation requires all students with disabilities be guaranteed a learning environment that provides for reasonable accommodation of their disabilities. Students with disabilities who believe they may need accommodations in this class are encouraged to contact Disability Services at 332-2898. Disability Services is part of the Learning Commons and is located in Pelletier Library. Please do this as soon as possible to ensure that approved accommodations are implemented in a timely fashion.
The Academic Honor Program that governs the entire academic program at Allegheny College is described in the Allegheny Course Catalogue. The Honor Program applies to all work that is submitted for academic credit or to meet non-credit requirements for graduation at Allegheny College. This includes all work assigned for this class (e.g., examinations, laboratory assignments, and the final project). All students who have enrolled in the College will work under the Honor Program. Each student who has matriculated at the College has acknowledged the following pledge:
I hereby recognize and pledge to fulfill my responsibilities, as defined in the Honor Code, and to maintain the integrity of both myself and the College community as a whole.
It is recognized that an important part of the learning process in any course, and particularly one in computer science, derives from thoughtful discussions with teachers and fellow students. Such dialogue is encouraged. However, it is necessary to distinguish carefully between the student who discusses the principles underlying a problem with others and the student who produces assignments that are identical to, or merely variations on, someone else's work. While it is acceptable for students in this class to discuss their programs, technical diagrams, proposals, paper reviews, presentations, and other items with their classmates or other individuals, deliverables that are nearly identical to the work of others will be taken as evidence of violating the Honor Code.
More information about the code may be found at the Maytum Center for Student Success
Types of computer hardware and software are everywhere! Conducting research in computer science is a challenging and rewarding activity that leads to the production of hardware, software, and scientific insights that have the potential to positively influence the lives of many people. As you learn more about research methods in computer science you will also enhance your ability to effectively write and speak about a wide range of topics in computer science. I ask that you bring your best effort and highest enthusiasm as you pursue research in computer science this semester.
Below is a tentative schedule of covered topics and associated activities. The schedule is subject to change with the addition of guest appearances.
Week # | Dates | Topic | Reading |
---|---|---|---|
1 | Aug. 29-Sep.2 | Introduction to the course | Read the syllabus |
1 | No lab | N/A | |
2 | 5 Sept - 9 Sept | Making Connections | Chap 1 and 2 in Stavely |
2 | 6 Sept | Lab: 01_File_search | Hand out |
3 | 12 Sept - 16 Sept | Programming Constructs, Activity: Survey01 | Chap 3 in Stavely, Chap 1 and Appendix B in Saha |
3 | 13 Sept | Lab: 02_Root_finder | Hand out |
4 | 19 Sept - 23 Sept | Python Functions, Activity: Survey02 ComputeTheAvg | Chap 4 in Stavely, Chap 3 in Saha |
4 | 20 Sept | Lab: 03_Iterative Exponentiation | Hand out |
5 | 26 Sept - 30 Sept | Building and Using Virtual Environments | slides |
5 | 27 Sept | Lab: 04_Working in Virtual Environments | Hand out |
6 | 3 Oct - 7 Oct | Data Containers: Sets, Tutples, Lists and Dictionaries, Activity: Survey03_csvReader | Chap 5; Stavely, Chap 2; Saha |
6 | 4 Oct | Lab: 05_data-summarization | Hand out |
7 | 10 Oct - 12 Oct | Fall Break; No Class | |
7 | No lab | N/A | |
7 | 14 Oct | Activity: Survey04_tuppleSwapping | |
8 | 17 Oct - 21 Oct | Monoids Activity: Survey 05 | Chap 6; Stavely, Chap 3; Saha |
8 | 18 Oct | Lab: 06_data-analysis-starter | Hand out |
9 | 24 Oct - 28 Oct | Test week: Details given in class slides. Activity: Survey 06, Video activity | |
9 | 25 Oct | Lab: see last lab assignment | Hand out |
10 | 31 Oct - 4 Nov | Generator functions | |
10 | 1 Nov | Lab: 08_ethics | Hand out |
11 | 7 Nov - 11 Nov | ||
11 | 8 Nov | Lab: | Hand out |
12 | 14 Nov - 17 Nov | ||
12 | 15 Nov | Lab: | Hand out |
13 | 21 Nov - 25 Nov | ||
13 | 22 Nov | Lab: | Hand out |
14 | 28 Nov - 2 Dec | ||
14 | 29 Nov | Lab: | Hand out |