Skip to content

TitusSmith33/classDocs

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 

Repository files navigation

Discrete Structures (CMPSC 102) Course Syllabus

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.

Content

Instructor

Dr. Oliver Bonham-Carter (Note: said and written as Bonham-Carter, not Carter)

Office Location: Alden Hall 105

Email: [email protected]

Office Hours

Meeting Times

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

Discord

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.

Calendar

Class calendar

<iframe src="https://calendar.google.com/calendar/embed?src=c_uj562m6crmj7krb9e9rnngeu2c%40group.calendar.google.com&ctz=America%2FNew_York" style="border: 0" width="800" height="600" frameborder="0" scrolling="no"></iframe>

classDocs/

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/

Course Deliverable

  • Due: 16th December 2022, 7:00pm
  • Course code for final exam: F

Course Description

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

Textbooks

  • 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.

Policies

Grading

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%

Grading Scale

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

Definitions of Grading Categories

  • 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.

Assignment Submission

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.

Extensions

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.

Attendance

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.

Extensions

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.

A note on extenuating circumstances

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:

Communication

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.

Gradebook Repository

Bring your own computer to class

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;

Special Needs and Disability Services

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.

Honor Code

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

Welcome to Computer Science Research!

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.

Schedule

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

About

Course materials and archive

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 85.0%
  • Jupyter Notebook 15.0%