Welcome to CS 65: Introduction to Computer Science! As the title suggests, this course is an introduction to the field of Computer Science (CS). Although most consider the terms “computer scientist” and “computer programmer” perfectly synonymous, the field is significantly broader than simply learning to write code. In reality, CS concerns the study of algorithms, which are step-by-step instructions to be executed by some actor, and of data structures, which are ways of representing information so that it can be efficiently processed by algorithms. Since algorithms and data structures are more general than just writing code, you may find that the skills you acquire in this course will apply in more situations than you expect.
By the end of this course, you will be able to:
- Understand the fundamentals of CS,
- Design, document, develop, test, and debug algorithms in the Python programming language,
- Recognize common data structures and how to use them to efficiently solve problems, and
- Solve computational problems by breaking them into manageable parts and synthesizing them into a coherent whole.
Check out the Schedule page for a detailed survey of the topics covered in the course.
There is no required textbook for the course. Assigned readings will be based on the free open-source textbook:
- Think Python (Second Edition)
Allen B. Downey, 2015.
Activities / Grading
Your grade in this course is determined by:
|Best Individual||5%||Best Group||5%|
The grading scale for the course is as follows.
NOTE: Grades will not be curved in this course; however, I reserve the right to change the above scale in your favor. This is to avoid punishing students for making an exam too long, etc.
Almost every Tuesday, there will be a 10-minute electronic quiz covering the key ideas from the previous week. These quizzes are designed to give you prompt feedback on your understanding of the material . If you (or the class as a whole) are missing a key concept, I want to revisit that concept as soon as possible. Studies also show that quizzes are an extremely effective learning device!
NOTE: Your lowest quiz grade will be dropped at the end of the term.
There is one 75-minute midterm exam scheduled for Tuesday, October 6, 2020. (See the Schedule for more details.)
There is also a cumulative 110-minute final exam during the final examinations week at the end of the term. The date and time of the exam will be announced later in the course.
NOTE: If you have a conflict with the midterm exam date, you must contact the instructor within the first two weeks of the course. If you have a conflict with the final exam date, you must contact the instructor within two weeks of the final exam announcement.
This course includes a substantial group project due on the last day of class. More details will be announced later in the semester, but please keep in mind the dates listed on the Assignments page.
Each group will also give a final demonstration of their project. These project demos will take place during the last day of class.
Most assignments will be group assignments, and you will be randomly assigned a pair programming partner. You are expected to complete the group assignment together with your partner and only submit one solution.
NOTE: For group assignments, you may NOT divide up the work and complete the parts independently. All code submitted must be authored by all members of your group. I expect you to work on group assignments together in a Zoom or Microsoft Teams call.
Your participation in the course is key to you fully grasping the material. Thus, your participation grade will be calculated based on the following factors:
- coming to class on time,
- coming to class prepared,
- asking questions when appropriate,
- making positive contributions to class discussion,
- staying on task during lab exercises, and
- working effectively with your lab partner(s).
Best Individual / Best Group
Your grade in this course is determined by a variety of elements. In particular, there are three individual assessments, namely, the weekly quizzes, the midterm exam, and the final exam. Similarly, there are three group assessments, namely, the labs, assignments, and project.
To reward you for doing exceptionally well in any one category, 5% of your final grade will be weighted according to your best average of the three individual assessment categories and 5% will be weighted according to your best average of the three group assessment categories.
Attendance is mandatory in this course. In-class activities will include completing the lab with your pair programming partner, so any absence not only negatively affects you but also your partner.
WARNING: Every unexcused absence will result in a -1% penalty to your final grade. If you are sick or must miss class for any reason, you must notify your instructor as soon as possible.
NOTE: Your first unexcused absence penalty will be waived.
To encourage you to actively participate in Drake activities and to support your peers, you will receive 0.25% extra credit to your final grade for each instructor-approved activity that you attend (up to a maximum of 2%).
If you have an upcoming recital or any activity you’d like to invite your peers to, consider announcing it to the class. Your instructor will approve or disapprove posts on a case-by-case basis.
NOTE: To claim extra credit for attending an activity, send an email to your instructor with “Extra Credit” in the title and a brief description of what happened at the event.
NOTE: You will only receive extra credit for attending approved activities of your peers or general activities. You will not receive activities for going to your own recitals, for example.
Deadlines in this course are firm, and late submissions will not be accepted. Please plan your week accordingly and start your assignments early!
NOTE: I do recognize that there are exceptional circumstances due to family emergencies, etc. I am willing to work with you through these situations and grant extensions if it is appropriate. Please reach out to me immediately if such a circumstance arises.
Accommodations for Students with Disabilities
Drake University is committed to providing equitable access to learning opportunities for all students. The Disability Services office (107 Old Main) collaborates with students who have disabilities to provide and/or arrange reasonable accommodations. If you have, or think you may have, a disability (e.g., mental health, attentional, learning, autism spectrum disorders, chronic health, traumatic brain injury and concussions, vision, hearing, mobility, or speech impairments), please contact
- Michelle Laughlin
Student Disability Services Coordinator (x1835)
to arrange a confidential discussion regarding equitable access and reasonable accommodations.
Drake University has high standards for academic integrity, and you are expected to read the Academic Dishonesty Policy from the College of Liberal Arts and Sciences.
Below is a particularly relevant excerpt from the statement:
Academic dishonesty is an all encompassing term involving any activity that seeks to gain credit for work one has not done or to deliberately damage or destroy the work of others. Academic dishonesty includes, but is not limited to, plagiarism, cheating, fabrication, and knowingly helping another to commit an act of academic dishonesty.
Below are some examples of how Drake’s policy applies to this course:
- When you explicitly work as part of a group or team, you need not identify the work of each individual in the group (unless I specify otherwise).
- You may discuss concepts (algorithms, ideas, approaches, etc.) described in the readings, lab exercises, or during class with anyone.
- All the work you submit (code, experimental data, journals, etc.) must be your own or that of your group. You must appropriately cite any code or documentation you copy or modify, including code provided by the instructor. Furthermore, each member of your group must understand and be able to individually explain all aspects of the work. If you cannot explain your solution, you are in violation of this policy.
- You must cite all non-syntax consultations (i.e., ideas about algorithms, help with debugging) from any source, including the readings, labs, provided code, and internal or external language references.
- You must acknowledge and attribute any conceptual contributions by individuals not in your group. That is, you must give specific attribution for any assistance you receive. (This includes the instructor, teaching assistants, and tutors.) The suggested acknowledgment format is: “[Person X] helped me to do [thing Y] by [explaining Z].”
- You are responsible for safeguarding your work from being copied by others.
You are encouraged to attend my regularly scheduled “Zoom hours” at the following times:
M/W: 2:30–3:30 PM CDT
Tu/Th: 11:30–12:30 PM CDT
Click here to join via Zoom
Drake University offers free tutoring services for introductory computer science students. If you are interested in scheduling an individual tutoring appointment, visit the Tutoring Services page on the Cowles Library website. To see what slots are available, scroll down to the Math Tutoring section to see what times are open. (Math and CS are combined into one tutoring schedule since it is one department.)
Academic Success Resources
Check out the Academic Success website. Josh Wallace, an Academic Success Specialist, is eager to help you develop learning strategies that work in the Drake University context. His goals are to heighten your awareness of your personal strengths and to offer different ways you can approach your academic work so you’re more efficient and effective.
The Academic Success site also includes a page for Skills for Success with excellent tips for management classwork. You may also find the following resources useful:
If you enjoy satire, there are also tips for how to fail a course.
Masks and Social Distancing
When we do meet in-person, we will all wear masks and maintain social distance to minimize the likelihood of the spread of the novel coronavirus. Doing so is not only a requirement in our class, but is also a campus-wide policy. I will ask those who choose not to wear a mask to leave the classroom and, following guidance from the Provost’s office, I will alert the dean of students’ office.
A significant part of your learning in this course will depend on your active and attentive engagement in class discussions and other collaborative learning opportunities. I encourage you to turn on your camera during online collaborative exchanges to help sustain a sense of community and co-presence as we learn together. However, doing so is not required; if you have reservations about doing so (or an inconsistent, slow internet connection, etc.) having your camera turned off is also completely acceptable.
If You Test Positive
If you test positive for COVID-19 or have been exposed and need to isolate yourself, please send an email to firstname.lastname@example.org from your Drake email account and include your full name and student ID along with information about your situation. College and schools’ deans’ offices will then contact your professors, who will work with you to provide fully virtual learning opportunities during your quarantine and/or recovery.
Self-Monitoring and Symptoms
Please carefully monitor your own health and wellbeing throughout the semester, including frequently taking your own temperature. If you experience COVID-19 symptoms or a fever, even if you do not test positive, please do not come to an in-person class meeting. Fill out your information using the following Drake self-monitoring form: https://drake.qualtrics.com/jfe/form/SV_eSbezU698csxbcp
Here’s a good resource for other questions/concerns regarding COVID: https://www.drake.edu/coronavirus/faq/academics/
On Assignment 4, a significant majority of the class proposed using Stuart Wray’s “driver/navigator” pair programming method for group work in this class. Many important guidelines for making group work effective in this context were also pointed out. This amendment to the syllabus combines the most common themes and suggestions from all of the proposals.
Whenever working in a group, you are expected to adhere to all of the following general guidelines. These all fall under the general rule of “treat others the way you want to be treated.”
- Respect. Mutual respect is the foundation of any successful collaboration. As a group member, you responsible for being respectful and kind to your partners. This includes respecting your partners’ ideas, being patient, and being considerate in your interactions with them.
- Communication. Most problems in group work are due to lack of communication. This responsibility includes:
- Listening. If your partner has a question or idea, it is your responsibility to listen (without interrupting), consider, and respond in a respectful manner.
- Speaking. When it is appropriate, ask questions, discuss errors, give advice, or clarify your ideas.
- Promptness. Whether your group decides to use email, texting, or Microsoft Teams for remote communication, it is your responsibility to check messages frequently and reply promptly.
- Meetings. Be flexible with your schedule and respectful of your partner’s schedule when setting times to meet. If you agreed on meeting at a specific time, show up on time. Ideally, you should come prepared to the meeting, having read the assignment beforehand. Contact your partner ahead of time if you must miss a meeting due to an emergency.
- Constructive criticism. Be open-minded and willing to accept correction. (You might learn an alternative approach to solving the problem you wouldn’t have originally thought of!). When giving correction, be respectful and carefully explain why a different approach should be considered. Calmly talk through any disagreements.
- Stay focused. When working on the project, be respectful of your partners’ time by being attentive and on task. Be prepared to give your best effort on the problems. Consider taking short breaks and/or seeking help if you are stuck.
Roles of the Driver/Navigator
In this class, we will adopt the Wray’s driver/navigator pair programming method. Therefore, when working in a group, you should only work on coding the assignment when you are on a video call with your partner. You should also discuss who will take each role before you get started.
You must frequently switch roles while working on the assignment. In class, I recommend switching roles after every exercise. When you are working on the assignment, you should decide with your partner how often to switch roles (e.g., every 30 m inutes). During the week, each group member should spend roughly equal time as the driver.
Switching roles means that the driver will need to transfer the current code to the navigator. If using Zoom, you can send files through the chat feature; if using Microsoft Teams, you cans imply drag and drop files into the chat to share a file.
The driver’s responsibility is to be actively typing up the solution to the problem being worked on. If working via Zoom, the driver should be sharing their screen with the navigator. The driver should share be actively explaining each step to the navigator as they go so that they can double check it. If you are the driver and get stuck, think out loud and try to articulate what is going wrong to the navigator. The driver is not more important than the navigator and should be consistently listening to the ideas of the navigator.
The navigator’s responsibility is to aid the driver by double checking code, researching ideas, reviewing documentation, and any other appropriate supporting actions. As the navigator, if you are not following what the driver is doing, speak up and ask a question.
PRO TIP: As Wray points out in his article, the driver/navigator method is working at its best if there is constant communication between the driver and the navigator. In fact, he mentions that if you are working side-by-side you should have greasy fingerprints all over your laptop screens from pointing, discussing, brainstorming, explaining, and tinkering through your solutions together. Over Zoom, you can make use of the annotate tool to write, highlight, and sketch out ideas to approach problems together.
Many of you pointed out that the appropriate consequences are tightly coupled to the circumstances. Therefore, no specific consequences will be listed here. Any violations of this policy should be privately reported to the instructor and will be dealt with on a case-by-case basis.