browser icon
You are using an insecure version of your web browser. Please update your browser!
Using an outdated browser makes your computer unsafe. For a safer, faster, more enjoyable user experience, please update your browser today or try a newer browser.



Welcome to CompSci101. This class is an introduction to computer science and is designed for those with no prior experience. This class is for you if you:

  1. Aspire to major in computer science but lack the prerequisite for CompSci201,
  2. Seek a foundational understanding of computing, or
  3. Desire to navigate our digital world with greater insight.

Learning Goals

Our aspirations for you by semester’s end:

  1. Problem Decomposition: Dissect problems into manageable smaller units, code solutions for these units, and integrate these solutions to address the overarching goal.
  2. Python Proficiency: Develop your own Python program, be it a game, data analysis tool, or a creative venture. This encompasses familiarizing yourself with fundamental programming constructs, idioms, basic data structures, and introductory testing methods.
  3. Library Literacy: Dive into Python library documentation outside our course curriculum and understand them enough to use some of their functionality.

It’s important to recognize that descriptors like “fundamental,” “basic,” and “some” emphasize this course’s introductory nature. While we lay the foundation, mastery demands extended practice and broader knowledge than a single semester affords. Our aspiration is that you leave this course with the enthusiasm and preparation to learn more outside of this course, whether it is in more computer science classes or on your own.

In service of our goals, we have the following learning objectives:

  • Know how to use the main programming constructs in Python
  • Choosing which data structure we learn in the class is appropriate for a situation
  • Apply the programming idioms you will learn in this class
  • Apply methodical debugging techniques
  • Read documentation and understand how to use a function

Course Activities

We have many different kinds of course activities to support learning the material for this class. They include reading quizzes, classwork in lecture, lab, APT problems, programming assignments, and exams.

Reading Quizzes

Reading quizzes not only measure your comprehension of the material, but also reinforce key concepts, ensuring a solid foundation for deeper exploration during lectures.

  • Textbook Access: For details on accessing the online textbook, please refer to the main page of the website.
  • Quiz Details: Quizzes will be assigned weekly based on course readings. Quizzes are due before lectures as they help in lecture preparedness and gauge your comprehension.
  • Grading: Achieve 75% of the total points to receive full credit for reading quizzes. For instance, if you earn 60 out of 100 points, your quiz score will be 80%.
  • Absences: While you are allowed to miss a few quizzes due to Short-Term Incapacitations or absences and still get full credit, we will not allow you to make up nor receive extensions on these quizzes. This is because the 75% point policy was designed with these absences in mind. Be sure to have all excused absences properly documented via a Short-Term Incapacitation (or other acceptable form) in the event that you may need more points dropped than we traditionally allow. 


Active learning is employed in classwork because it fosters deeper understanding of the material, promotes engagement, and facilitates the practical application of course concepts.

  • Active Learning: In a typical class we will break up lecturing with interactive activities that are done in pairs or small groups. 
  • Participation: Participation in these activities, often done through a web browser, will form a significant part of your classwork grade.
  • Grading: Engage and submit at least 75% of the available question sets to receive full credit. Correctness does not matter unless, otherwise stated in lecture. The questions are meant to help you understand how much you are grasping the material and to help me know the class’s level of understanding so I can steer the class accordingly. Therefore, please take them seriously.
  • Absences: While you are allowed to miss a few classworks due to Short-Term Incapacitations or absences and still get full credit, we will not allow you to make up nor receive extensions on these classworks. This is because the 75% point policy was designed with these absences in mind. Be sure to have all excused absences properly documented via a Short-Term Incapacitation (or other acceptable form) in the event that you may need more points dropped than we traditionally allow. 


It is important to do each lab as they provide practice for the concepts you will be learning.


Labs will encompass:

  • Warm-up problems and readings (to be completed prior to lab).
  • Individual and group tasks during the lab session.


  • Required and recorded at the start of each lab. Make sure your presence is recorded by your Lab TA.
  • Missed Labs: In case of absence, still complete the lab for partial credit. We will drop your three worst lab grades.


Labs must be submitted by 11:59 pm on the Sunday following the lab. Each lab carries a total of 5 points, distributed as:

  • Warm-up: 1 point
    • If there is no warm-up, then this point will be awarded for completing the lab
  • Attendance: 2 points
  • Lab Completion: 2 points
    • The emphasis is on engagement rather than correctness, unless specified otherwise. The labs provide critical practice on course concepts, so please take them seriously.
    • Warm-up activities are due before your Friday lab section of the week they are released.
  • Absences: While you are allowed to miss a few labs due to Short-Term Incapacitations or absences and still get full credit, we will not allow you to make up nor receive extensions on these labs. This is because the policy to drop some labs was designed with these absences in mind. Be sure to have all excused absences properly documented via a Short-Term Incapacitation (or other acceptable form) in the event that you may need more points dropped than we traditionally allow. 

APT Problems (Algorithmic Problem-Solving Testing)

Completing APTs ensures you understand the topics we are discussing in class. These APTs provide bite-sized practice on specific course concepts. 


  • Due by 11:59 pm on the specified due date.
  • A 24-hour grace period is allowed, extending the deadline to 11:59 pm on the following day.
  • Late APTs are not accepted.


  • Each APT is worth 10 points.
    • Your score corresponds to the fraction of successful tests. E.g., passing 19 out of 20 tests gives you 9 points.
  • We grade your highest submission for each APT
  • If your source code simply checks the input with a sequence of if statements, it will receive no credit.


You can submit your solution to the autograder an unlimited number of times and receive instant graded feedback.


If you are having trouble, be sure to see a TA or the instructor as far before the due date as possible. Do not give up. PLEASE ask for help.

Programming Assignments

Programming assignments give you the opportunity to combine multiple course concepts to create a large program. Assignments typically take more time and require more thought and analysis as the semester progresses. As a result, we offer a more lenient late submission policy for these assignments. 


  • Due by 11:59 pm on the specified due date.
  • Grace Period: Additional 24 hours without penalty.
  • Late Submissions:
    • Up to 72 hours post-deadline: 10% penalty.
    • Between 72 hours and one week post-deadline: 30% penalty.
    • No submissions are accepted after that.


  • A detailed rubric is provided for you at the end of each assignment.
  • We utilize Gradescope for automatic testing of your assignments


You can submit your solution to the autograder an unlimited number of times and receive instant graded feedback. Any hand graded portions of the rubric will not be applied until after the assignment is due.


If you are having trouble, be sure to see a TA or the instructor as far before the due date as possible. Do not give up. PLEASE ask for help.


In order to maintain the integrity of assessments, all exams will require you to write code on paper and in person. While we recognize this method may not be ideal, we’ve implemented the following policies to help manage exam-related stress:

  • Midterms: Conducted during lecture hours in the usual classroom. In case of an excused absence, you’ll need to make up the exam within three class days.
  • Final Exam: Details including the date and timings are available on the course website.
  • Helper Sheets: Allowed to bring one page (front and back) of notes or printout for reference during midterms and two pages (front and back) for the final.
  • Discussion: Do not discuss exam content with anyone other than the course instructor until an official announcement is made. Prematurely discussing the exam will result in academic misconduct. 

Exam Drop Policy

  • Drop or Adjust: At the end of the semester, we will evaluate your exam scores. We will drop the lowest score of your midterms OR halve the weight of the final exam (making it 18% instead of 36%), depending on which option benefits your overall grade the most.

This policy is designed to alleviate some of the pressure and to account for any unexpected challenges you might face during the semester. It ensures that one low score does not unduly affect your final grade, while still maintaining the integrity of the assessment process.

How to Get Help

There are many different places you can receive help in this class. The TAs and I have structured this class with the goal that when you find you need help, it is not too far away while also respecting the time of everyone involved.


  • Please ask questions during lectures; often others share your confusion.
  • Sometimes, I might defer questions due to time constraints. They will be addressed post-lecture or on ED if beneficial for a broader audience.

ED Discussion

  • ED supports student-to-student help. Enhance your grasp by assisting your peers; truly understanding a topic means you can explain it well.
  • To maximize ED’s utility:
    • Always be respectful and patient.
    • Search before posting to avoid duplications.
    • Avoid merely posting code screenshots. Instead, adhere to our guidelines (below) on code-related questions.
  • Anonymous posting is enabled for peer privacy, but instructors will see your identity to ensure constructive interactions.

Guidelines for Code-related Posts:

  • First, attempt debugging independently.
  • Browse ED for similar questions.
  • Publicly ask non-code-specific questions for collective benefit.
  • If code sharing is essential, make a private post and include your code – not screenshots.
  • Avoid using phrases like, “it’s not working, what’s wrong with my code?” 
    • Specify the error, describe your tests, and explain any attempted solutions.
  • Always maintain respect and patience.

Consultation (Office) Hours

  • TAs and the instructor are accessible for in-person and online consultations during standard hours; check the class webpage for schedules and locations. Drop-ins are welcome, and discussions aren’t limited to course content.
  • In order to manage the high demand of UTA consultation hours, you must use Beta My Digital Hand to get in line to see a UTA. This aids in managing the hours and gathering data to refine the process. There will be an ED post with more details on how to add the class to Beta My Digital Hand.

Requesting an Extension

  • Availability: Extensions are granted exclusively for APTs and Programming Assignments. For other activities, we automatically drop some points as per our policy. If you have properly documented excused absences on reading quizzes, classworks, or labs that exceed the auto-dropped points by the end of the semester, we’ll provide a form you can fill out to account for those and we will drop additional points. Please understand this doesn’t cover unexcused or undocumented absences.
  • Free Extensions: Each student has four free 2-day extensions for APTs or programming assignments, excluding the final week. Use the extension form to apply these. We recommend you save them for the second half of the semester if possible.
  • Duration: Each extension grants you two days beyond the grace day. E.g., if an activity is due on the 17th of this month, with a grace day on the 18th, then the new deadline is the 20th.
  • Special Circumstances: If you have special circumstances, you do not need to use up one of your free extensions. Special circumstances may include:

    In these cases, fill out our extension request form available in the forms tab on the course website.

  • Note:
    • Extension requests submitted after the grace period will be rejected.
    • This is a tough course to catch up in if you get behind. We have several items due every week. You want to make every effort to catch up quickly if you start to get behind.
    • If you need more free extensions, you must setup a meeting with the Teaching Associate, Violette Walker.

Additional Academic Support

If you feel the need for further assistance beyond what our course staff can offer, consider exploring resources at the Academic Resource Center (ARC):

  • Some of the Services Offered:
    • Personalized Learning Consultations
    • Peer Tutoring & Study Groups tailored for this course
    • ADHD/LD Coaching
    • Outreach Workshops and more
  • Personalized Approach: ARC recognizes that learning is unique to every student. Their dedicated team works alongside students to craft individual academic strategies, ensuring success at Duke.
  • Who Can Benefit: Whether you’re in your first year or your last, regardless of your major, the ARC has resources to aid your academic journey.

Booking: To schedule an appointment or to learn more, reach out to the ARC.

Contacting the Instructional Staff

While we want you to feel free to email us, the size of this class means that emails might be overlooked unintentionally. Before emailing, consider other communication methods outlined below:

  • If your question is general or could benefit others, please use ED Discussion instead of email. This ensures timely responses and aids collective learning.
  • If there is a class form on the course website that addresses your specific concern (e.g. extension request or excused absence), then please fill out the respective form and a member of the instructional staff will get back to you.
  • Direct emails to the instructor should be reserved for individual concerns like specific personal circumstances that go beyond standard extension requests.
    • Generic questions or those suitable for other staff will be redirected to ED.


Grades are determined using a set scale that may be adjusted downward but will never be raised. There is no curve. The breakdown is as follows:

  • A range: 90% and above.
  • B range: 80% and above.
  • C range: 70% and above.
  • D range: 60% and above.

An A+ is reserved for exceptional performance beyond just excellent work, as a result, receiving an A+ is rare. Specific +/- grade distinctions will be determined after the final exam.

Below is how much each of the class activities will count towards your grade.

Reading Quizzes3%
Programming Assignments15%
Two midterms (18% each) and Final (36%) 54%

Note: We drop some points from certain reading quizzes, classworks, and labs. For detailed information on this, consult the respective sections of the syllabus. Additionally, for an understanding of how exams are adjusted in weight, refer to the exam drop policy located in the exam section of the syllabus.

Course Policies

Collaboration Policy

In line with the Duke Community Standard, all work for Compsci 101 should reflect your commitment to academic integrity. Familiarize yourself with the standard in detail.

  • Individual Work: All exams, including midterms and the final should be completed independently. Any collaboration on these is a breach of the community standard.
  • Group Work: Collaboration is permitted on all other class tasks not mentioned above. This encompasses discussions with peers and using online resources. While group discussions enhance learning, directly copying someone’s program doesn’t. Aim for understanding, not mere replication.

When assisting peers, prioritize discussions over directly sharing code. While giving your code outright doesn’t violate Duke’s community standard for Compsci 101, it diverges from the collaborative and collective learning spirit we aspire to instill. Copying someone else’s program is not a good way to learn the material and to succeed in doing well in Compsci 101.

Artificial Intelligence (AI) Usage Policy

In the era of digital advancements, we recognize the potential of AI as a tool to aid in the learning process. Students are permitted to utilize AI-based platforms and tools to assist in their understanding and research related to the course.

However, there are boundaries:

  • Guided Research: While AI can assist in processing vast amounts of data or suggesting topics for deeper exploration, it should be used to complement your learning, not replace it.
  • Avoid Direct Solutions: Refrain from using AI tools to directly retrieve answers or solve problems presented in the coursework. The objective is to develop your analytical and problem-solving skills. Directly obtaining solutions from AI bypasses this learning process and is akin to seeking answers from peers or online sources without effort.

Remember, the best learning happens when technology enhances the process rather than doing the work for you. Let’s ensure AI serves as a supplement to your education, not a shortcut.

Diversity and Inclusion

This course champions Duke’s Commitment to Diversity and Inclusion. Beyond the aspects mentioned therein, our goal is to craft an inclusive space, especially for students without prior computer science exposure, ensuring they perceive the class as a nurturing and affirmative learning realm.

Support for Disabilities

Duke University ardently promotes equal access for students with documented disabilities. Those in need can approach the Student Disability Access Office (SDAO) for a confidential discussion on procuring suitable accommodations for both classroom and clinical environments. We urge students to register with the SDAO at the outset of the program since accommodations are not applied retrospectively. For further information, explore or reach out to SDAO at 919-668-1267 or