Introduction to Computer Science
CompSci 101 : Spring 2014

Course Staff

Professor: Robert C. Duvall
  • rcd AT cs DOT duke DOT edu
  • 660-6567
  • LSRC room D228
  • Office Hours: Monday 11:30-12:30pm and Wednesday 5-6pm
    I am generally not available during weekends
  • Drop-in policy: Feel free to come in whenever my office door is open; you may also make an appointment via email.
Graduate TA: Hieu Bui
  • hbui AT cs DOT duke DOT edu
  • Office Hours: Monday 4-5pm in LSRC D301,
    Thursday 11-12pm in LSRC D309
  • Drop-in policy: Available outside of hours by appointment only.
Graduate TA: Yan Chen
  • hbui AT cs DOT duke DOT edu
  • Office Hours: Tuesday 5-6pm in LSRC D309,
    Friday 4-5pm in LSRC D301
  • Drop-in policy: Available outside of hours by appointment only.
Undergraduate TAs
  • Ariba Aboobakar
  • Emma Arata
  • Anna Benson
  • Christopher Bernt
  • William Broughton
  • Fuchsia Chen
  • Michael Chen
  • James Cho
  • Monica Choe
  • Jordan Cirocco
  • Prashanth Ciryam
  • Daniel Ding
  • Sharon Fang
  • Tahvi Frank
  • Elizabeth Hoerauf
  • Arjun Jain
  • Evan Kaplan
  • Joanna Kim
  • David Le
  • Sean Miller
  • Zanele Munyikwa
  • Elizabeth Onstwedder
  • Joy Patel
  • Kannah Raju
  • Arjan Saraon
  • Emily Shroads
  • Nick Strelke
  • Jie Wang
  • Ellen Yuan

Please only email us only about administrative aspects of the course or if you have a personal concern, the course discussion board is much better for general questions. When using email, put CompSci101 at the start of your subject line to help ensure that your email gets past our spam filters and is delivered correctly. If you send us an email and do not get a response within 48 hours, we probably did not receive it.

Meeting Times

The class meets MW from 10:05-11:20am in LSRC B101.

On most days a set of notes will guide or summarize the class session. When those notes cover multiple sessions they are linked to the day on which they are first covered. Each class session is also recorded (including the days you take exams :)

Labs

Lab Time Place Staffing
101-01L Wed 3:05-4:20pm Phy 130 Michael Chen, Elizabeth Hoerauf, Joy Patel
101-02L Wed 4:40-5:55pm SocSci 124 James Cho, Tahvi Frank, Jie Wang
101-03L Wed 3:05-4:20pm Allen 103 Monica Choe, Prashanth Ciryam, Sharon Fang
101-04L Wed 4:40-5:55pm SocSci 124 James Cho, Tahvi Frank, Jie Wang
101-05L Thu 1:25-2:40pm SocSci 228 Evan Kaplan, Emily Shroads, Ellen Yuan
101-06L Thu 3:05-4:20pm Allen 326 Fuchsia Chen, Monica Choe, David Le
101-07L Thu 1:25-2:40pm Gray 228 Anna Benson, Daniel Ding, Nick Strelke
101-08L Thu 3:05-4:20pm Allen 326 Fuchsia Chen, Monica Choe, David Le
101-09L Thu 4:40-5:55pm SocSci 228 William Broughton, Zanele Munyikwa, Elizabeth Onstwedder
101-10L Thu 4:40-5:55pm SocSci 228 William Broughton, Zanele Munyikwa, Elizabeth Onstwedder
101-11L Thu 1:25-2:40pm Gray 228 Anna Benson, Daniel Ding, Nick Strelke

Labs let you experiment with course topics in more detail than is possible in a large lecture setting. You are expected to attend the same lab section each week. If you need to go to a different section one week, please check in with the person running that section to make sure your attendance is recorded.

Books

Required: How to Think Like a Computer Scientist - Learning with Python: Interactive Edition 2.0
by Jeffrey Elkner, Allen B. Downey, and Chris Meyer

This book is free, online, and interactive!

Recommended: Core Python
by Wesley Chun Ranum

Some people still prefer to read text or just want a different perspective.

Time will be given at the beginning of lecture for you to ask questions about the reading, but the majority of the lecture will be an extension of the reading, not a summary. It is expected that you will be active participants during class time. This makes it vital that you prepare by reading before coming to class. In class questions will be given to gauge how well you are following the material.

Grading

APT Problems 15%

Participation

 

5%
10%

Programming Projects 30%
Exams
  • Midterm 1
  • Midterm 2
  • Final

 

8%
12%
20%

Grading is done on an absolute, but adjustable scale. This means that there is no curve. Anyone earning 90% or more of the total number of points available will receive a grade in the A range (A- to A+); 80% = B, 70% = C, 60% = D. This scale may go down, but it will not go up. There is no curve. If everyone in the class does poorly on a particular item (test or assignment), we will identify the problem and determine a remedy.

Grades will be posted on Sakai. All care will be taken to make sure that grades are accurately calculated and reported. However, mistakes happen. If you believe there is an error in your grade, we want to fix it. Use this Google form to report your concern.

APT Problems

Algorithmic Problems with Tests (APTs) give you a description of a problem and ask you to write code to solve it. You receive immediate feedback about whether or not you have solved a problem fully because the function(s) you write are tested on a variety of input values.

Learning programming and problem solving, like learning a musical instrument or a sport, requires practice, lots of practice — you cannot simply read about or memorize the concepts. Doing these problems each week will give you a good sense of how well you are keeping up with the course material. The problems are listed roughly in order of difficulty, thus expect the later problems in each set to be much more challenging that the first problems.

These problems will be assigned almost every week during the semester. Only problems turned in by the due date will be given credit for that week — no late APTs will be accepted. Completing past problems may not help your grade directly, but is an excellent way to study for the exams.

You are not graded on the quality of source code, but based on how many of the test cases your solution solves correctly.

Labs

Submit each week's lab worksheet, either individually or as part of a team of up to four, by the end of day on which you attend lab — lab work cannot be made up later.

One lab during the semester can be missed with no penalty and attendance will not be officially taken for the first lab (during Add/Drop period). If you cannot attend any lab section in a given week, you are expected to complete the material on your own and submit the lab worksheet by the end of day on Sunday of that week.

You will work in teams of up to four during lab and at least one person from each team must bring a laptop to lab each week. When working in a team, if you were not there or your team determines that you did not participate in the exercises, your name should not be included on the final submission. Your lab work will be graded on a 0, 1, 2, or 3 point scale and based on how complete the answers are on the form (absent, there in body only, clear effort, good and complete answers).

Programming Projects

Programming projects are large, open-ended problems, providing opportunities for you to express some creativity and go beyond the basic specification. Points on these projects will vary with harder assignments being worth more than previous assignments, and most assignments will get harder as the semester progresses (harder means takes more time, requires more thought).

All projects must be turned in by midnight on their due date.

Include a comment at the top of each code file you modify that includes your name and Duke NetID.

When you are done with your project, submit it electronically from within Eclipse or through this web form.

You may submit a project as many times as necessary, but only the files included in the last submission will be graded. So always submit all of your project's files — even if they have not changed since a previous submission. You may lose points on your project if your final submission is incomplete or late. The official time of submission for your project will be the time of your last submission.

Projects turned in on time receive no penalty. Each student is granted two extensions of three school days with no penalty during the semester. Project extensions will be determined automatically. Unused extensions are worth one point each at the end of the semester.

Projects can be submitted up to one week late for half credit. All projects must be received before the last day of class regardless of any extension.

Exams

Two closed-book in-class exams will be held in place of course lectures during the semester. They are closed book not because we expect you to memorize material for the midterm exams, but because we do not want you to spend precious time looking up answers when a test is only about an hour long. Instead, for the midterm exams, a handout will be given with material that does not need to be memorized. You may request specific material to appear on the handout.

The final exam is longer and so will be open book and open notes.

These exam dates are given at the beginning of the semester to avoid any scheduling conflicts. Exams can only be made up if:

Late Policy

In-class questions, labs, and APT problems are used to help ensure you keep up with the course material and so cannot be submitted late.

Programming projects are larger exercises that can be submitted up to one week late for half credit and you are given granted two extensions of three school days with no penalty during the semester.

Of course extensions will be granted only for medical reasons (see the Short-term Illness Notification policy) or other circumstances beyond your control that must be presented with an official Dean's excuse. In such cases, you are expected to make arrangements to make up the work as soon as you are able.

If you find yourself not submitting the recommended work each week, please talk to one of the course staff immediately. It is important that you do not get behind in this class, its pace is too fast to allow you fall behind. The secret to successfully surviving this course is to start early and work steadily; it is not possible to cram or skim in Computer Science classes. If you are having trouble, be sure to talk to someone as far before the due date as possible.

Don't give up, ask for help. Don't give up, ask for help. Don't give up, ask for help.

Collaboration Policy

In accordance with the Duke Community Standard, we encourage proper collaboration, in which all parties equally participate, on programming projects and labs. Exams taken online or in-class must be your own work; you should not collaborate on them at all. This means you do not talk to anyone or look up anything on the web unless you are given instructions otherwise. You can always use notes and the book for quizzes and exams. Studying together is always encouraged, especially when preparing for exams. At other times you may be assigned to work in a group, in which there will be only one submission for the entire group that represents your collective effort.

You are responsible for understanding all work you turn in. For any given assignment, an interview may be included as part of the graded work. During the interview, you may be asked to explain the problem solving process and individual lines of code not given as part of the assignment. Turning in code that you cannot explain is considered cheating.

You may consult with the course staff about any aspect of the course. On programming projects you may consult with other students only in a general way, e.g., about debugging, programming concepts, or questions about wording on the assignment. You cannot actively work with someone else unless the assignment specifically grants permission for you to do so. It is never acceptable to directly show one another your program code or write one program among a group and submit multiple copies. Finally, it is unacceptable to search for direct answers to problems on the Internet.

Consult means you can discuss programs in a general way before writing code or get help with debugging your program, but you must write your own code and do your own thinking about the problem. For each assignment you are expected to include a list of the people with whom you have consulted (including any other students and course staff) or that have talked to you in the README file you submit with the assignment. You should also cite any resources other than class materials you use (e.g. web pages, notes from other courses at other universities, etc.). This file is required and failure to provide it will result in rejection of the assignment as complete.

If you are not sure what the collaboration policy is for a given assignment, please ask!

Computing Requirements

This course requires you to use many different websites, each best suited to its task.

Software

All assignments will use Python 2.7.

Information about installing this software is available here.