Skip to content

Latest commit

 

History

History
244 lines (163 loc) · 21.2 KB

README.md

File metadata and controls

244 lines (163 loc) · 21.2 KB

Discrete Structures (CMPSC 102) Course Syllabus

Semester: Spring 2024

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 203

Email: obonhamcarter@allegheny.edu

Office Hours

Meeting Times

  • Alden Hall, 101 Lecture

  • M/W/F 10:00 AM - 10:50 AM

  • 16 Jan 2024 - 7 May 2024

  • Alden Hall, 101 Lab

  • M 2:30 PM - 4:20 PM

  • 16 Jan 2024 - 7 May 2024

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.

Course Deliverable

  • Due: 6th May, 9:00am

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

  • Quantitative Reasoning (QR). Quantitative Reasoning is the ability to understand, investigate, communicate, and contextualize numerical, symbolic, and graphical information towards the exploration of natural, physical, behavioral, or social phenomena. Learning Outcome: Students who successfully complete this requirement will demonstrate an understanding of how to interpret numeric data and/or their graphical or symbolic representations.

  • Scientific Process & Knowledge (SP). Courses involving Scientific Process & Knowledge aim to convey an understanding of what is known or can be known about the natural world; apply scientific reasoning towards the analysis and synthesis of scientific information; and create scientifically literate citizens who can engage productively in problem solving. Learning Outcome: Students who successfully complete this requirement will demonstrate an understanding of the nature, approaches, and domain of scientific inquiry.

Learning Outcomes

  • Justify the decision to select a suitable discrete structure for use when solving a problem with a computer program.
  • Connect mathematical definitions, notations, and concepts of discrete structures to their computational representation by writing correct and efficient Python programs.
  • Use the computational constructs of the Python programming language to perform mathematical operations.
  • Correctly describe the properties of a given discrete structure and verify those properties through computational testing and/or mathematical proofs.
  • Implement, test, and evaluate a Python function that performs data analysis using one or more sets of textual, numerical, categorical, binary, or combined data.

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

Use your Gradebook Repository to receive updates from the instructor. The repository is only for receiving reports -- you will never have to post to this repository.

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

Categories

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 and Activities 20% check mark grade
Labs 40% letter grade
Midterm Exam 20% letter grade
Final Project 20% letter grade
Total 100%

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.

  • Activities: These assignments invite students to explore different techniques for rigorously designing, implementing, programming, 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. Knowledge gained from the class and the textbook will be integral to the completion of these projects. Unless other information is given about a due date, activities are to be completed by the end of class.

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

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 (5) unexcused 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.

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.

Submission Commands

git add -A
git commit -m "commit message"
git push

Please do not forget to use the above git commands to push your work to the cloud for the instructor to grade your assignment. You can go to your GitHub repository using your browser to verify that your files have been submitted. Please see the TL’s or the instructor if you have any questions about assignment submission.

Late Submissions

All assignments will have a stated due date and a late deadline (the latest date that an assignment will be accepted -- up to a week after the deadline). The electronic version of the class assignments are to be turned in at the beginning of the lab session on the 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. After that time, the lab will not be accepted.

Please note, lab solutions will be discussed after the one week late submission deadline. Therefore, any submission of the assignments following that deadline will not be possible.

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.

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.

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.

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 can be found at the following resource.

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.

Some of the resources on campus are listed below.

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 102

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 as we cover them, along with their associated activities.

For Monday, Wednesday, Friday Meetings, we will be following the below calendar.

Week # Dates Topic
1 Wed, 17 Jan Welcome, Survey
1 Fri, 19 Jan Syllabus, Activity01 due at end of class
2 22 Jan - 26 The Math in Programming, simple coding, Lab01, Activity02 due at end of class
3 29 Jan - 2 Feb Iteration and programming constructs, Lab02, Approximation, Activity03 due at end of class
4 5 - 9 Feb Setting up and utilizing virtual programming environments: Python Venv and Poetry Lab03, High order functions, Activity04 due at the end of class
5 12 - 16 Feb Data Containers, Iterative Exponentiation,Lab04, Activity05
6 19 - 23 Feb The fascinating world of monoids! Lab05 Activity06
7 26 - 1 Mar Sets and applications. Yey! Lab06, Sets and lists applied to the Collatz Conjecture. Activity07
8 SPRING-BREAK
9 11 - 15 Mar Set operations with probabilities, Activity08
10 18 - 22 Mar MidTerm Due 18th March 2024 at 5:30pm, Basic visualizing with the Matplotlib plotting library, Activity09
11 25 - 29 Mar Statistical explorations, Lab07, Statistical Idea Presentations (Activity 10)
12 1 - 5 Apr Describing data with fundamental statistics: Quantiles and Correlation, Lab08 Group Assignment Note: One person in your group is to make the group's name and then the other person is to join the group by the created name. Statistical Applications: Basic Machine learning Tutorials Note: Please save your notes from your work to assist you on Friday's activity. Activity10, due at 11 on 5th April.
13 8 - 12 Apr Do not click on the following link until you have found two other group members! Group Final Project, Due on 9:00 am on Monday, May 6th, 2024 (Firm deadline: No extensions are possible), Activity 11
14 15 - 19 Apr Project work week, no lab.
15 22 - 26 Apr Activity 12, Course Learning Objectives Survey Activity 13, Course Wrap-up
16 Monday, 29 April Presentations for the Final Project