Meetings
| Lecture and Lab meet on Monday, Wednesday, and Friday from 2:50pm-4:05pm in Social Sciences Room 229 (an ICC). |
|
Class attendence is required. You will work on problem solving (with and without computers) during class. Often, this classwork will need to be finished outside of class. When submitted, it will count as part of your classwork grade.
Staff
|
Professor Robert Duvall LSRC Room D228 660-6567 Office Hours: Monday 11:30am-1pm, Wednesday 4:30-6pm Drop-in policy: Feel free to come in whenever my office door is open. You may also contact me to make an appointment. |
|
Graduate Teaching Assistant Harold Lim LSRC Room D325 660-6586 Drop-in policy: Available outside of hours by appointment only. |
| Undergraduate Teaching Assistants The Link, lower level of Perkins Library
|
If you need to contact us via email, please put CompSci 6 at the start of your subject line. This will 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 24 hours, we probably did not receive it. In general, you should only email us about administrative aspects of the course; questions about course content are better made using the course Bulletin Board since it is seen by more people.
Textbooks
Textbooks are available in the Duke textbook store. If you choose to buy it online, please click on the book image below to buy from Amazon and contribute to undergraduate Computer Science Research at Duke.
|
Java Concepts by Cay Horstmann |
This course will be taught in a workshop format in an Interactive Computer Classroom (ICC), meaning that, in general, students will be expected to be active participants in group exercises involving the computers available during class time. This makes it vital that you prepare before coming to class, because graded work for the course will be done during almost every class meeting.
Topics
The following topics will be covered during the semester.
- Programming Concepts
- Primitive data types: int, double, boolean
- Conditionals, Loops
- Testing and Debugging
- Object-Oriented Programming
- Instance variables, Constructors, Methods
- Inheritance
- Algorithms
- Text Processing, Reading data from a file
- Comparing data, Sorting, Searching
- Recursion
- Collections
- Lists, Sets, Maps, Matrices
The exact order and details of these topics will be given on the course Calendar, which is subject to change during the semester based on the pace needed.
Grading
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; 80% or more guarantees a grade in the B range, 70% or more guarantees a grade in the C range, 60% or more guarantees a grade in the D range. This scale may slide down, but it will not go up.
There will be several types of assignments during the term, each contributing to your final grade by approximately the following percentages:
programming projects 25% in-class work 20% in-class quizzes 10% in-class exams 25% final exam 20%
The percentages given below assume each of the projects above is assigned. If, during the semester, a project is not assigned, they may be updated to reflect their relative weight in the course. In short, these percentages are given as guidelines -- not fixed weights. Additionally, points on assignments within individual categories will vary. Harder assignments will be worth more points, and most assignments will get harder as the semester progresses (harder means takes more time, requires more thought).
The programming projects will be open-ended, providing a lot of room for you to express some creativity and go beyond the basic specification. For each assignment, you will be expected to complete all of the assignment's basic functionality as well as use good style so your program "looks" nice. To earn an A grade on these projects, you must do more than merely meet the requirements, you must go beyond them. In order to earn an A+ you must do several of the optional assignments and exceed expectations in general. Note, any extra credit features that you add will not be counted unless you get the basics working first.
Turning in Assignments Late
All projects must be submitted electronically according to the directions given here by the end of the day given as the due date (i.e., 11:59:59pm).
Assignments turned in on time receive no penalty. Assignments turned in up to two days late incur a 10% penalty, more than two days late incurs a 25% penalty. A weekend represents one-day for the purposes of measuring lateness. Due to the pace of the course, assignments will not be accepted after one week has passed from the due date. If this happens to you, you should 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 the professor as far before the due date as possible. Do not give up, ask for help.
Individual 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. Extensions will not be granted after an assignment is due, you must request an extension well before an assignment is due.
Collaboration Policy
In accordance with the Duke Community Standard, we encourage proper collaboration, in which all parties equally participate, on programming projects and classwork. Quizzes and Exams taken online or in-class must be your own work; you should not collaborate on them at all. Studying together is always encouraged, especially when preparing for quizzes or 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 and classwork 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 and 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) in the README file you submit with the assignment. You should also cite any resources other than class materials you use (e.g. webpages, 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!
Exams
Two in-class exams will be held during the course's meeting time and in the course's meeting room and will be closed-book. This is 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 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.
- Exam 1: Wednesday, September 24, 2008
- Exam 2: Wednesday, November 5, 2008
The final exam will be open book and open notes.
- Final Exam: Friday, December 12, 2-5pm
These exam dates are given at the beginning of the semester to avoid any scheduling conflicts. Exams and quizzes can only be made up if:
- you let the professor know before the date of the exam or quiz why it will be missed,
- the professor agrees that the conflict cannot be avoided, and
- you arrange to make up the exam either before the exam date or as soon as possible afterwards.
Computing Requirements
All computing projects will use Java 5 or above, the Eclipse programming environment, and the Duke Ambient plug-in for downloading and submitting projects. More information about installing this software is available here.
Classwork activities will be done during almost every class period. Computers will be available during class for your work; however, feel free to bring your own laptop to class each day if you want.
You will be able to work in the classroom any time there is not another activity scheduled there. Additionally, you will be able to work on any OIT Windows machine on campus. To facilitate working in your dorm room, any software discussed in class is available for download here.
Additional Information Online
Web Page
Many of the materials for this course, including the syllabus, class
notes, reading assignments, homeworks, and other resources, will be
available through the course web page at http://www.cs.duke.edu/courses/cps006/fall08
Bulletin Board
You should regularly read and contribute to the course bulletin
board as it is a useful place for posting questions that are likely to
be of interest to the rest of the class. You are encouraged to post
responses to questions as well as ask them. The bulletin board will
be monitored regularly and responses posted to questions that have not
previously been answered. Before posting a question, please make sure
that you have read all previous messages and that your question has
not yet been discussed.
Finally, please check your email regularly, as important course announcements may be sent via email.